我的控制器:
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'
)
)
);
}以及我的观点(我不使用cake html和form helper)
<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-helper。
发布于 2011-07-31 22:17:22
您确定数据已保存吗?因为即使数据没有验证,控制器也会将您重定向到页面之外。
function add(){
if(!empty($this->data) ) {
if( $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');
}
}
}下一个问题是验证消息不会显示在视图中。你需要那里的帮助器来创建它们,手动完成这项工作需要大量的工作。我可以问一下你为什么不使用它们吗?
发布于 2011-08-01 05:55:24
<label>title</label> <?php echo $this->Form->input('title', array('label'=>false, 'div'=>false, 'legend'=>false) );?>
然而,我完全同意@Charles和@Juhana的观点:框架的真正力量可以在遵循它的约定时释放出来。所以,如果你想让Cake像广告中说的那样工作--按照文档的建议去实现。
https://stackoverflow.com/questions/6889791
复制相似问题