如何从Zend Framework中的索引控制器调用自定义控制器

时间:2012-09-01 12:30:14

标签: model-view-controller zend-framework

我是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之后,执行首先进入公共文件夹中的index.php。而且我没有更改index.php的内容

1 个答案:

答案 0 :(得分:1)

您正在使用控制器(MVC),Controller不应该执行任何业务逻辑,在您的情况下是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