Cakephp 未知方法“;允许;

Cakephp 未知方法“;允许;,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,所以我有这个控制器和方法: Contorller/userscoontroller.php 它工作得很好,但我想它也必须和它一起工作。那么,我做错了什么或遗漏了什么呢?您忘记阅读文档了吗?当模型是一个名为auth的组件时,您什么时候开始对它执行auth()?如$this->Auth->allow()中所示。除了完整的文档之外,所有的教程似乎都使用了正确的代码段()。@标记我的错误,但是如果我用Auth替换它,下一个错误就会出现:错误:调用boolean上的成员函数allow()。我们以前有这个错

所以我有这个控制器和方法:

Contorller/userscoontroller.php


它工作得很好,但我想它也必须和它一起工作。那么,我做错了什么或遗漏了什么呢?

您忘记阅读文档了吗?当模型是一个名为auth的组件时,您什么时候开始对它执行auth()?如
$this->Auth->allow()
中所示。除了完整的文档之外,所有的教程似乎都使用了正确的代码段()。@标记我的错误,但是如果我用Auth替换它,下一个错误就会出现:错误:调用boolean上的成员函数allow()。我们以前有这个错误,不是吗?属性不存在,用于自动加载模型的控制器magic getter启动了,我们又开始了。但我不知道这次我做错了什么,也不知道如何修复它。好吧,我找到了答案:$this->loadComponent('Auth',['authorize'=>'Controller',]);
<?php
namespace App\Controller;

use App\Controller\AppController;
use Cake\Event\Event;
use Cake\Network\Exception\NotFoundException;
use Cake\ORM\TableRegistry;


/**
 * Jobs Controller
 *
 * @property \App\Model\Table\JobsTable $Jobs
 */
class UsersController extends AppController
{
    public function beforeFilter(Event $event)
    {
        parent::beforeFilter($event);
        $this->Users->allow('register');
    }

    public function register()
    {
        //Get Categories
        $getCategories = TableRegistry::get('Categories');
        $categories = $getCategories->find('all');
        $this->set('categories',$categories);

        $this->set('title', 'Registration');


        $user = $this->Users->newEntity();
        if ($this->request->is('post')) {
            $user = $this->Users->patchEntity($user, $this->request->data);
            if ($this->Users->save($user)) {
                $this->Flash->success(__('The user has been saved.'));
                return $this->redirect(['action' => 'register']);
            }
            $this->Flash->error(__('Unable to add the user.'));
        }
        $this->set('user', $user);
    }

}
<?php
namespace App\Model\Table;

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

class UsersTable extends Table
{
    public function validationDefault(Validator $validator)
    {
        return $validator
            ->notEmpty('first_name', 'A username is required')
            ->notEmpty('last_name', 'A username is required')
            ->notEmpty('email', 'A username is required')
            ->notEmpty('username', 'A username is required')
            ->notEmpty('password', 'A username is required')
            ->add('role', 'inList', [
                'rule' => ['inList', ['Employer', 'Job Seeker']],
                'message' => 'Please enter a valid role'
            ]);
    }

}
?>
<div class="users form">
<?php echo $this->Form->create($user); ?>
    <fieldset>
        <legend><?= __('Create New User'); ?></legend>
        <?php 
            echo $this->Form->input('first_name');
            echo $this->Form->input('last_name');
            echo $this->Form->input('email',array('type'=>'email'));
            echo $this->Form->input('username');
            echo $this->Form->input('password',array('type'=>'password'));
            echo $this->Form->input('confirm_password',array('type'=>'password'));
            echo $this->Form->input('role',array(
                                    'type' => 'select',
                                    'options' => ['Employer'=>'Employer','Job Seeker'=>'Job Seeker'],
                                    'empty' => 'Select Role'
                                    )); 
        ?>
    </fieldset>
<?= $this->Form->button(__('Submit')); ?>
<?= $this->Form->end() ?>
</div>
<?php
namespace App\Model\Entity;

use Cake\Auth\DefaultPasswordHasher;
use Cake\ORM\Entity;

/**
 * User Entity.
 */
class User extends Entity
{

    /**
     * Fields that can be mass assigned using newEntity() or patchEntity().
     *
     * @var array
     */
    protected $_accessible = array(
        'first_name' => true,
        'last_name' => true,
        'email' => true,
        'username' => true,
        'password' => true,
        'role' => true,
        'created' => true
    );
    protected function _setPassword($password)
    {
        return (new DefaultPasswordHasher)->hash($password);
    }
}
public function beforeFilter(Event $event)
{
    parent::beforeFilter($event);
    $this->Users->allow('register');
}