Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CakePHP中为我的站点注册用户_Php_Cakephp_Registration - Fatal编程技术网

在CakePHP中为我的站点注册用户

在CakePHP中为我的站点注册用户,php,cakephp,registration,Php,Cakephp,Registration,我正在尝试在我的cakePHP项目中注册一个用户。我完成了一个登录和注册教程,效果非常好。后来我尝试在我的项目中重用代码,但我没有运气。登录部分工作正常,但每次注册都失败。任何帮助都会很好 AdminController.php中的my register函数 public function register(){ $user = $this->Admin->newEntity(); if($this->request->is('post')){

我正在尝试在我的cakePHP项目中注册一个用户。我完成了一个登录和注册教程,效果非常好。后来我尝试在我的项目中重用代码,但我没有运气。登录部分工作正常,但每次注册都失败。任何帮助都会很好

AdminController.php中的my register函数

public function register(){
    $user = $this->Admin->newEntity();
    if($this->request->is('post')){
        $user = $this->Admin->patchEntity($user, $this->request->data);
        if($this->Admin->save($user)){
            $this->Flash->success('You are registered');
            return $this->redirect(['action' => 'login']);
        } else {
            $this->Flash->error('You have not registered');
        }
    }
    $this->set(compact('user'));
    $this->set('_serialize', ['user']);
}
我的管理员/register.ctp

<br>
<div class = "index large-4 medium-4 large-offset-4 medium-offset-4">
    <div class = "panel">
        <h2 class = "text-centre">Please Register</h2>
        <?= $this->form->create($user); ?>
            <?= $this ->form->input('first name'); ?>
            <?= $this ->form->input('last name'); ?>
            <?= $this ->form->input('date of birth', array('type' => 'date')); ?>
            <?= $this ->form->input('email'); ?>
            <?= $this ->form->input('password', array('type' => 'password')); ?>
            <?= $this ->form->submit('register', array('class' => 'button')); ?>
        <?= $this->form->end(); ?>
    </div>
</div>
这是AdminTable.php

<?php
namespace App\Model\Table;

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

/**
* Admin Model
*
* @method \App\Model\Entity\Admin get($primaryKey, $options = [])
* @method \App\Model\Entity\Admin newEntity($data = null, array     $options = [])
* @method \App\Model\Entity\Admin[] newEntities(array $data, array   $options = [])
* @method \App\Model\Entity\Admin|bool     save(\Cake\Datasource\EntityInterface $entity, $options = [])
* @method \App\Model\Entity\Admin   patchEntity(\Cake\Datasource\EntityInterface $entity, array $data, array   $options = [])
* @method \App\Model\Entity\Admin[] patchEntities($entities, array   $data, array $options = [])
* @method \App\Model\Entity\Admin findOrCreate($search, callable   $callback = null)
*
* @mixin \Cake\ORM\Behavior\TimestampBehavior
*/
class AdminTable extends Table
{

/**
 * Initialize method
 *
 * @param array $config The configuration for the Table.
 * @return void
 */
public function initialize(array $config)
{
    parent::initialize($config);

    $this->table('admin');
    $this->displayField('id');
    $this->primaryKey('id');

    $this->addBehavior('Timestamp');
}

/**
 * Default validation rules.
 *
 * @param \Cake\Validation\Validator $validator Validator instance.
 * @return \Cake\Validation\Validator
 */
public function validationDefault(Validator $validator)
{
    $validator
        ->integer('id')
        ->allowEmpty('id', 'create')
        ->add('id', 'unique', ['rule' => 'validateUnique', 'provider'   => 'table']);

    $validator
        ->requirePresence('fName', 'create')
        ->notEmpty('fName');

    $validator
        ->requirePresence('lName', 'create')
        ->notEmpty('lName');

    $validator
        ->date('dOb')
        ->requirePresence('dOb', 'create')
        ->notEmpty('dOb');

    $validator
        ->email('email')
        ->requirePresence('email', 'create')
        ->notEmpty('email');

    $validator
        ->requirePresence('password', 'create')
        ->notEmpty('password');

    return $validator;
}

/**
 * Returns a rules checker object that will be used for validating
 * application integrity.
 *
 * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
 * @return \Cake\ORM\RulesChecker
 */
public function buildRules(RulesChecker $rules)
{
    $rules->add($rules->isUnique(['email']));
    $rules->add($rules->isUnique(['id']));

    return $rules;
}
}
解决


通过阅读cakePHP烹饪书,我发现我没有遵守cakePHP正确工作所需的严格命名约定。由于我的管理表列名格式不正确,因此无法成功传递数据。我将列名的格式从fName改为first_name。然后我将表名从Admin改为Admins。最后,我发布了命令bin/cake bake all admins。我现在可以成功注册和登录了。感谢大家的帮助。

您能提供错误的详细信息吗?因为代码$this->Flash->error'you not register';我唯一的错误是你没有注册。我能找出错误的原因吗?由于验证,您能共享AdminTable.php吗?它不会保存数据。@AmanRawat我已经包含了您要求的文件。谢谢,伙计们,你们觉得阅读文档和教程有困难吗?和
<?php
namespace App\Model\Table;

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

/**
* Admin Model
*
* @method \App\Model\Entity\Admin get($primaryKey, $options = [])
* @method \App\Model\Entity\Admin newEntity($data = null, array     $options = [])
* @method \App\Model\Entity\Admin[] newEntities(array $data, array   $options = [])
* @method \App\Model\Entity\Admin|bool     save(\Cake\Datasource\EntityInterface $entity, $options = [])
* @method \App\Model\Entity\Admin   patchEntity(\Cake\Datasource\EntityInterface $entity, array $data, array   $options = [])
* @method \App\Model\Entity\Admin[] patchEntities($entities, array   $data, array $options = [])
* @method \App\Model\Entity\Admin findOrCreate($search, callable   $callback = null)
*
* @mixin \Cake\ORM\Behavior\TimestampBehavior
*/
class AdminTable extends Table
{

/**
 * Initialize method
 *
 * @param array $config The configuration for the Table.
 * @return void
 */
public function initialize(array $config)
{
    parent::initialize($config);

    $this->table('admin');
    $this->displayField('id');
    $this->primaryKey('id');

    $this->addBehavior('Timestamp');
}

/**
 * Default validation rules.
 *
 * @param \Cake\Validation\Validator $validator Validator instance.
 * @return \Cake\Validation\Validator
 */
public function validationDefault(Validator $validator)
{
    $validator
        ->integer('id')
        ->allowEmpty('id', 'create')
        ->add('id', 'unique', ['rule' => 'validateUnique', 'provider'   => 'table']);

    $validator
        ->requirePresence('fName', 'create')
        ->notEmpty('fName');

    $validator
        ->requirePresence('lName', 'create')
        ->notEmpty('lName');

    $validator
        ->date('dOb')
        ->requirePresence('dOb', 'create')
        ->notEmpty('dOb');

    $validator
        ->email('email')
        ->requirePresence('email', 'create')
        ->notEmpty('email');

    $validator
        ->requirePresence('password', 'create')
        ->notEmpty('password');

    return $validator;
}

/**
 * Returns a rules checker object that will be used for validating
 * application integrity.
 *
 * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
 * @return \Cake\ORM\RulesChecker
 */
public function buildRules(RulesChecker $rules)
{
    $rules->add($rules->isUnique(['email']));
    $rules->add($rules->isUnique(['id']));

    return $rules;
}
}
[
'fName' => [
    '_required' => 'This field is required'
],
'lName' => [
    '_required' => 'This field is required'
]
]