سؤال

لقد قمت بإنشاء وحدات تحكم 2 في تطبيق Yii الخاص بي: 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();
  }
}

عندما أحاول التنفيذ exampleFunc() في SecondController ، 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. ما هي المشكلة؟

هل كانت مفيدة؟

المحلول

لقد حلت هذه المشكلة. لا يقوم Autoloader بتحميل وحدات التحكم.

كان في 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 ، فإن كل من وحدات التحكم الخاصة بك تقوم بتوسيع فئة وحدة التحكم ، ويمتد تلك الفئة المدمجة في CController من فئة Yii.

هذا لطيف لأن وحدة التحكم هي فئة داخل التطبيق الخاص بك (يمكن العثور عليها في مجلد المكونات).

إذا كنت ترغب في الوصول إلى طريقة من قبل كل من وحدات التحكم الخاصة بك ، فضع هذه الطريقة في فئة وحدة التحكم ، وبما أنهما تمديدها. سيكون كل من الوصول. فقط تأكد من إعلانه إما عام أو محمي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top