2012-07-20 3 views
2

건너 뛰기 단계 : 나는 첫 번째 페이지 (사용자)에 제출을 클릭하면 http://www.yiiframework.com/extension/wizard-behavior/이 문제는,이 간다YII - 마법사 동작 확장 - I에 유래에 누군가가 마법사 행동 확장자를 가진 어떤 경험을 가지고 희망

하는 모든 결제 페이지로 이동하여 회사 페이지 건너 뛰기 ... 도움?

나는 사용자, 회사 및 청구서 작성 페이지의 3 가지 단계로 정보를 수집합니다.

protected function _wizardCompany($event) { 
    echo 'called company'; 
    exit(); 
    $company=new Company; 
    if(isset($_POST['Company'])) { 
     $company->attributes=$_POST['Company']; 
     if($company->validate()) { 
      $event->sender->save($company->attributes); 
      $event->handled = true; 
     } 
    } 
    $this->render('new_company',array(
     'company'=>$company, 
     'event'=>$event, 
    )); 
} 
+0

_wizardUser ($ event) 메서드도 게시 할 수 있습니다. 해당 메서드는 다음 단계로 요금을 설정하는 코드가있을 수 있습니다. – SuVeRa

+0

User의 코드는 wizardCompany와 동일합니다. 단지'Company'를'User'로 바꾸고'$ company'를'$ user'로 바꾸십시오. – ews2001

답변

1

이되지 않습니다 여기

public function wizardProcessStep($event) { 
    $name = '_wizard'.ucfirst($event->step); 
    if (method_exists($this, $name)) { 
     call_user_func(array($this,$name), $event); 
    } else { 
     throw new CException(Yii::t('yii','{class} does not have a method named "{name}"', array('{class}'=>get_class($this), '{name}'=>$name))); 
    } 
} 

가 예로 우리 회사의 단계입니다 : 이것은 내 공정 단계 기능입니다

public function behaviors() { 
    return array(
    'wizard'=>array(
     'class'=>'ext.WizardBehavior.WizardBehavior', 
     'steps'=>array(
     'user','company','billing' 
    ) 
    ) 
    ) 
} 

: 여기 내 컨트롤러 내 행동 기능입니다 버그 인 것 같지만 디자인에 의한 것입니다. 기본적으로 WizardBehavior는 처리되지 않은 첫 번째 단계로 건너 뜁니다.

아마도 마법사를 테스트하고 "사용자"및 "회사"에 뭔가를 입력했을 것입니다. '결제'를 시작하면 '사용자'로 돌아갑니다 (URL 또는 링크를 통해). 무언가를 입력하고 다시 제출하면 처리되지 않은 첫 번째 단계이기 때문에 청구서로 건너 뜁니다. '회사'와 이전에 처리 된 모든 단계는 URL 및 링크를 통해 확인할 수 있습니다.

이 동작

public function behaviors() { 
    return array(
    'wizard'=>array(
     'autoAdvance' => false, 
    ) 
    ) 
} 

으로 false로 설정 될 수있다 또는 테스트하는 동안 마법사가 쉽게 리셋되도록 당신은 onFinish 이벤트를 구현합니다.

+0

거기 가서 ...'autoAdvance '=> false' 내 행동 함수에서 설정 ... 고마워, 그랬어! – ews2001