【问题标题】:How to call custom controller from index controller in Zend Framework如何从 Zend Framework 中的索引控制器调用自定义控制器
【发布时间】:2012-09-01 12:30:13
【问题描述】:

我是 Zend 框架的新手。我在 netbeans 中制作了示例项目。它可以正常显示 index.phtml 。但是,我需要调用我的控制器。我尝试过的如下。

IndexController.php


<?php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {

    }

    public function indexAction()
    {
        firstExample::indexAction();
    }    

}

我已经删除了 index.phtml 的所有内容(只是一个空白文件),因为我不想渲染这个视图。 我的自定义控制器是:

firstExampleController.php

<?php
class firstExample extends Zend_Controller_Action{
    public function indexAction(){
        self::sum();
    }

    public function sum(){
        $this->view->x=2;
        $this->view->y=4;
        $this->view->sum=x + y;
    }
}
?>

firstExample.phtml

<?php
echo 'hi';
echo $this->view->sum();
?>

如何在 firstExample.php 中显示 sum 方法。

点击以下网址后,它只显示空白页面。

http://localhost/zendWithNetbeans/public/

我认为点击上面的 URL 后,首先执行到 public 文件夹中的 index.php。而且我没有更改 index.php 的内容

【问题讨论】:

    标签: model-view-controller zend-framework


    【解决方案1】:

    您错误地使用了控制器(MVC),控制器不应该执行任何业务逻辑,在您的情况下是 sum 方法。控制器只负责控制请求并将模型和视图粘合在一起。这就是你现在调用它时遇到问题的原因。

    创建模型添加方法 sum,并在您想要的任何控制器中使用。您可以从控制器将模型传递给视图。

    这里是示例:http://framework.zend.com/manual/en/learning.quickstart.create-model.html 它使用数据库,但没有必要与数据库一起使用。

    基本上,您的求和示例可能如下所示:

    class Application_Sum_Model {
    
     public function sum($x, $y) {
       return ($x + $y);
     }
    }
    
    class IndexContoler extends Zend_Controller_Action {
    
       public function someAction() {
    
        $model = new Application_Sum_Model(); 
    
        //passing data to view that's okay
        $this->view->y   = $y;
        $this->view->x   = $x;
        $this->view->sum = $model->sum($x, $y); //business logic on mode
    
       }
    }
    

    请阅读控制器的工作原理,http://framework.zend.com/manual/en/zend.controller.quickstart.html

    【讨论】:

    • 我需要更改我的默认 Bootstrap.php 文件吗?
    • 不,你不需要,只需将类添加到模型目录,它就会自动加载。然后只需在所需的控制器操作上创建新对象。
    • 创建模型后我面临同样的问题。 firstExampleModel.php view->x=2; $this->view->y=4; $this->view->sum=x + y; } } ?> 在控制器中,我确实创建了上述类的对象,然后调用 sum 方法。
    • 我不知道,indexController类如何解决必须调用的控制器。我在上面的IndexController类中的更改是否正确?
    • 你可以使用任何你想要的控制器,我给你的只是一个例子。所以你有基本的想法。
    猜你喜欢
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多