在cakephp3.8的输入字段下方显示验证错误

时间:2019-12-12 16:28:07

标签: cakephp

我是Cake php的新手,并开始在YouTube上观看有关Cake php的视频教程,但我只能找到Cake php版本3.6,而我目前正在使用3.8版本。

我已经按照youtube教程中的所有步骤进行操作,但就我而言,在验证部分,错误未在输入字段下方显示,我不知道为什么。 3.6和3.8中是否有任何选项可在输入字段下方显示错误验证?请查看所附的What I wantWhat I did图片。

我的代码:

UsersController.php

<?php


namespace App\Controller;


class UsersController extends AppController
{

    //User Login

    public function login()
    {
       $this->set('title', 'Login');
    }



    // User registration

    public function registration()
    {
       $this->set('title', 'Registration');

       $users = $this->Users->newEntity($this->request->getData(), ['validate' => 'register']);
        // Do work to show error messages.
        $this->set('users', $users);




    }
}

UsersTable.php

    <?php 
namespace App\Model\Table;

use Cake\ORM\Table;
use Cake\Validation\Validator;

class UsersTable extends Table
{

public function validationRegister(Validator $validator){

    #Firstname
    $validator->notEmpty('firstName');

    #Lastname
    $validator->notEmpty('lastName');

    #Username
    $validator->notEmpty('username')->lengthBetween('username', [4,18]);

    #password
    $validator->notEmpty('password');

    #confirm password
    $validator->notEmpty('confirmPassword')
    ->add('confirmPassword', 'no-misspelling',[
        'rule' => ['compareWith', 'password'],
        'message' => 'Password does not match', 
        ]);

    #email

$validator->notEmpty('email')->add('email', 'valid', [
        'rule' => 'email',
        'message' => 'Please enter a valid email',
    ]);

    return $validator;


}
}

 ?>

Registration.ctp

<div class="container container-small mt-5">
    <?php
        //Set form Tempaltes

        $myTemplates = [
        'inputContainer' => '<div class="form-group">{{content}}</div>',
        //'input' => '<input type="{{type}}" class = "form-control is-invalid" name="{{name}}"{{attrs}}/>',
        'inputContainerError' => '<div class="input {{type}}{{required}} error">{{content}}{{error}}</div>',
        'error' => '<div class="error-message">{{content}}</div>'
        ];

        $this->Form->setTemplates($myTemplates);


        echo $this->Form->create($users);

        if($this->Form->isFieldError('firstName')){
            echo '
                <br>
                <div class="alert alert-danger alert-dismissible fade show" role="alert">
                  Please fill up all the fields.
                  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                  </button>
                </div>
                ';
        }else{
            echo '';
    }
        // for multiple forms
        echo $this->Form->controls(
        [
            'Firstname' => [
            'name' => 'firstName', 
            'placeholder' => 'FirstName', 
            'required' => false,
            'label' => 'First Name',
            'class' => ($this->Form->isFieldError('firstName')) ? 'form-control is-invalid' : 'form-control'
            ],
            'Lastname'  => [
            'name' => 'lastName', 
            'placeholder' => 'Lastname', 
            'required' => false,
            'label' => 'Last Name',
            'class' => ($this->Form->isFieldError('lastName')) ? 'form-control is-invalid' : 'form-control'
            ],
            'Username'  => [
            'name' => 'username', 
            'placeholder' => 'Username', 
            'required' => false,
            'class' => ($this->Form->isFieldError('username')) ? 'form-control is-invalid' : 'form-control'
            ],
            'Password'  => [
            'type' => 'password',
            'name' => 'password', 
            'placeholder' => 'Password', 
            'required' => false,
            'class' => ($this->Form->isFieldError('password')) ? 'form-control is-invalid' : 'form-control'
            ],
            'Confirm Password'  => [
            'type' => 'password',
            'name' => 'confirmPassword', 
            'placeholder' => 'Confirm Password',
            'required' => false,
            'label' => 'Confirm Password',
            'class' => ($this->Form->isFieldError('confirmPassword')) ? 'form-control is-invalid' : 'form-control'
            ],
            'Email'  => [
            'name' => 'email', 
            'placeholder' => 'Email', 
            'required' => false,
            'class' => ($this->Form->isFieldError('email')) ? 'form-control is-invalid' : 'form-control'
            ],

        ],
        ['legend' => 'Registration']
        );


        echo $this->Form->submit('Register', ['class' => 'btn btn-primary']);


        echo $this->Form->end();


    ?>
</div>

0 个答案:

没有答案