Вы хотите реализовать view helpers, в частности, placeholder() вид помощника.
Например чтобы сделать форму входа в любой или все страницы вашего приложения, мы начинаем с placholder для формы в нашей макет или скрипт вида:
<!--layout.phtml-->
<div>
<?php echo $this->layout()->login . "\n"?>
</div>
Я использую action helper подготовить форму для отображения:
<?php
/**
* Prepares login form for display
*/
class My_Controller_Action_Helper_Login extends Zend_Controller_Action_Helper_Abstract
{
/**
* @return \Application_Form_Login
*/
public function direct()
{
$form = new Application_Form_Login();
//this is the url of the action this form will default too
$form->setAction('/index/login');
return $form;
}
}
теперь от любого контроллера или контроллера переднего плагина заполнитель может быть настроено:
public function preDispatch()
{
$this->_helper->layout()->login = $this->_helper->login();
}
теперь форма Логина будет отображаться в любое действия от этого контроллера, который использует layout.phtml
, как это расположение. Я дам вам открыть плагины самостоятельно.
Использование помощников с заполнителями обычно является предпочтительным способом выполнения того, что вы хотите. Однако, если вы абсолютно должны отображать действие внутри другого представления, вы можете использовать Action view helper, просто имейте в виду, что производительность может пострадать.
<div id="login">
<?php echo $this->action('login', 'login', 'user'); ?>
</div>
Это не очень хорошая идея. Предположительно, ваше действие для входа показывает форму входа? Поэтому вы должны просто вывести эту форму (возможно, через помощника) в свой макет. –
В каждом представлении у меня есть код ajax, а следующий - форма. Мне нужно на сайте: Новости, Логин/Последние комментарии, Messagess. У меня нет другой идеи. – Jeremy