CakePHP отправить форму с проблемой проверки - PullRequest
1 голос
/ 13 сентября 2011
    echo $this->Form->create('Comment', 
            array('url'=>array('controller' => 'comments', 'action' =>'add', $listposts['Post']['id']) )
            );

    echo $this->Form->input('post_id',array('type'=>'hidden','style'=>'width:30%','value'=>$listposts['Post']['id']));  
    echo $this->Form->input('name',array('style'=>'width:30%'));
    echo $this->Form->input('email',array('style'=>'width:30%'));   
    echo $this->Form->input('body',array('rows'=>'5'));

    echo $this->Form->end('Submit');

Если какое-либо из этих трех полей пусто, оно все еще сохраняет данные в таблицу. Как я могу остановить сохранение данных, если одно поле ввода пусто. Но столбец таблицы комментариев не является нулевым.

mysql> describe comments;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| post_id  | int(11)      | NO   | MUL | NULL    |                |
| name     | varchar(255) | NO   |     | NULL    |                |
| email    | varchar(255) | NO   |     | NULL    |                |
| body     | varchar(500) | NO   |     | NULL    |                |
| created  | datetime     | YES  |     | NULL    |                |
| modified | datetime     | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

Комментарий модели =>

<?php
class Comment extends AppModel {

    var $useTable='comments';
    var $belongsTo = array('Post');

}

Модель с проверкой, но она не отображает никаких сообщений, но не сохраняет данные.

post<?php
class Comment extends AppModel {

  var $useTable='comments';
  var $belongsTo = array('Post');

  var $validate = array(
    'name' => array(
        'required' => true,
        'rule' => 'notEmpty',
        'allowEmpty' => false,
        'message' => 'Enter Name.'
    ),
    'email' => array(
        'required' => true,
        'rule' => 'notEmpty',
        'allowEmpty' => false,
        'message' => 'Enter Email.'
    ),
    'body' => array(
        'required' => true,
        'rule' => 'notEmpty',
        'allowEmpty' => false,
        'message' => 'Enter Body.'
    )
  );


}

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

В вашем контроллере Добавьте эти строки, а затем проверьте, что за ошибка отображается .. Я думаю, что неприлично, она будет работать правильно.с пустыми полями вы отправляете форму, ошибка покажет

$this->Comment->set($this->data);

if ($this->Comment->validates())
{
      if ($this->Comment->save($this->data))
      {
       $this->Session->setFlash('Comment  saved ', 'default'));
      }
      else
      {
          var_dump($this->Comment->invalidFields());
            //OR
           $this->Comment->validationErrors();
      }


}
else
{
   var_dump($this->Comment->invalidFields());
    //OR
    $this->Comment->validationErrors();


}
2 голосов
/ 13 сентября 2011

Измени свою модель

<?php
class Comment extends AppModel {

var $useTable='comments';
var $belongsTo = array('Post');



var $validate = array(
'name' => array(
    'rule' => array('maxLength' , 80),
    'required' => true,
    'message' => 'Please enter your name'
),
'body' =>  array(
    'rule' => array('maxLength' , 80),
    'required' => true,
    'message' => 'Please enter your body'
),

'email' => array(
    'rule' => 'email',
    'required' => true,
    'message' => 'Please enter a valid email address.'
),

);

}

     ?>
...