2016-08-27 8 views
-2

私はcakePHPプロジェクトにユーザを登録しようとしています。私は完全に機能したログイン&登録チュートリアルを完了しました。私は以来、私のプロジェクトでコードを再利用しようとしましたが、私は運がないです。ログイン部分はうまくいっていますが、登録は毎回失敗しています。どんな助けも素晴らしいだろう。私のサイトのユーザをCakePHPに登録

私はこれがAdminTableある

CREATE TABLE `admin` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`fName` varchar(255) NOT NULL, 
`lName` varchar(255) NOT NULL, 
`dOb` date NOT NULL, 
`email` varchar(255) NOT NULL, 
`password` varchar(255) NOT NULL, 
`created` datetime NOT NULL, 
`modified` datetime NOT NULL, 
PRIMARY KEY (`id`), 
UNIQUE KEY `id_UNIQUE` (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; 

に私のユーザーを登録したい

AdminController.php

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> 

私のテーブルの私のレジスタ機能.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; 
} 
} 

これを調べる時間をとっていただきありがとうございます。

ありがとうございました。デバッグするためのコードを追加した後、私はエラーを取得:

[ 
'fName' => [ 
    '_required' => 'This field is required' 
], 
'lName' => [ 
    '_required' => 'This field is required' 
] 
] 
+0

エラーの詳細を非常に親切に伝えることはできますか? – Steve

+0

このコードのため、 '$ this-> Flash-> error( 'あなたは登録していません');'唯一のエラーは**登録していません**です。とにかく、私はエラーの理由を知ることができますか? – Peakapot

+0

'AdminTable.php'はデータを保存しない検証のため共有できますか? –

答えて

-1

は私はCakePHPが正常に動作する必要が厳格な命名規則に適合していなかったことがわかったCakePHPの料理の本を読んでから

を解決しました。管理テーブルの列名が正しい形式でないため、データを正常に渡すことができませんでした。列名をfNameの形式からfirst_nameに変更します。その後、テーブル名をAdminからAdminsに変更しました。最後に私はbin/cake bake all adminsというコマンドを出しました。私は正常に登録しログインすることができます。皆さん助けてくれてありがとう。

関連する問題