Проверка CakePHP всегда верна - PullRequest
1 голос
/ 29 декабря 2011

Я боролся с этим в течение последнего часа или около того, задаваясь вопросом, могут ли некоторые свежие глаза помочь.

Модель

class User extends AppModel {
public $name = 'User';
public $validate = array(
    'email' => array(
        'valid' => array(
            'rule' => 'email',
            'message' => 'The email is not valid'
        ),
        'required' => array(
            'rule' => 'notEmpty',
            'message' => 'Please enter an email'
        )
    )
);
}

Контроллер

class UserController extends AppController {

var $uses = array('User');

function index(){
    $users = $this->User->find('all');
    $this->set(compact('users'));
}

public function add() {
    $this->set('title_for_layout', 'Add new user');

    if(isset($this->data) && !empty($this->data)) {
        $this->User->set($this->data);
        $this->log($this->User->invalidFields(), "debug");

        if($this->User->validates()){
            if ($this->User->save($this->data)) {

                $this->Session->setFlash("Added " . $this->data['User']['name']);
                $this->redirect('index');
            }
        } else {
            $this->Session->setFlash('There are errors with your form submit, please see below.');
        }

    }
}

}

Просмотр

<?php
    echo $this->Form->create('User'); 
    echo $this->Form->input('name', array('label' => 'Name'));
    echo "<div class='clear'></div>";
    echo $this->Form->input('email', array('label' => 'Email'));
    echo "<div class='clear'></div>";
    echo $this->Form->button('Reset', array('type' => 'reset'));
    echo $this->Form->button('Add Useer', array('type' => 'submit'));
    echo $this->Form->end(); 
?>

Но я никогда не получаю недопустимые поля дляЭл. адрес?Я пропустил что-то вопиющее?

Если это имеет какое-то значение, то это плагин, который я разрабатываю, поэтому он не находится непосредственно в приложении /, но в приложении / плагинах

Спасибо

РЕДАКТИРОВАТЬ: Таким образом, я боролся с этим некоторое время сейчас, и до сих пор нет радости.Однако я заметил одну вещь: когда я распечатываю детали модели (используя var_dump ($ this-> User)), массив [validate] пуст.Например:

[validate] => Array
    (
    )

[validationErrors] => Array
    (
    )

Я предполагаю, что это проблема, хотя я объявил свой массив $ validate, он как-то перезаписывается?Кто-нибудь сталкивался с этим раньше?Любые решения?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Черт!Так просто.Если бы я правильно прочитал кулинарную книгу по номеру http://book.cakephp.org/1.3/en/view/1114/Plugin-Models, он сказал бы, что

Если вам нужно сослаться на модель в вашем плагине, вам нужно включить имя плагина в название модели, разделенные точкой.

Таким образом ..

var $uses = array('Plugin.User');

работает .. Надеюсь, это поможет кому-то еще!

0 голосов
/ 30 декабря 2011
public $validate = array(
    'email' => array(
        'valid' => array(
            'rule' => array('email'),
            'message' => 'The email is not valid'
        ),
        'required' => array(
            'rule' => array('notEmpty'),
            'message' => 'Please enter an email',
            'allowEmpty' => false
        )
    )
);

Попробуйте добавить правила в виде массива и добавить ключ 'allowEmpty', установленный в значение false, при требуемой проверке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...