2016-02-28 2 views
0

На мой взгляд, у меня есть

<?= $this->Form->create('Asc201516', array(
'url' => array(
    'controller' => 'asc201516s', 
    'action'  => 'submit_asc201516' 
    ), 
'class' => 'form-inline', 
'onsubmit' => 'return check_minteacher()' 
)); ?> 

<div class="form-group col-md-3"> 
    <?= $this->Form->input('bi_school_na', array(
     'type' => 'text', 
     'onkeypress' => 'return isNumberKey(event)', 
     'label'  => 'NA', 
     'placeholder' => 'NA', 
     'class'  => 'form-control' 
    )); ?> 
</div> 
<?php 
$options = array(
    'label' => 'Submit', 
    'class' => 'btn btn-primary'); 
echo $this->Form->end($options); 
?> 

В моем контроллере, у меня есть

$this->Asc201516->set($this->request->data['Asc201516']); 
     if ($this->Asc201516->validates()) { 
      echo 'it validated logic'; 
      exit(); 

     } else {     
      $this->redirect(
       array(
        'controller' => 'asc201516s', 
        'action' => 'add', $semisid 
        ) 
       ); 

     } 

В моей модели, у меня есть

public $validate = array(
     'bi_school_na' => array(
      'Numeric' => array(
       'rule' => 'Numeric', 
       'required' => true, 
       'message' => 'numbers only', 
       'allowEmpty' => false 
      ) 
     ) 
    ); 

Когда я представляю форма, логически он не должен быть отправлен и распечатать сообщение об ошибке, но форма отправляется вместо этого и проверяет модель внутри контроллера, которая прерывается работа в контроллере.Form Validation в CakePHP 2

+0

в контроллере в этой акции у вас есть только ' $ school = $ this-> Asc201516-> save ($ this-> request-> data); '? – Sojtin

+0

Фактически он проверяет данные, но не показывает ошибок. Я также использую помощник формы CakePHP. Когда проверка не выполняется, она просто загружает представление, но не показывает ошибок. – Moorani

ответ

1

Вы должны проверить проверки в контроллере, как

$this->Asc201516->set($this->request->data); 
if($this->Asc201516->validates()){ 
    $this->Asc201516->save($this->request->data); 
}else{ 
    $this->set("semisid",$semisid); 
    $this->render("Asc201516s/add"); 
} 

У вас будет ID там в переменной $semisid, или вы можете установить данные в $this->request->data = $this->Asc201516->findById($semisid);

+0

Если validates() возвращает false, то в нашем другом условии он должен перейти к просмотру и отображать ошибки, верно? Это просто перенаправление на представление, но не отображение ошибок. Как бы конечный пользователь знал, что такое ошибка или какой ввод он допустил неправильно. – Moorani

+0

@Pallew подтверждает, что вы не написали 'unset ($ this-> request-> data)' в своем коде. и используя '$ this-> Form-> input()' для создания ввода. или вы должны показывать ошибку вручную, написав '$ this-> Form-> error()'. См. [Здесь] (http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::error) –

+0

Нет, в моем коде нет этой инструкции unset. Документация говорит, что «При использовании FormHelper :: input() ошибки отображаются по умолчанию». Моя validation() возвращает false и получает перенаправление с легкостью и легко, но не показывает/отображает ошибки. – Moorani