Pregunta

He creado 2 controladores en mi aplicación Yii:. FirstController.php y SecondController.php en ruta controlador por defecto

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

Cuando intento ejecutar exampleFunc() en SecondController, Yu tirar el error:

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

Llamando FirstController::returnFunc() no funcionan de manera similar.

Estoy newbee en programación orientada a objetos y el marco Yu. ¿Cuál es el problema?

¿Fue útil?

Solución

He resuelto este problema. El cargador automático no se carga controladores.

Fue en config/main.php:

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

Todo el trabajo con esto:

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

Otros consejos

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

Cuando se crea un proyecto de Yii, cada uno de los controladores de extender la clase del controlador, y que se extiende la clase construido en CController clase Yii.

Esto es bueno porque controlador es una clase dentro de la aplicación (que se puede encontrar en los componentes de la carpeta).

Si quieres un método que sea accesible por ambos de sus controladores, puesto que el método de la clase controlador, y ya que tanto extenderlo. Las dos tendrán acceso. Sólo asegúrese de declarar que ya sea pública o protegida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top