Cakephp: Ошибки валидации не отображаются в валидации данных - PullRequest
0 голосов
/ 01 июля 2010

Я пытаюсь реализовать проверку формы с использованием моделей CakePHP.Вот мои фрагменты кода ...

Модель

// 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 (), все сообщения об ошибках, которые я установил в модели, есть, но они не отображаются ....

Что я делаю не так?

Привет

1 Ответ

1 голос
/ 01 июля 2010

Для меня проблема в вашем теге формы.

В основном, если вы проверяете запрос, поля фирмы должны иметь следующие имена: данные [запрос] [имя] вместо данных [узел] [имя].

Если вы измените

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

на

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

Ошибки должны отображаться в основном.

Если в вашей форме смешаны поля Node и Inquiry, затем просто поместите название модели перед именем поля, например:

<?php echo $form->input("Enquiry.email", array(....));?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...