Domanda

Ho creato 2 controller nella mia applicazione Yii:. FirstController.php e SecondController.php nel percorso controller di default

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();
  }
}

Quando provo ad eseguire exampleFunc() in SecondController, Yii gettare l'errore:

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

Calling FirstController::returnFunc() simile non funzionano.

Sono newbee in OOP e framework Yii. Qual è il problema?

È stato utile?

Soluzione

Ho risolto questo problema. Il caricatore automatico non carica i controller.

E 'stato nel config/main.php:

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

Tutti i lavori con questo:

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

Altri suggerimenti

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

Quando si crea un progetto Yii, ogni controller di estendere la classe Controller, e che classe estende la classe costruito in Yii CController.

Questo è bello perché Controller è una classe all'interno dell'applicazione (si può trovare nei componenti cartella).

Se si desidera un metodo per essere accessibile da entrambi i controller, mettere quel metodo nella classe Controller, e poiché entrambi estenderlo. Avranno accesso sia. Basta fare in modo di dichiarare che sia pubblico o protetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top