如何在布局中从不同的控制器/模块中执行多个操作?
我试过了:
<div id="login"><?php $x=new User_LoginController; $x->LoginAction() ?>
<div id="news"><?php $x=new Site_NewsController; $x->ShowAction() ?>
答案 0 :(得分:0)
我没有得到你想要的东西?
我猜到的可能是你想从布局中调用这个函数(动作)以显示什么是
从那里回到布局......
答案 1 :(得分:0)
您需要实施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>