it-swarm.com.ru

Эквивалент вспомогательной функции url () в контроллере Zend

В помощнике по представлению Zend есть функция url () для вывода URL на основе таблиц маршрутизации, например

$this->url(array('controller' => 'comments', 'action' => 'add')

Как я могу сделать то же самое в контроллере? В частности, я хочу установить URL-адрес действия для Zend Form, используя синтаксис контроллера/действия, а не стандартный URL-адрес, например

$form = new Zend_Form;
$form->setMethod('post')->setAction( $this->url(array('controller' => 'comments', 'action' => 'add')) );
13
Mathew Attlee

Для этого есть помощник: Zend_Controller_Action_Helper_Url . Внутри контроллера действий вы можете получить к нему доступ, используя:

$this->_helper->url($action [, $controller [, $module [, $params]]]);

или же:

$this->_helper->url->url(array(...));

Кроме того, вы также можете использовать помощник вида:

$this->view->url(...);
23
Ferdinand Beyer

Я на самом деле обнаружил, что только это работает:

// in your form
public function init()
{
    $router = Zend_Controller_Front::getInstance()->getRouter();
    $url = $router->assemble(
        array(
            'paramterName0' => 'parameterValue0',
            'paramterName1' => 'parameterValue1',
        ),
        'routeName'
    );

    $this->setAction($url);
    ...
}
3
Attilio

Был в состоянии ответить на мой собственный вопрос, как кажется, следующий код делает свое дело: -

$form = new Zend_Form;
$form->setMethod('post')->setAction( $this->getHelper('url')->url(array('controller' => 'index', 'action' => 'add')) );
2
Mathew Attlee

В zf3 вы можете использовать:

    $form = new YourFormClass();
    $form->setMethod('post')->setAction($this->url()->fromRoute(array('controller' => 'index', 'action' => 'add'));
0
Andrii Krot