Эквивалент вспомогательной функции url() в контроллере Zend
В помощнике вида Zend существует функция url() для вывода URL-адреса на основе таблиц маршрутизации, например
$this->url(array('controller' => 'comments', 'action' => 'add')
Как я могу сделать то же самое в контроллере? В частности, я хочу установить URL-адрес действия для формы Zend, используя синтаксис контроллера/действия, а не стандартный URL, например
$form = new Zend_Form;
$form->setMethod('post')->setAction( $this->url(array('controller' => 'comments', 'action' => 'add')) );
Ответы
Ответ 1
Для этого есть помощник действий: Zend_Controller_Action_Helper_Url
. Внутри контроллера действий вы можете получить к нему доступ, используя:
$this->_helper->url($action [, $controller [, $module [, $params]]]);
или
$this->_helper->url->url(array(...));
В качестве альтернативы вы также можете использовать помощник вида:
$this->view->url(...);
Ответ 2
Я действительно узнал, что только это работает:
// 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
Был способен ответить на мой собственный вопрос, поскольку, кажется, следующий код делает трюк: -
$form = new Zend_Form;
$form->setMethod('post')->setAction( $this->getHelper('url')->url(array('controller' => 'index', 'action' => 'add')) );
Ответ 4
В zf3 вы можете использовать:
$form = new YourFormClass();
$form->setMethod('post')->setAction($this->url()->fromRoute(array('controller' => 'index', 'action' => 'add'));