【问题标题】:Zend Framework's Action helper doesn't use a ViewRendererZend Framework 的 Action 助手不使用 ViewRenderer
【发布时间】:2009-09-12 10:00:00
【问题描述】:

我正在尝试使用 Action 助手从视图中执行一个动作,但尽管该动作已执行,但未显示输出。

这是我的 .phtml 文件的一部分:

<div id="active-users">
<?php echo $this->action('active', 'Users') ?>
</div>

动作是这样的:

class UsersController extends Zend_Controller_Action
{
    function activeAction()
    {
        $model = new UsersModel();
        $this->view->users = $model->getActiveUsers();
    }
}

还有另一个呈现用户列表的 .phtml 文件。当直接从 /users/active 调用时,该操作工作正常,但从另一个 .phtml 文件中调用时不显示任何内容。

我已经跟踪到 ViewRenderer 在使用 action() 帮助程序调用时不可用的问题......或者至少不能像往常一样工作(自动呈现默认的 .phtml 文件)。

如果我在操作中显式渲染视图,则会显示内容,但我需要 ViewRender 行为,因为我不控制我需要使用的某些操作的代码。

在使用 action() 视图助手时,是否可以打开 ViewRenderer?如果需要,我愿意替换 action() 视图助手。

我忘记了:我在 Windows Vista 上使用的是 PHP 5.2.8、Zend Framework 1.7.5、Apache 2.2。

谢谢

【问题讨论】:

  • Zend_View_Helper_Action 杀死仙女 - tinyurl.com/actionstack - 可以很容易地避免使用它。它会产生很多不需要的开销。

标签: zend-framework action


【解决方案1】:

我认为您应该从控制器分配活动用户,或者如果您愿意,您可以在模型上使用单例并直接在视图中使用

$this->view = UsersModel::instance()->getActiveUsers();

【讨论】:

    【解决方案2】:

    您是否在操作中使用 _forward() o 重定向?导致 _forward() 或重定向的操作被认为是无效的,并将返回一个空字符串。

    更新:我对其进行了测试,它可以工作,尝试在控制器参数中编写“用户”而不是“用户”。

    <div id="active-users">
        <?php echo $this->action('active', 'users') ?> 
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 2013-04-09
      • 2011-07-24
      相关资源
      最近更新 更多