我声明了一个publisher
控制器:
class PublisherController extends Zend_Controller_Action {
public function indexAction()
{
$this->view->form = $this->_getForm();
$this->render('form');
}
public function dataPostAction()
{
//@TODO
}
protected function _getForm()
{
$form = new Zend_Form();
$form->setAction('publisher/dataPost')//Here, I DO NOT want to do: setAction('*/dataPost') with `*` means current controller.
->setMethod('post')
->setAttrib('id','publisher-form');
$form->addElement('text', 'name',
array(
'label'=>'First Name',
'class'=>'required'
)
);
$form->addElement('submit', 'Save');
return $form;
}
}
查看以下行:$form->setAction('publisher/dataPost')
这意味着我想在提交dataPost
publisher
控制器之后为表单设置操作。
现在我想做$form->setAction('*/dataPost')
*
表示当前控制器。因为当前控制器也是publisher
。
但它不起作用,或者我错过了什么?你能告诉我什么是正确的吗?
答案 0 :(得分:1)
publisher/dataPost
比$form->setAction($this->getRequest()->getControllerName().'/dataPost')
更容易打字,因此我建议您坚持使用您已经在做的事情。
答案 1 :(得分:0)
我通常不会在它自己的zend形式中使用它,但最好在使用此代码调用表单时在actions视图中使用它。
<?php echo $this->setAction(url(/.../.../) );?>
这是为了回应您在操作中使用的表单以及设置其操作。所以简而言之就是坚持你所拥有的或使用sam的方法,但我认为如果你有一些准确和有效的方法会更好。
答案 2 :(得分:-1)