CakePHP4.0-如何针对字段创建和显示验证错误?

CakePHP4.0-如何针对字段创建和显示验证错误?,cakephp,cakephp-4.x,Cakephp,Cakephp 4.x,我正在使用CakePHP4.0,并创建一个用户注册页面。我已经设置了一些验证规则,这些规则会在预期的情况下返回错误,但我不知道如何让它们在表单中的相应字段中显示出来。在v3.0中,这似乎是自动发生的 我的表单(在register.php中)是: 在userscocontroller.php中,我有一个操作寄存器: public function register() { $user = $this->Users->newEmptyEntity();

我正在使用CakePHP4.0,并创建一个用户注册页面。我已经设置了一些验证规则,这些规则会在预期的情况下返回错误,但我不知道如何让它们在表单中的相应字段中显示出来。在v3.0中,这似乎是自动发生的

我的表单(在
register.php
中)是:

userscocontroller.php
中,我有一个操作
寄存器

    public function register() {

        $user = $this->Users->newEmptyEntity();

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

            $user = $this->Users->patchEntity($user, $this->request->getData());
            if($user->getErrors()) {
                $this->Flash->error(__('Unable to register you.  Please make sure you have completed all fields correctly.'));
            }else {
                $this->Users->save($user);
                $this->Flash->success(__('Success'));
                return redirect($this->get_home());
           }

       }

       $this->set('user', $user);

   }
UsersTable中的验证规则为:

public function validationDefault(Validator $validator): Validator {

    $validator->requirePresence([
                'name' => [
                        'mode' => 'create',
                        'message' => 'Please enter your name'
                ],
                'email' => [
                        'mode' => true,
                        'message' => 'Please enter your email address'
                ]
            ])
            ->allowEmptyString('name', 'Name cannot be empty', false);
}
如果我提交表单时没有输入任何名称或电子邮件地址,则getErrors()会选择无效字段并创建一个数组,我可以通过调试看到该数组包含:

'name' => [
        '_empty' => 'Name cannot be empty'
    ]
因此,它意识到name字段不会验证,但它不会像3.0版那样在表单(或任何地方)中的字段中显示它


我还需要做什么?

多亏了Salines,我用了

echo $this->Form->create($user);
而不是

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

错误立即出现。

谢谢!我没想到会看这本书的组成部分!尝试创建类似echo$this->form->create($user)的表单;
echo $this->Form->create();