在cakephp中进行小规模验证后添加学生

时间:2015-05-28 08:57:02

标签: cakephp

我在数据库中有两个表:一个类表和另一个学生。 然后,我想在一次小验证后添加一名学生。 所以我有一个名为&#34的按钮;添加学生"在类的索引中,当我首先单击此boutton时,我想检查键盘输入的类的数量与数据库中找到的其他数字。  如果它存在,则检索该类的id,以便在添加student的其他视图中传递错误消息并保留在同一视图中。

我尝试做了所有正确的代码,但仍然显示一条错误消息,说明该号码与我提出的号码不相同。

控制器中的

 public function admin_verif_show() {

    $this->set('title_for_layout', __('verification'));
    $this->Class->recursive = 0;

  //***************all number class in data base************//
        $nums= $this->Class->find('list', array(
         'fields' => array(
         'Class.num',
           ),

           ));    
  //*******************************************************//
        if (!empty($this->request->data)) { 

          $num= $this->request->data['Class']['num'];

          foreach ($nums as $nu) {
            if ( $num == $nu) {  
             $id= $this->request->data['Class']['id'];

             $this->redirect(array('controller'=>'students','action' => 'add',$id));

                 }else{

                $this->Session->setFlash(__('le num n"est pas identique, essayer une autre fois'), 'default', array('class' => 'error'));

                $this->redirect(array('action' => 'verif_show'));
                 } 
                  }
                }
   }

2 个答案:

答案 0 :(得分:0)

你试过调试吗?

$num= $this->request->data['Class']['num'];

debug($num);
debug($nums);
die();

如果不知道变量中的什么,就很难回答这个问题......

或许$ num只是不在$ nums?

也许$ num是一个字符串而$ nums是整数?

所以你必须提供至少调试信息,有人可以帮助你。

答案 1 :(得分:0)

从外观上看,您可以大大简化代码。似乎没有理由循环所有类。相反,如果某人提交了一个号码,只需检查数据库中是否存在该号码: -

public function admin_verif_show() {
    $this->set('title_for_layout', __('verification'));
    $this->Class->recursive = 0;

    if (!empty($this->request->data['Class']['num'])) {
        if ($this->Class->findByNum($this->request->data['Class']['num'])) {
            $id = $this->request->data['Class']['id'];
            return $this->redirect(array('controller' => 'students', 'action' => 'add', $id));
        } else {
            $this->Session->setFlash(__('le num n"est pas identique, essayer une autre fois'), 'default', array('class' => 'error'));
            return $this->redirect(array('action' => 'verif_show'));
        }
    }

    return;
}

此外,您应该记得在进行重定向后返回。这是为了确保重定向后的代码不会运行(主要用于使用测试时,但无论如何都是好的做法)。