Доступ к переменной из несвязанного контроллера в Cakephp - PullRequest
0 голосов
/ 28 ноября 2018

Я разрабатываю викторину с использованием формы в 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;

Затем мне нужно получить доступ к переменной $ passMark в моем FormsController, чтобы я мог проверить ее по другой переменной ($ percCorrect).$ percCorrect объявляется так в моем контроллере форм:

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

Я хочу сделать оператор if, поэтому проверьте, если $ percCorrect <$ passMark, но я не уверен, как получить доступ к $ passMark, потому что CourseModules isnне связан с Forms Controller. </p>

У меня есть еще один контроллер, называемый CoursesEnrolledModules, который связан, поэтому мне интересно, могу ли я как-то получить к нему доступ через него?

У меня есть следующий код в моемFormsController для загрузки модулей CoursesEnrolled:

        //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.
    }

1 Ответ

0 голосов
/ 28 ноября 2018

Каждый раз, когда вы спрашиваете себя «как получить доступ к одному контроллеру с другого контроллера», просто остановитесь и подумайте о другом варианте.В этом случае вы должны поместить свой массив в центральное место, доступное для всех, кому это может понадобиться.Возможно, включите его в конфиг в вашем app.php, а затем ссылайтесь на него с помощью Configure :: read (...) везде, где вам это нужно.

...