2013-05-09 2 views
0

Magento 1.7.0.2에서 응용 프로그램이 제품의 최종 가격을 확인할 때마다 트리거하는 이벤트 수신기를 만들었습니다 (최종 코드는 해당 이벤트에서 트리거되지 않지만 테스트 편의성, 나는 여기에서 노력하고있다).Magento 이벤트 수신기에서 nusoap 객체 생성 예외

이벤트가 잘 실행되고 이에 따라 가격이 변경되지만 non-wsdl 호출로 외부 웹 서비스를 만들 nusoap 개체를 만들려고 할 때 경고가 발생하고 클라이언트 개체가 만들어지지 않습니다.

코드는 다음과 같습니다

$endpoint = 'http://[ip]:155/[client_name]/[client_name].soap2'; 

    try { 
     $client = new nusoap_client($endpoint); 
    } catch (Exception $e) { 
     echo $e->getMessage(); 
    } 

그리고 제기 된 경고 : 심지어 올바른 웹 서비스를 호출 할 수 있었다 젠토 루트 디렉토리에 실행 된 경우

Warning: include(Nusoap/Client.php) 
[<a href="function.include">function.include</a>]: 
failed to open stream: No such file or directory in 
/var/www/clients/client3/magento/lib/Varien/Autoload.php on line 93 

동일한 코드가 잘 작동 응답을 파싱합니다.

Magento 루트 lib 디렉토리에 nusoap 라이브러리 (v. 0.9.5)가 포함되어 있으며 특별히 필요하지 않습니다.

답변

1

이미 나는 nusoap 라이브러리 (V. 0.9.5)를 젠토 루트 lib 디렉토리를 포함했다

문제를 확인했고 내가 특별히

때 그들을 필요하지 않은 nusoap_client 클래스를 사용하여 객체를 인스턴스화하려고하면 PHP가 클래스를 찾을 수 없습니다. 표준 동작에 따라 Magento 자동 로더 메서드를 호출하여 nusoap_client 클래스를 파일 경로 Nusoap/Client.php으로 변환 한 다음 해당 파일 include을 시도합니다. PHP는 경고를 제기 그래서 PHP는, 표준 include 행동에 따라,

app/code/local/Nusoap/Client.php 
app/code/community/Nusoap/Client.php 
app/code/core/Nusoap/Client.php 
lib/Nusoap/Client.php 
path/of/the/calling/script/Nusoap/Client.php 

당신은 이러한 위치 중 하나에 파일이없는에서 파일을 찾습니다. nusoap 오브젝트를 수동으로 요구하거나 위 경로 중 하나에 오브젝트에 대한 로더를 배치하거나 라이브러리 위치를 처리하는 사용자 정의 자동 로더를 추가하십시오.

+0

답장을 보내 주셔서 감사합니다. 클래스의 시작 부분에'require_once (BP. DS .'lib/nusoap/lib/nusoap.php ');를 추가하고 모든 것이 효과가있었습니다. – Muttley75