0

如何在我的布局中从不同的控制器/模块执行多个操作?

我试过这个:

<div id="login"><?php $x=new User_LoginController; $x->LoginAction() ?>

<div id="news"><?php $x=new Site_NewsController; $x->ShowAction() ?>
4

2 回答 2

0

我没有得到你到底想要什么?

我猜可能是你想从布局中调用这个函数(动作)来显示什么是

从那里返回到布局......

于 2013-04-11T17:31:22.403 回答
0

您需要实现视图助手,特别是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>
于 2013-04-13T14:15:03.310 回答