可变按钮标签


Variable button label

我得到了一个用于注册用户的表单,并将其用作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');
相关文章: