TOPシステム開発> ログイン画面の作成
Symfony
PHP開発の秘訣フレームワーク活用術

第2回:Symfonyを例にしたフレームワークを使ったPHP開発

著者:オープンドリーム  三宅 泰裕   2007/5/31
前のページ  1  2  3
ログイン画面の作成

   次にログイン機能を作成します。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");
}
}


仕上げ、ユーザ管理画面の作成

   ログインの機能も実装することができました。しかし、まだlogin/indexにアクセスしてもモジュール作成画面のままなので、以下のようにします。

public function executeIndex()
  {
 //ここをコメントアウトしてしまいます。
    //$this->forward('default', 'module');
  }

   これらを修正したあと、キャッシュをクリアすると画面は表示されます。しかしデータベース上にデータが登録されていないので、ログイン処理は機能していません。

   そこで、AdminGeneratorを使用して、userテーブルをWebブラウザ上で管理する画面を作成します。コマンドプロンプトもしくはターミナルを用いて次のコマンドを実行し、Webブラウザからアクセスします。

php symfony propel-init-admin frontend admin User

http://あなたのサーバ/sf_sandbox/web/admin

管理画面を作成する
図4:管理画面を作成する
(画像をクリックすると別ウィンドウに拡大図を表示します)

   Webブラウザからデータを登録すると、Symfonyアプリケーションは無事に動き出します。

   駆け足で説明しましたが、いかがでしたか。Symfonyの機能はこれだけではありません。Symfonyは素晴らしい機能を持っています。ぜひSymfonyの機能がどのようなものがあるのかを調べていただいて、そこからより素晴らしいPHPによるアプリケーション開発に昇華させてもらえばと思います。


PHPフレームワーク開発のメリットとデメリット

   連載の最後に、PHPフレームワーク開発のメリットとデメリットを簡単に説明しましょう。PHPフレームワーク開発のメリットは「覚えてしまえば高速に開発ができる」ということです。フレームワークを利用することで、開発の立ち上げから最初のアウトプットまでのスパンは飛躍的にはやくなります。

   しかし、フレームワーク開発の習得には結構な労力を要します。これは明らかなデメリットですが、しっかりと教育をする、もしくは学習をすることによってフレームワークを学んでしまえば、より効率的で合理的な開発手段が手に入るとも確かです。

   実際に筆者はフレームワークの枠を越えた開発をして、フレームワークのメリットがまったく活かされず、余計にややこしくなったという例を体験しました。しかし、それはしっかり学べば起こりえないことなのです。

   皆さんもこの機会にぜひフレームワークの学習をはじめてみるとことをお勧めします。

前のページ  1  2  3


株式会社オープンドリーム チーフトレーナー 三宅 泰裕
著者プロフィール
株式会社オープンドリーム  チーフトレーナー  三宅 泰裕
Western Institute of Technology at Taranaki卒業。
プログラムはVisual Basicからという意外と今時なプログラマで、現在は主に教育を担当する現役講師。趣味もプログラミングというから、随分重傷。PHPに出会い、Linux、そしてオープンソースに魅せられる。そして、Ajaxだ!と思った時にばたりとSymfonyに出会いアジャイルの虜に。Ruby on Railsを始め色々なWebアプリケーションフレームワークをつまみ食いしては、自社の開発案件や教育事業に活かしている。「技術を楽しめる教育の創造」をモットーに奮闘中。


INDEX
第2回:Symfonyを例にしたフレームワークを使ったPHP開発
  Symfonyの特徴とインストール方法
  実際にSymfonyを使ってみる
ログイン画面の作成