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