Question

J'ai créé 2 contrôleurs dans mon application Yii. FirstController.php et SecondController.php dans le chemin de contrôleur par défaut

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

Lorsque je tente d'exécuter exampleFunc() dans SecondController, Yû renvoyait une erreur:

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

Appel FirstController::returnFunc() De même ne fonctionnent pas.

Je suis newbee en POO et cadre Yii. Quel est le problème?

Était-ce utile?

La solution

Je l'ai résolu ce problème. Le chargeur automatique ne charge pas les contrôleurs.

Il était config/main.php:

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

Tous les travaux avec ceci:

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

Autres conseils

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

Lorsque vous créez un projet Yii, chacun de vos contrôleurs étendent la classe contrôleur, et cette classe étend la construction dans CController classe Yii.

C'est intéressant car contrôleur est une classe au sein de votre application (il peut être trouvé dans le dossier des composants).

Si vous voulez une méthode pour être accessible par les deux contrôleurs, mettez cette méthode dans la classe du contrôleur, et comme ils ont tous deux l'étendre. Ils ont tous deux accès. Assurez-vous de le déclarer soit public ou protégé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top