質問
私は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に建て拡張します。
これはいいですコントローラーが(それはコンポーネントフォルダに格納されています)アプリケーション内でクラスであるためます。
あなたは方法は、あなたのコントローラの両方からアクセスできるようにするには、は、コントローラクラスでそのメソッドを入れて、彼ら以来の両方にそれを拡張します。彼らは両方のアクセス権を持っています。ただ、パブリックまたは保護され、それを宣言することを確認します。
所属していません StackOverflow