首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cakePHP -表单值无法验证

cakePHP -表单值无法验证
EN

Stack Overflow用户
提问于 2011-07-31 21:42:19
回答 2查看 196关注 0票数 0

我的控制器:

代码语言:javascript
复制
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');
        }
    }
}

我的模型

代码语言:javascript
复制
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)

代码语言:javascript
复制
<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。

EN

回答 2

Stack Overflow用户

发布于 2011-07-31 22:17:22

您确定数据已保存吗?因为即使数据没有验证,控制器也会将您重定向到页面之外。

代码语言:javascript
复制
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');
        }
    }
}

下一个问题是验证消息不会显示在视图中。你需要那里的帮助器来创建它们,手动完成这项工作需要大量的工作。我可以问一下你为什么不使用它们吗?

票数 2
EN

Stack Overflow用户

发布于 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像广告中说的那样工作--按照文档的建议去实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6889791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档