2012-12-20 9 views
1

Prestashop ordercontroller.php 파일을 덮어 쓰게되었습니다.Prestashop에서 리디렉션 중 오류가 발생했습니다.

내가 특정 오류가있는 경우 0 단계로 내가 돌아 가야 할 필요가 1 단계에서 생각하면 우리가.

에있는 단계의 수에 따라 특정 작업을 수행 거기에 switch 문이있다. 이제 0 단계로 리디렉션하면 오류가 발생합니다. 나는 아래와 같이 오류를 설정하고있다.

if(some condition) 
{ 
     $this->errors[] = 'There is an error'; 
     Tools::redirect('index.php?controller=order'); 
} 

제가 생각하기에 프리 스타 쇼는 리디렉션에서 새 요청을 생성하고 컨트롤러에 설정된 오류가 손실됩니다. 이제 step 및 switch 문을 변경하는 다른 옵션이 있지만 case 문이 이미 실행되고 있으므로이 단계를 전환하는 방법이 내게 불가능한 것처럼 보입니다.

예제 코드 : 이제 1 단계에서 함수 checkforerrors()

switch($step) 
    { 
     case 0: 
       //load the step 0 
       break; 

     case 1: 
       //load the step 1 
       checkforerrors(); 
       break; 

     case 2: 
       //load the step 2 
       break; 

     case 3: 
       //load the step 3 
       break; 
    } 

이 질문은 꽤 오래 비록 0

답변

1

단계로 이동하려면, 그것은 도움이 될 사람 :

PrestaShop에서 생성 된 리디렉션은 사용자의 브라우저가 완전히 새로운 요청으로 다른 URL을 요청하도록하는 302 (HTTP) 리디렉션입니다. 이것이 오래된 요청의 오류가 유실 된 이유입니다.

AFAIK (PHP switch 문) 단계를 전환 할 수는 없지만 코드를 단계 0에서 전용 메소드로 간단하게 이동할 수 있습니다. 따라서 1 단계에서 오류가 발생하면 0 단계의 관련 코드가 포함 된 메서드를 호출하기 만하면됩니다. 실제로 0 단계에있는 것처럼 발생합니다.

관련 문제