繁体   English   中英

未知方法“允许”

[英]Unknown method “allow”

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

Contorller / UsersController.php

<?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);
    }

}

型号/表格/UsersTable.php

<?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'
            ]);
    }

}
?>

模板/用户/register.ctp:

<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>

实体/User.php:

<?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);
    }
}

因此,当我尝试访问/ users / register视图时,它给了我下一个错误:

未知方法“ allow”:$ this-> Users-> allow('register');

但是,如果我在用户控制器中删除了下一个方法:

public function beforeFilter(Event $event)
{
    parent::beforeFilter($event);
    $this->Users->allow('register');
}

它工作正常,但我想它也必须也可以工作。 那么我在做错什么还是想念什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM