我创建2个控制器在我的Yii应用:FirstController.php和SecondController.php在默认的控制器路径

FirstController.php:

<?php
 class FirstController extends Controller {
  public static function returnFunc() { return 'OK'; }
}

SecondController.php:

<?php
 class SecondController extends Controller {
  public function exampleFunc() {
     $var = First::returnFunc();
  }
}

当我尝试执行在SecondController exampleFunc(),Yii的抛出错误:

YiiBase::include(FirstController.php) [<a href='function.YiiBase-include'>function.YiiBase-include</a>]: failed to open stream: No such file or directory

调用FirstController::returnFunc()类似地不工作。

我在OOP和Yii框架newbee。有什么问题?

有帮助吗?

解决方案

我已经解决了这个问题。自动加载机不加载控制器。

这是在config/main.php

'import' => array(
    'application.models.*',
    'application.components.*',
),

与此所有的工作:

'import' => array(
    'application.models.*',
    'application.components.*',
    'application.controllers.*',
),

其他提示

class ServiceController extends Controller
{
    public function actionIndex()
    {
        Yii::import('application.controllers.back.ConsolidateController'); // ConsolidateController is another controller in back controller folder
        echo ConsolidateController::test(); // test is action in ConsolidateController



class ServiceController extends Controller
{
    public function actionIndex()
    {   
    Yii::import('application.controllers.back.CservicesController');
    $obj =new CservicesController(); // preparing object
    echo $obj->test(); exit; // calling method of CservicesController

当你创建一个Yii的项目,每个控制器扩展控制器类,而这个类来扩展内置Yii中类CController。

这是好的,因为控制器是应用程序中的类(它可以在部件中找到文件夹)。

如果你想有一个方法是双方你的控制器的访问,把这种方法在控制类,并且因为他们都对它进行扩展。他们都会有机会。只要确保其声明公共或保护。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top