如何在我的布局中从不同的控制器/模块执行多个操作?
我试过这个:
<div id="login"><?php $x=new User_LoginController; $x->LoginAction() ?>
<div id="news"><?php $x=new Site_NewsController; $x->ShowAction() ?>
如何在我的布局中从不同的控制器/模块执行多个操作?
我试过这个:
<div id="login"><?php $x=new User_LoginController; $x->LoginAction() ?>
<div id="news"><?php $x=new Site_NewsController; $x->ShowAction() ?>
我没有得到你到底想要什么?
我猜可能是你想从布局中调用这个函数(动作)来显示什么是
从那里返回到布局......
您需要实现视图助手,特别是placeholder()视图助手。
例如,要在应用程序的任何或所有页面中呈现登录表单,我们从布局或视图脚本中的表单占位符开始:
<!--layout.phtml-->
<div>
<?php echo $this->layout()->login . "\n"?>
</div>
我使用动作助手来准备要显示的表单:
<?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 视图助手,请注意性能可能会受到影响。
<div id="login">
<?php echo $this->action('login', 'login', 'user'); ?>
</div>