首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP-3.0插件形式验证错误消息并输入数据

CakePHP-3.0插件形式验证错误消息并输入数据
EN

Stack Overflow用户
提问于 2015-02-19 11:07:13
回答 1查看 798关注 0票数 0

我已经创建了一个CommentManager插件,用于在我的帖子中添加评论。在Posts/view.ctp文件中添加注释表单和注释表单操作将重定向到CommentManager/Comments/add

注释保存正常,但是当保存空表单时,这并不显示我用CommentsTable编写的验证错误消息,而且输入的数据也是从表单中删除的。

CommentManager/src/Controller/CommentsController/add

代码语言:javascript
复制
public function add()
{
    $ccomment = $this->Comments->newEntity($this->request->data);
    if ($this->request->is('post')) {
        $newData = ['post_id' => $this->request->params['pass'][0]];
        $ccomment = $this->Comments->patchEntity($ccomment, $newData);

        if ($this->Comments->save($ccomment)) {
            $this->Flash->success('The comment has been saved.');
            return $this->redirect($_SERVER['HTTP_REFERER']);
        } else {
            $this->Flash->error('The comment could not be saved. Please, try again.');
        }
    }
    $this->set(compact('ccomment'));        
    return $this->redirect($_SERVER['HTTP_REFERER']);
}

CommentManager/src/Model/Table/CommentsTable

代码语言:javascript
复制
public function validationDefault(Validator $validator) {
    return $validator
        ->notEmpty('body', 'Body contents required.')
        ->notEmpty('email', 'An email is required.')
        ->add('email', [
            'format' => [
                'rule' => [
                    'custom',
                    '/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/'
                ],
                'message' => 'Enter a valid email.'
            ]
        ]);
}

src/Template/Posts/view.ctp

代码语言:javascript
复制
<?php echo $this->Html->link('Back', ['action' => 'index']) ?>
<?php echo $this->element('check_login'); ?>
<br/>
<?php $img_path = DS.'webroot'.DS.'images'.DS.$post->image; ?>
<img src="<?php echo empty($post->image)?'':$img_path; ?>">
<h2><?php echo $post->title; ?></h2>
<p><?php echo $post->body; ?></p>
<p><small><?php echo $post->created->format('d M Y'); ?></small></p>


<h3>Comments:</h3>
<?php foreach ($comments as $comment) { ?>
    <p><?php echo $comment->body; ?></p>        
<?php } ?>

<?php
echo $this->Form->create(null, ['url' => ['plugin' => 'CommentManager', 'controller' => 'Comments', 'action' => 'add', $post->id]]);
echo $this->Form->input('body', ['type' => 'textarea', 'rows' => '5', 'cols' => '5']);
echo $this->Form->input('email');
echo $this->Form->button('Save');
echo $this->Form->end();
?>
EN

回答 1

Stack Overflow用户

发布于 2015-02-19 16:18:31

不要用空数组调用newEntity()。例.

代码语言:javascript
复制
$ccomment = $this->Comments->newEntity($this->request->data);

做:

代码语言:javascript
复制
$ccomment = $this->Comments->newEntity();

在对patchEntity()的调用中传递$this->request->data

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

https://stackoverflow.com/questions/28604743

复制
相关文章

相似问题

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