次にログイン機能を作成します。Symfonyはmoduleという単位で1つの機能を実装しますので、まずはmoduleを作成します。PHPの記述は「アプリケーション → モジュール」の順番で記述します。
php symfony init-module frontend login
それでは最初にログイン画面の土台を作成します。そのためには「apps/frontend/module/login/templates/indexSuccess.php」というファイルを、以下のように編集します。
【apps/frontend/modules/login/templates/indexSuccess.php】
<h1>Login</h1>
<?php echo form_tag("login/auth") ?>
<p><?php echo input_tag("uname") ?></p>
<p><?php echo input_password_tag("upass") ?></p>
<p><?php echo submit_tag("login")?></p>
</form>
ここで用いているinput_tagやform_tagがフォームヘルパーと呼ばれるものです。これにより、煩雑なフォームタグやinputタグを記述する必要がなくなっています。ここでは、submitボタンが押された時にloginモジュールのauthアクションに遷移する、というように記述しています。
次に、「apps/login/module/login/actions.class.php」にログインの処理を追加します。以下のメソッドを書き足してください。Symfonyでの通常のアクションはexecuteアクション名です。
【apps/login/module/login.actions.class.php】
public function executeAuth()
{
//ユーザ名とパスワードを取得する
$uname = $this -> getRequestParameter("uname");
$upass = $this -> getRequestParameter("upass");
//条件を作成する
$criteria = new Criteria();
$criteria -> add(UserPeer::UNAME,$uname);
$criteria -> addAnd(UserPeer::UPASS,$upass);
//DBに問い合わせをする
$auth = UserPeer::doSelect($criteria);
if(count($auth) == 1){
$this -> redirect("meibo/list");
}else{
$this -> redirect("login/index");
}
}
|