0

小谜团:似乎无法在我的索引控制器(chartAction)和我的视图之间传递视图。当我转到我的本地主机时,它没有访问视图 phtml-而是每次都显示控制器(即:如果我"echo "HELLO WORLD!"";在控制器中写入,我会得到回显......但如果我这样做,$this->view->test = "Hello World!"则访问 index.phtml并输入echo $this->test;我什么都没有(它仍然默认为控制器操作)。这里有没有我遗漏的步骤?为什么我的$this->view不起作用?我使用命令行创建视图,所以我很确定应该设置正确。我需要注册一些东西吗?感谢您的帮助!

4

3 回答 3

2

案例 1:仅针对一项操作禁用查看:

在您的操作中查找以下代码。

   $this->_helper->viewRenderer->setNoRender(true);

案例 2:查看禁用特定控制器中的所有操作:在控制器 的 init() 或 preDispatch() 函数中查找上述行。

案例 3:所有控制器中的所有操作都禁用查看: 检查案例 1 和 2。此外,在 Bootstrap.php 中查找类似以下内容:

   $frontController->setParam("noViewRenderer", true);

如果你发现上面的代码,你必须注释掉它才能让视图正常工作。我相信有更多的可能性来禁用视图。这些将在此之后进行检查。

于 2012-11-29T02:27:30.127 回答
2

假设 ZF1.x 的标准 MVC 设置,在 url、控制器和操作之间存在一定的关系。

url http://mydomain.com/index会调用索引控制器的索引动作,通常索引动作是默认动作并且被自动调用。视图脚本将是/application/views/scripts/index/index.phtml

url http://mydomain.com/index/chart将调用索引控制器的图表操作,视图脚本将是/application/views/scripts/index/chart.phtml

请记住,此行为可以根据配置和路由选项进行更改。

听起来您在与 ZF 合作方面可能还很陌生。因此,以下内容可能有助于证明这种关系:

// application/controllers/IndexController.php
class IndexController extends Zend_Controller_Action
{
    public function init()
    {

    }

    public function indexAction()
    {
        $this->view->test = "Hello World, from the indexAction().";
    }
    public function chartAction()
    {
        $this->view->test = "Hello World, from the chartAction().";
    }


// application/views/scripts/index/index.phtml
<?php echo $this->test ?>


// application/views/scripts/index/chart.phtml
<?php echo $this->test ?>

现在通过调用 url 来测试你的应用程序:

http://yourDomain.com/index/index
http://yourDomain.com/index/chart

如果您的设置正确,您将在页面中看到正确的响应。

于 2012-11-29T07:27:57.420 回答
1

您的视图被禁用..检查您actioninit您的控制器中的这些代码行,甚至您controller可能正在扩展的类

$this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender();

更新

你在你的身上做这件事,在你的身上chartAction呼应index.phtml你必须在你的身上做chart.phtml

于 2012-11-29T04:19:39.477 回答