我得到了一个用于注册用户的表单,并将其用作edit-user-form。现在我想让这个形式更有变数。这意味着在我的例子中:我想为不同的操作使用一个特定的按钮标签。
如果表单是通过RegisterAction调用的,标签应该是"Register",如果是通过EditAction调用的,标签应该是"Update user"。我尝试了一些方法,但现在我已经没有主意了。
CustomerController.php
...
public function registerAction(){
$form = new Application_Form_Register();
$request = $this->_request->getParams();
if(isset($request['registerbtn']) && ($form->isValid($request) )){
$customerModel = new Application_Model_Customer();
$customerArr = $customerModel->setCustomer($request,true);
$this->redirect('/customer/detail/id/'.$customerArr);
}
else{
$this->view->form = $form;
$this->view->button = "Register"; //TEST
}
}
public function editAction(){
$request = $this->_request->getParams();
if(isset($request['id']) && !empty($request['id'])){
$form = new Application_Form_Register();
$form->addElement('hidden', 'id', array(
'required' => true,
'value' => $request['id'],
'validators' => array(
$digits = new Zend_Validate_Digits()
)
));
if(isset($request['registerbtn']) && ($form->isValid($request) )){
$customerModel = new Application_Model_Customer();
$id = $customerModel->setCustomer($request,false);
$this->redirect('/customer/detail/id/'.$id);
}else{
$modelResult = new Application_Model_Customer();
$customer = $modelResult->getCustomer($request['id']);
$cArr = $customer->toArray();
$form->populate($cArr);
$this->view->form = $form;
$this->view->button = "Update user"; //TEST
}
}else{
$this->redirect('/');
}
}
...
视图
// register.phtml - begin
<h2>Registration</h2>
<?php
$this->headTitle('Registration');
$button = $this->button; //TEST
$this->form->button = $button; //TEST
echo $this->form;
echo $this->error;?>
// register.phtml - end
// edit.phtml - begin
<?php
echo $this->headline;
$this->headTitle('Update user');
$button = $this->button; //TEST
$this->form->button = $button; //TEST
echo $this->form;
?>
// edit.phtml - end
和
//
...
$this->addElement('submit', 'registerbtn', array(
'ignore' => true,
'label' => $button, //TEST
'decorators' => $this->buttonDecorators,
));
...
我担心这是完全错误的,但我不知道如何做正确。
试试
if ($cas1)
$form->getElement('submit')->setLabel('cas1');
else
$form->getElement('submit')->setLabel('cas2');