그래서 내 문제의 복잡성이 오는 버튼 조작을 단행. 배열과 위에서 언급 한 addElements()를 사용하면 도움이됩니다.
간단한 대답
내 문제에 대한 대답은 양식이 말하자면하지만 addElements를 사용하여 양식에 추가 할 수 있도록 렌더링되기 전에하는 "내장"후 조작 할 수있는 배열을 (했다).
긴 대답
전체 그림을 얻으려면, 당신은 다음 또는 이전 버튼을 누르면 때마다, 당신은 하위 폼의 배열을 통해 통과하는 상상. 이 경우 버튼 렌더링을 처리하는 함수가 필요합니다. 나는 세계 (부모 클래스 Form_MultiPage에서 재사용되지 않음)에서 가장 구현이 아니다하지만, 경우에 한 Statment를 사용하여 종료하지만, 일 :
을 내 mulipage 폼 클래스의 내 확장자에 내가
public function setSubmitControls()
{
$previous = new Zend_Form_Element_Submit('previous',array(
'label'=>'previous',
'required'=>false,
'ignore'=>false,
'order'=>9000
));
$cancel = new Zend_Form_Element_Submit('cancel',array(
'label'=>'Cancel',
'required'=>false,
'ignore'=>false,
'order'=>9003
));
$next = new Zend_Form_Element_Submit('next',array(
'label'=>'Next',
'required'=>false,
'ignore'=>false,
'order'=>9002
));
$finished = new Zend_Form_Element_submit('finish',array(
'label'=>'Finish',
'required'=>false,
'ignore'=>false,
'order'=>9004
));
$submitControls = array();
echo var_dump($this->getCurrentSubForm()->getName());
switch($this->getCurrentSubForm()->getName())
{
case 'billInfo':
$submitControls = array(
$next,
$cancel
);
break;
case 'payerInfo':
$submitControls = array(
$previous,
$next,
$cancel
);
break;
//So on for other subforms
}
$this->setSubmitButtonGroup($submitControls);
}
이 내 부모 클래스에서
, Form_Multipage, 나는
public function setSubmitButtonGroup(array $elements)
{
$this->_submitButton = $elements;
}
그리고
public function addSubmitButtonGroupToSubForm(Zend_Form_SubForm $subForm)
{
$subForm->addElements($this->_submitButton);
return $subForm;
}
이 나는 빛나는이 기능
public function prepareSubForm($spec)
{
if (is_string($spec)) {
$subForm = $this->{$spec};
} elseif ($spec instanceof Zend_Form_SubForm) {
$subForm = $spec;
} else {
throw new Exception('Invalid argument passed to ' .
__FUNCTION__ . '()');
}
$subform = $this->setSubFormDecorators($subForm);
$subform = $this->addSubmitButtonGroupToSubForm($subForm);
$subform = $this->addSubFormActions($subForm);
$subform->setMethod($this->getMethod());
return $subForm;
}
oooooo ...와 양식의 "페이지"를 렌더링 할 때 호출되는 414,. 그게 어디 까지나 도전 할 수있는 곳인지 알 수 있어요. 그러나 그것은 또한 내가하고있는 방식을 완전히 재 설계해야 할 것입니다. 그러나 당신의 아이디어는 단순하고 쉽고 간단합니다. –