从Cakephp中非关联的控制器访问变量

时间:2018-11-28 00:33:47

标签: php cakephp-3.0

我正在使用cakephp中的“表单”来开发测验。我已经在CourseModules控制器($ passMark)中声明了一个变量,开发测验的HR可以设置用户成功完成测验所需的通过百分比。我已经像这样声明了变量:

with open(filename) as f:
    for line in f:
        if line.startswith('@'):
            print('header')
            # do something with header here
        else:
            print('regular line')
            # do something with the line here

然后,我需要在FormsController中访问变量$ passMark,以便可以针对另一个变量($ percCorrect)进行检查。 $ percCorrect在我的窗体控制器中声明为:

            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;

我想执行一个if语句,因此请检查$ percCorrect是否为<$ passMark,但是由于课程模块与Forms Controller无关,所以我不确定如何访问$ passMark。

我确实有另一个名为CoursesEnrolledModules的控制器,该控制器与此相关,所以我想知道是否可以通过那里访问它吗?

我在FormsController中具有以下代码来加载CoursesEnrolledModules:

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

1 个答案:

答案 0 :(得分:1)

每当您问自己“如何从另一个控制器访问一个控制器”时,只需将自己停在那里并考虑其他选择即可。在这种情况下,应将阵列放置在中央位置,所有可能需要它的地方都可以使用它。也许将其包含在app.php的配置中,然后在需要的任何位置使用Configure :: read(...)进行引用。