我是Cake php的新手,并开始在YouTube上观看有关Cake php的视频教程,但我只能找到Cake php版本3.6,而我目前正在使用3.8版本。
我已经按照youtube教程中的所有步骤进行操作,但就我而言,在验证部分,错误未在输入字段下方显示,我不知道为什么。 3.6和3.8中是否有任何选项可在输入字段下方显示错误验证?请查看所附的What I want和What I did图片。
我的代码:
<?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);
}
}
<?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;
}
}
?>
<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">×</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>