簡體   English   中英

從Cakephp中非關聯的控制器訪問變量

[英]Access a variable from an non associated Controller in Cakephp

我正在使用cakephp中的“表單”來開發測驗。 我已經在CourseModules控制器($ passMark)中聲明了一個變量,開發測驗的HR可以設置用戶成功完成測驗所需的通過百分比。 我已經像這樣聲明了變量:

            case "Quiz":
            $quiz = $this->CourseModules->FormTemplates->find('list')->where(['active'=>true,'type'=>'Quiz']);
            $passMark = [100=>'100%',90=>'90%',80=>'80%',70=>'70%',60=>'60%',
            50=>'50%',40=>'40%',30=>'30%',20=>'20%',10=>'10%',0=>'0%'];
            $this->set('passMark',$passMark);

            $this->set('quiz',$quiz);
            break;

然后,我需要在FormsController中訪問變量$ passMark,以便可以對照另一個變量($ percCorrect)進行檢查。 $ percCorrect在我的窗體控制器中聲明為:

        $percCorrect = $numberCorrect / $numberOfQuizQuestions * 100;
        $this->set('percCorrect', $percCorrect);

我想執行一條if語句,因此請檢查$ percCorrect是否<$ passMark,但是我不確定如何訪問$ passMark,因為CourseModules與Forms Controller沒有關聯。

我確實有另一個名為CoursesEnrolledModules的控制器,該控制器與此相關,所以我想知道是否可以通過那里訪問它嗎?

我在FormsController中有以下代碼來加載CoursesEnrolledModules:

        //Check if courses_enrolled_module_id is set
    $courses_enrolled_module_id = $this->request->getQuery('courses_enrolled_module_id');

    //If so make sure it is valid
    if($courses_enrolled_module_id){
        $this->loadModel('CoursesEnrolledModules');
        $coursesEnrolledModule = $this->CoursesEnrolledModules->get($courses_enrolled_module_id,
            ['contain'=>[],
        ]);
        //Pass variable to view so we can show correct back button
        $this->set('coursesEnrolledModule', $coursesEnrolledModule);
        //Also after save we will redirect.
    }

每當您問自己“如何從另一個控制器訪問一個控制器”時,只需將自己停在那里並考慮其他選擇即可。 在這種情況下,應將陣列放置在中央位置,所有可能需要它的地方都可以使用它。 可能將其包含在app.php的配置中,然后在需要的任何位置使用Configure :: read(...)進行引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM