Настройка параметра действия для формирования в Zend - PullRequest
1 голос
/ 19 марта 2011

Я использую "Zend form".Что я должен сделать, чтобы получить правильный параметр "action" в моем теге FORM?Например, форма Form_Search используется в SearchController в indexAction .Где и как мне установить параметр action для формы, чтобы он "/ my / app / directory / search / index" ?

Обновление: параметр "action" должен совпадать сформа примет, если не установлена.Мне просто нужен параметр в FORM для упрощения кодирования JS.

Ответы [ 4 ]

5 голосов
/ 19 марта 2011

Вы можете использовать метод setAction Zend_Form, например:

$yourForm->setAction('/my/app/directory/search/index');

Надеюсь, это то, что вы ищете.

РЕДАКТИРОВАТЬ: Вы можете получить много информации о запросе, вдействие, используя метод $ this-> getRequest (), который возвращает экземпляр Zend_Controller_Request_Http.Например, если вы хотите получить basePath и все, что находится между BaseUrl и QueryString, вы можете сделать следующее:

    $infoPath = $this->getRequest()->getPathInfo();
    $basePath = $this->getRequest()->getBaseUrl();

    $yourForm->setAction($basePath . $infoPath);

Zend_Controller_Request_Http имеет другие методы, которые могут быть вам полезны.

2 голосов
/ 19 марта 2011

Вы можете использовать помощник вида url() для создания ваших URL действий.

$view->url(array(
    'module'     => 'mymodule',
    'controller' => 'mycontroller',
    'action'     => 'myaction',
    'param1'     -> 'myvalue1',
    // etc
), 'default'); 
// 'default' here refers to the default route. 
// If you specify a custom route, then that route will be used to 
// assemble() the url.

В зависимости от того, где вы звоните $form->setAction(), вы можете получить доступ к $view различными способами.

В контроллере: $this->view

В самой форме: $this->getView()

В скрипте вида: $this

Вид вспомогательного расширения Zend_View_Helper_Abstract: $this->view

Надеюсь, это поможет!

1 голос
/ 19 марта 2011

Просто дополнение к предыдущим ответам. Вид «отраслевого стандартного подхода» заключается в представлении / проверке / обработке формы на одной странице. Тогда нет необходимости устанавливать действие, так как оно заполнено текущим URL.

Исключением является, например, поле serch в макете. Затем используйте $form->setAction($url). Но всегда не забывайте повторить форму в поисковом действии . Если значение формы недопустимо, ZF ожидает, что вы отобразите его на странице с ошибками. Или вы можете использовать $form->getErrors().

0 голосов
/ 22 июля 2016
            `$this->setAttribs(array(
                'accept-charset' => 'utf-8',
                'enctype' => Zend_Form::ENCTYPE_URLENCODED,
                'method' => 'get',
                'action' => '/controller/action/param/attr'
            ))`
...