簡體   English   中英

Cakephp表單永遠不會驗證何時應該

[英]Cakephp form never validates when it should

好的,所以我的驗證工作了。 它在何時應驗證,這似乎與我在Google上發現的每個問題相反。 我已經嘗試從CakePHP文檔中復制確切的代碼,但是它似乎不起作用。 也許有人可以解決。

模型:

<?php

    App::uses('AppModel', 'Model');

    class User extends AppModel {

        public $validate = array(
            'email' => array(
                'rule' => 'email',
                'required' => true,
                'allowEmpty' => false
            ),
            'full_name' => array(
                'rule'     => 'alphaNumeric',
                'required' => true,
                'allowEmpty' => false
            ),
            'password' => array(
                'rule' => array('minLength', 8),
                'required' => true,
                'allowEmpty' => false
            )
        );

    }

?>

控制器:

<?php

    App::uses('AppController', 'Controller');


    class UsersController extends AppController {

        function login() {
            $this->layout = 'signin';
        }

        function signup() {
            $this->layout = 'signin';

            if($this->request->is('post')) {

                $this->User->set($this->request->data);

                if($this->User->validates())
                    $this->Session->setFlash('Validated!');
                else
                    $this->Session->setFlash('Did not validate!' . print_r($this->User->validationErrors, true) . print_r($this->request->data, true));
            }
        }
    }

?>

視圖:

<div class="placeholder text-center"><i class="fa fa-pencil"></i></div>

<?php echo $this->Session->flash(); ?>
<div class="panel panel-default col-sm-6 col-sm-offset-3">

    <div class="panel-body">
        <?php echo $this->Form->create('User'); ?>

            <div class="form-group">
                <?php echo $this->Form->input('full_name', array('placeholder' => 'Your full name', 'class' => 'form-control')); ?>
            </div>

            <div class="form-group">
                <?php echo $this->Form->input('email', array('placeholder' => 'Enter email', 'class' => 'form-control')); ?>
            </div>

            <div class="form-group">
                <?php echo $this->Form->input('password', array('placeholder' => 'Password', 'class' => 'form-control')); ?>
            </div>

            <div class="form-group">
                <?php echo $this->Form->input('confirm_password', array('placeholder' => 'Retype Password', 'class' => 'form-control')); ?>
            </div>

            <button type="submit" class="btn btn-primary btn-block">Create Account</button>

        <?php echo $this->Form->end(); ?>
    </div>
</div>

任何在正確方向上的幫助將不勝感激。 我一直在CakePHP驗證方面遇到問題,所以我以前從未使用過它。 現在這是必需的,所以我別無選擇,只能花點時間完成,直到我開始工作為止。

哦,我應該注意數據確實會通過。 這是print_r函數的結果:

未驗證!Array([full_name] => Array([0] =>此字段不能為空)[password] => Array([0] =>此字段不能為空))Array([User] =>數組([全名] =>肖恩·鄧普頓[電子郵件] =>肖恩@ ******** .com [密碼] => ******** [確認密碼] => ******** ))

請通過此鏈接。 它解釋了cakephp驗證如何工作。

http://book.cakephp.org/2.0/en/models/data-validation/validating-data-from-the-controller.html

更新:

您的全名驗證具有'rule'=>'alphaNumeric',其中不包含空格。 但是如果您檢查數據[full_name] => Sean Templeton,其中有空格。

您可以在模型中設置自己的消息。 我認為我不必這么說。

在您的控制器中嘗試

function signup() {
     $this->layout = 'signin';
     if ($this->request->is('post')) {
         $this->User->create($this->request->data); //"create" instead of "set"
         if ($this->User->validates())
             $this->Session->setFlash('Validated!');
         else
             $this->Session->setFlash('Did not validate!' . print_r($this->User->validationErrors, true) . print_r($this->request->data, true));
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM