Zend_Form :: setAction () использует текущий контроллер в Zend Framework - PullRequest
0 голосов
/ 11 октября 2011

Я объявляю 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.

Но он не работает, или я что-то упустил?Можете ли вы сказать мне, что правильно?

Ответы [ 3 ]

1 голос
/ 12 октября 2011

publisher/dataPost гораздо проще набирать, чем $form->setAction($this->getRequest()->getControllerName().'/dataPost'), поэтому я бы порекомендовал вам придерживаться того, что вы уже делаете.

0 голосов
/ 12 июня 2014

Обычно я не использую его в собственной форме Zend, но желательно в представлении действий при вызове формы с использованием этого кода.

<?php echo $this->setAction(url(/.../.../) );?>

Это повторяет форму, которую вы используете в своем действии, а также задает ее действие.Короче говоря, просто придерживайтесь того, что у вас есть, или используйте метод Сэма, но я думаю, что лучше, если у вас есть что-то ТОЧНОЕ и работающее.

0 голосов
/ 11 октября 2011

Я считаю, что комментарий из @ Сэм - лучший ответ для меня.

Используя выражение:

$form->setAction($this->getRequest()->getControllerName().'/dataPost')


ОБНОВЛЕНИЕ

Из этого вопроса я знаю, что: «НЕ будь сложным», и некоторые ребята здесь не очень согласны с вышеуказанным решением.Теперь я тоже это получил.Но для этого ответа я считаю, что ДОЛЖЕН проверить и подтвердить, что правильно.

...