Cakephp の初心者で、別の MySQL テーブル名 "registration" でログインしたいと考えています。Cakephpの本によると、ログインと登録、およびそのユーザーコントローラーとモデルには、テーブルという名前のユーザーが必要です。しかし、私の質問はです。登録テーブルでログインする方法はありますか? ここで、そのすべてのページを定義します。
Controller AppController.php OnlineController.php(このページは私のサイトのメインコントローラーです。)
モデル AppModel.php Registrations.php
register.ctpを見る login.ctp
そしてここに私のログインビューページ
<?php echo $this->Form->create('Registrations'); ?>
<table width="450" border="0" align="center" id="login_form">
<tr align="center">
<td colspan="2" align="left"><h3 style="padding-top:10px; padding-left:0px;">Login In</h3>
<hr /></td>
</tr>
<tr><td><?php echo $this->Session->flash(); ?></td></tr>
<tr>
<td width="245"><?php echo $this->Form->input('email'); ?></td>
<tr>
<td><?php echo $this->Form->input('password', array('type'=>'password')); ?></td>
</tr>
<tr>
<td align="right"><a href="#">Lost Username/Password</a></td>
</tr>
<tr>
<td align="right"><? echo $this->Form->end('Submit'); ?></td>
</tr>
<tr>
<td align="right"> </td>
<td> </td>
</tr>
</table>
コントローラ >> OnlineController.php >> コードはこちら
クラス OnlineController は AppController を拡張します {
/**
* Controller name
*
* @var string
*/
public $name = 'Online';
//component
public $components=array('Session','Paginator','Auth');
public $uses = array('Registrations','Contacts','User','RegistrationsModel');
function beforeFilter(){
parent::beforeFilter();
}
public function index(){
//$students=$this->Student->find('all');
}
public function login(){
if($this->request->is('post'))
{
// pr($_POST);
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirect());
// Prior to 2.3 use `return $this->redirect($this->Auth->redirect());`
}
else {
$this->Session->setFlash(__('Username or password is incorrect'));
}
}
}
public function logout() {
$this->redirect($this->Auth->logout());
}
public function profile()
{
}
モデル部分>> Registrations.php とコードは
class Registrations extends AppModel {
public $name='Registrations';
function beforeSave() {
if(isset($this->data['Registrations']['password']))
$this->data['Registrations']['password'] = Security::hash($this->data['Registrations']['password'], null, true);
return true;
}
public $validate = array(
'first_name'=>array(
'rule'=>'alphaNumeric',
'required'=> true,
'allowEmpty'=>false,
'message'=>'Please Enter Your Name'
),
'last_name'=>array(
'rule'=>'alphaNumeric',
'required'=>true,
'allowEmpty'=>false,
'message'=>"Please Enter Your Last Name."
),
'email'=>array(
'rule'=>'email',
'required'=>true,
'allowEmpty'=>false,
'message'=>"Please Enter Your Email address."
)
,
'password'=>array(
'rule'=>'alphaNumeric',
'required'=>true,
'allowEmpty'=>false,
'message'=>"Please Enter Your Password."
),
'phone'=>array(
'rule'=>'Numeric',
'required'=>true,
'allowEmpty'=>false,
'message'=>"Please Enter Your Phone No.."
)
,
'state'=>array(
'rule'=>'alphaNumeric',
'required'=>true,
'allowEmpty'=>false,
'message'=>"Please Enter Your Sate"
)
,
'city'=>array(
'rule'=>'alphaNumeric',
'required'=>true,
'allowEmpty'=>false,
'message'=>"Please Enter Your City"
)
);
}
最後に、Appcontrollerにいくつかのロジックを使用しました
class AppController extends Controller {
public $components = array(
'Auth' => array(
'loginAction' => array(
'controller' => 'Online',
'action' => 'login'),
'loginRedirect' => array(
'controller' => 'Online',
'action' => 'profile'),
'logoutRedirect ' => array(
'controller' => 'Online',
'action' => 'login'),
'authenticate' => array(
'Registrations' => array(
'userModel' => 'RegistrationsModel',
'fields' => array(
'username' => 'email',
'password' => 'password'
)
)
)
)
);
function beforeFilter() {
$this->Auth->allow('register','index','contact','quiz_zone','about','packages','online_test','test_gen','login');
}
}
正しい解決策を教えてください..事前に感謝します