質問

私はYiiアプリケーションに2つのコントローラを作成しました:デフォルトのコントローラパスで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