首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何显示cakephp 2.5.3模型验证message.By默认显示html 5验证消息

如何显示cakephp 2.5.3模型验证message.By默认显示html 5验证消息
EN

Stack Overflow用户
提问于 2015-02-20 19:27:40
回答 2查看 332关注 0票数 1

如何显示CakePHP model.When中定义的验证消息我提交了表单,CakePHP模型验证works.But输入字段的验证消息没有显示。它显示HTML5验证消息。我想要显示CakePHP模型验证消息。我使用的是CakePHP 2.5.3

下面是我的代码块:

控制器:

代码语言:javascript
运行
复制
$this->User->set($this->request->data);
    if ($this->User->validates()) {
        if ($this->User->save($this->request->data)) {
            $Email->send();
            $this->Session->setFlash(__('The user has been created'));
            if ($this->Auth->login()) {

                $this->Session->setFlash(__('Welcome, ' . $this->Auth->user('username')));
                $this->redirect($this->Auth->redirectUrl());
            }
        } else {
            $this->Session->setFlash(__('The user could not be created. Please, try again.'));
        }
    }

型号:

代码语言:javascript
运行
复制
public $validate = array(
    'username' => array(
        'nonEmpty' => array(
            'rule' => array('notEmpty'),
            'message' => 'A username is required',
            'allowEmpty' => false
        ),
        'unique' => array(
            'rule' => array('isUniqueUsername'),
            'message' => 'This username is already in use'
        ),
        'alphaNumericDashUnderscore' => array(
            'rule' => array('alphaNumericDashUnderscore'),
            'message' => 'Username can only be letters, numbers and underscores'
        ),
    )

查看:

代码语言:javascript
运行
复制
<div id="divfirstname" class="input text required">
                    <label for="UserFirstname">First Name <span style="color:#FF0000">*</span></label>
                     <?php echo $this->Form->text('firstname');?>
                </div>

                <div id="divlastname"  class="input text required">
                    <label for="UserLastname">Last Name <span style="color:#FF0000">*</span></label>
                    <?php echo $this->Form->text('lastname');?>
                </div>
                <div class="input text required">
                    <label for="UserUsername">Username <span style="color:#FF0000">*</span></label>
                    <?php echo $this->Form->text('username');?>
                </div>
EN

回答 2

Stack Overflow用户

发布于 2015-02-20 19:55:05

您不需要将验证块包含在save调用中。

所以这就足够了:

代码语言:javascript
运行
复制
    if ($this->User->save($this->request->data)) {
        $Email->send();
        $this->Session->setFlash(__('The user has been created'));
        if ($this->Auth->login()) {

            $this->Session->setFlash(__('Welcome, ' . $this->Auth->user('username')));
            $this->redirect($this->Auth->redirectUrl());
        }
    } else {
        $this->Session->setFlash(__('The user could not be created. Please, try again.'));
    }

当调用Model->save()时,CakePHP会自动处理验证,并在输入字段下显示错误。因此,如果$this->save由于验证错误而失败,cakephp会在正确的输入字段下添加<div class="error-message">Message Text from your model validation array</div>

票数 0
EN

Stack Overflow用户

发布于 2015-02-20 20:24:43

你只有两个选择:

  1. 要么在cakePHP中使用验证规则,后者在客户端进行验证。
  2. on DOM ready,调用$("#formId").removeAttr('novalidate'); Like

$(document).ready(function(){ $("#formId").removeAttr('novalidate'); });

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

https://stackoverflow.com/questions/28627876

复制
相关文章

相似问题

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