私は最初の CakePHP プロジェクトに取り組んでいます。私はこれまで手続き型 PHP でしか作業したことがなく、Cake フレームワークのようなものを扱ったことがなかったので、歯が生える問題がいくつかあります。ログイン スクリプトが機能していないので、助けていただければ幸いです。
私のアプリはラグビー部のシステムになります。そのため、ログイン ページでは、ユーザーがドロップダウンからクラブを選択し、パスワードを入力する必要があります。
編集:
次のように動作します。
/アプリ/ウェブルート/View/Clubs/login.ctp
<div class="clubs form">
<?php echo $this->Session->flash('auth'); ?>
<?php echo $this->Form->create('Club'); ?>
<fieldset>
<legend><?php echo __('Please select your club and enter your password'); ?></legend>
<table>
<tr>
<?php
echo $this->Form->input('id', array('label' => 'Club name', 'before' => '<td>', 'after' => '</td>', 'between' => '</td><td>', 'type'=>'select','options'=>$clubs));
?>
<tr>
<?php echo $this->Form->input('password', array( 'before' => '<td>', 'after' => '</td>', 'between' => '</td><td>'));
?>
</tr>
</table>
</fieldset>
<?php echo $this->Form->end(__('Login')); ?>
</div>
/App/Controller/AppController.php
public $components = array(
'Session',
'Auth' => array(
'authenticate' => array(
'Form' => array(
'userModel' => 'Club',
'fields' => array(
'username' => 'id',
'password' => 'password'
)
)
),
'loginRedirect' => array('controller' => 'clubs', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home'),
'loginAction' => array('admin' => false, 'controller' => 'clubs', 'action' => 'login')
),
'DebugKit.Toolbar'
);
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('logout', 'display');
}
/App/Controller/ClubsController.php
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirectUrl());
}
else {
$this->Session->setFlash(__('Invalid club or password, try again.', 'default', array(), 'auth'));
$this->set('clubs', $this->Club->find(
'list', array(
'fields' => array('club_name'),
'conditions' => array('status' => '2')
)
)
);
}
}
else {
$this->set('clubs', $this->Club->find(
'list', array(
'fields' => array('club_name'),
'conditions' => array('status' => '2')
)
)
);
}
}
public function logout() {
$this->Session->setFlash(__('You have been logged out.'));
$this->redirect($this->Auth->logout());
}
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('add', 'login', 'index', 'logout', 'view');
}