【问题标题】:Cakephp: Validation Errors not appearing in data validationCakephp:数据验证中未出现验证错误
【发布时间】:2010-07-01 02:55:57
【问题描述】:

我正在尝试使用 cakephp 模型实现表单验证。这是我的代码 sn-ps...

型号

// File: /app/models/enquiry.php
class Enquiry extends AppModel {
    var $name = "Enquiry";
    var $useTable = false;
    var $_schema = array(
        "name"      => array( "type" => "string", "length" => 100 ), 
        "phone"     => array( "type" => "string", "length" => 30 ), 
        "email"     => array( "type" => "string", "length" => 255 )
    );
    var $validate = array(
    'name' => array(
        'rule' => 'notEmpty',
        'required' => true,
        'message' => 'Name is required'
    ),
    'email' => array(
        'emailFormat' => array(
            'rule' => 'notEmpty',
            'required' => true,
            'message' => 'Email is required'
        ),
        'emailNeeded' => array(
            'rule' => array('email', true),
            'required' => true,
            'message' => 'Must be a valid email address'
        )
    )
    );
}

控制器动作

// /app/controllers/nodes_controller.php
class NodesController extends AppController {

    var $name = "Nodes";
    var $uses = array( "Enquiry" );
    function enquire() {
        if ( $this->data ) {
           $this->Enquiry->set( $this->data );
            if ( $this->Enquiry->validates() ) {
            // .....
            } else {
                 $this->set("errors", $this->Enquiry->invalidFields());
            }
        }
    }
}

查看....

// /app/views/nodes/enquire.ctp
<?php echo $form->create("Node", array("action" => "ask")); ?>
<?php echo $form->input("name", array(
                            "error" => array( "class" => "error-message" ),
                            "div" => false,
                            "label" => "Name",
                            "size" => "40"
                        ) ); ?>
<?php echo $form->input("email", array(
                            "error" => array( "class" => "error-message" ),
                            "div" => false,
                            "label" => "Email",
                            "size" => "40"
                        ) ); ?>
<?php echo $form->input("phone", array(
                            "label" => "Phone No.",
                            "div" => false,
                            "size" => "30"
                        ) ); ?>
<?php echo $form->end("Send");?>

我的问题:提交时,表单验证发生,Model->validates 方法返回 false,但验证错误永远不会显示。我检查了由 invalidFields() 返回的数组,我在模型中设置的所有错误消息都在那里,但它们没有显示出来......

我做错了什么?

问候

【问题讨论】:

    标签: cakephp validation models


    【解决方案1】:

    对我来说,问题出在你的表单标签上。

    基本上,如果您验证 Enquiry,则公司字段应使用以下名称:data[Enquiry][name] 而不是 data[Node][name]。

    如果你改变了

    <?php echo $form->create("Node", array("action" => "ask")); ?>
    

    <?php echo $form->create("Enquiry", array("action" => "ask")); ?>
    

    错误应该正确显示。

    如果您的表单混合了 Node 和 Inquiry 字段,那么只需将 Model 的名称放在字段名称的前面,如下所示:

    <?php echo $form->input("Enquiry.email", array(....));?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多