Мой контроллер:
class PostsController extends AppController
{
function index() {
$this->set('posts', $this->Post->find('all'));
}
function add(){
if(!empty($this->data))
{
$this->Post->save($this->data);
$this->Session->setFlash('the post was saved successfully');
$this->redirect('/posts/index');
}
else
{
$this->Session->setFlash('the post was not saved');
}
}
}
Моя модель
class Post extends AppModel {
var $name = 'Post';
var $validate = array(
'title'=>array(
'title_must_not_be_blank'=>array(
'rule'=>'notEmpty',
'message'=>'$this post is missing a title'
),
'title_must_be_unique'=>array(
'rule'=>'isUnique',
'message'=>'A post with this title already exists'
)
),
'body'=>array(
'body_must_not_be_blank'=>array(
'rule'=>'notEmpty',
'message'=>'this post is missing the body'
)
)
);
}
И мой взгляд (я не использую торт HTML и помощник по формам)
<form action="<?= $this->base.'/posts/add' ?>" method="post">
<label>title</label>
<input type="text" name="data[Post][title]" /><br />
<label>body</label>
<textarea type="text" name="data[Post][body]"></textarea><br />
<input type="submit" value="submit" />
</form>
Проблема:
когда я сознательно пропускал поля, форма все равно отправляла значение в базу данных.
И я стараюсь избегать использования html-помощников.