2013-04-11 97 views
0

如何在不同的控制器/模块中对布局进行多个操作?Zend Framework:布局中的多个模块

我尝试这样做:

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

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

这不是一个好主意。推测你的登录行为显示登录表单?所以你应该在布局中输出这个表单(可能通过。helper)。 – 2013-04-11 18:13:42

+0

在每一个视图中,我有一个Ajax代码,接下来是形式。 我需要网站:新闻,登录/聊天,最新评论,留言。我没有其他的想法.. – Jeremy 2013-04-11 19:02:51

回答

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> 
0

我没有得到你想要什么?

我猜到了什么是可能是你想调用从布局此功能(作用)显示什么是

返回从那里进入布局......

+0

我需要渲染动作 - 控制器 - 模块的布局。 当我尝试该代码时,我有:致命错误:未找到类'User_LoginController'。我不知道,我如何从不同模块中的不同控制器获取视图/动作。 对不起,我的英语。 – Jeremy 2013-04-11 17:36:00

+0

这可以帮助...... 为了使大家经常使用的这种定位的标签......

2013-04-11 17:51:35

+0

我需要在一个网站上4个模块。新闻,登录/聊天等,没有链接。 – Jeremy 2013-04-11 18:54:42