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