PHPのRuby on Railsクローンのフレームワーク Akelos PHPをいじってみた出来事のメモ。

Akelosをいじってみるメモ帳

Akelos PHP Blogチュートリアル一覧(全18記事)
Akelos PHP ユーザ認証チュートリアル一覧(全19記事)

2008年09月02日

Akelosユーザ認証チュートリアル 17.Viewの編集

さぁ、ラストスパートです。
コントローラの各アクションに対応したViewつまり、html生成部分を書きます。
scaffoldでAccountコントローラを作りましたので、listing、show、add、create、edit、destroyの各アクションに対応したViewはある程度、自動生成されています。
逆にそれ以外のアクションに関しては自分で書く必要がありますが、scaffoldが自動生成してくれた上記のアクションのコードを元にしていきながら、書いていきましょう。

Viewは下記のディレクトリに配置されています。
C:\xampp\htdocs\projects\blog\app\views\account\
ここには各アクションに対応したテンプレートがあります。

また、共通のレイアウトファイルとして
C:\xampp\htdocs\projects\blog\app\views\layouts\account.tpl
が作られています。

今回はレイアウトはいじりませんので、各アクションに対応したテンプレートのほうを修正します。


まず、 _form.tpl を開きます。
これはアクション毎のテンプレートから内部呼び出しされる、共通のフォームテンプレートです。

saltに対応した部分が中央にありますが、saltはモデル側で生成されるものなので必要ありません。
消しましょう。
変わりにパスワードの再入力枠を作る必要があります。
また、パスワード入力部分はパスワード型のフォームになおします。

これらを反映させた変更後の内容を、以下に示します。

<%= error_messages_for 'user' %>


<p>
<label for="user_name">_{Name}</label><br />
<%= input 'user', 'name' %>
</p>

<p>
<label for="user_passwd">_{Passwd}</label><br />
<%= password_field 'user', 'passwd' %>
</p>

<p>
<label for="user_passwd_confirmation">_{passwd confirmation}</label><br />
<%= password_field 'user', 'passwd_confirmation' %>
</p>

<p>
<label for="user_email">_{Email}</label><br />
<%= input 'user', 'email' %>
</p>

<p>
<label for="user_is_enable">_{Is enable}</label><br />
<%= input 'user', 'is_enable' %>
</p>

これは管理者用画面で使われますが、これをベースにコピペしていく形になると思います。

これを使うのはadd.tpl等です。add.tpl側は今回は修正ありませんが、呼び出しをしているところは見ておきましょう。

次に修正するのは delete.tpl です。
これは標準では生成してくれていませんので、中身はエラーになっています。
最初に書いてある内容は消して、自動生成してくれたdestroy.tplを参考に、内容を入れます。
下記に内容を示します。

<div id="sidebar">
<h1>_{Tasks}:</h1>
<ul>
<li><%= link_to _('Back to user index'), :action => 'index' %></li>
</ul>
</div>

<div id="content">
<h1>_{Users}</h1>

<p>_{Are you sure you want to delete this User?}</p>
<%= start_form_tag :action => 'delete' %>
<%= confirm_delete %>
</form>
</div>


続いて index.tpl です。
indexでは各機能へのリンクだけを取りあえず表示します。
下記に内容を示します。

<div id="sidebar">
<h1>_{Tasks}:</h1>
<ul>
<li><%= link_to _('Back to user index'), :action => 'index' %></li>
</ul>
</div>

<div id="content">
<h1>_{Account Page Index}</h1>

<p><%= link_to _('Login page'), :action =>'login' %></p>
<p><%= link_to _('New regist page'), :action =>'regist' %></p>
<p><%= link_to _('Remind password page'), :action =>'remind' %></p>
<p><%= link_to _('New regist page'), :action =>'regist' %></p>

<h1>_{Account Page Index}</h1>
<p><%= link_to _('Logout'), :action =>'logout' %></p>
<p><%= link_to _('Modify account profile'), :action =>'modify' %></p>
<p><%= link_to _('Delete account'), :action =>'delete' %></p>

<h1>_{Admin Page Index}</h1>
<p><%= link_to _('Userlist'), :action =>'listing' %></p>


</div>

ここではとりあえず、ログイン後じゃないと扱えないもの、管理者じゃないと扱えないものもリンクしています。
後で表示の制御を入れるか考えます。


続いてログイン用ページ login.tpl を開いてください。
IDとパスワードの入力枠を用意します。
下記に内容を示します。

<div id="sidebar">
<h1>_{Tasks}:</h1>
<ul>
<li><%= link_to _('Back to user index'), :action => 'index' %></li>
</ul>
</div>

<div id="content">
<h1>_{Users}</h1>

<p>_{Account Logout}</p>
<%= start_form_tag :action => 'login' %>
<p>
<label for="user_email">_{Email}</label><br />
<%= input 'user', 'email' %>
</p>
<p>
<label for="user_passwd">_{Passwd}</label><br />
<%= password_field 'user', 'passwd' %>
</p>
</form>
</div>



続いてログアウト用ページ logout.tpl を開いてください。
ここに来るときは既にログアウトしているはずですが、一応リンクを入れておきます。
下記に内容を示します。

<div id="sidebar">
<h1>_{Tasks}:</h1>
<ul>
<li><%= link_to _('Back to user index'), :action => 'index' %></li>
</ul>
</div>

<div id="content">
<h1>_{Users}</h1>

<p><%= link_to _('Logout'), :action =>'logout' %></p>
</form>
</div>


続いて、アカウント情報修正用ページ modify.tpl を開いてください。
下記に内容を示します。

<div id="sidebar">
<h1>_{Tasks}:</h1>
<ul>
<li><%= link_to _('Back to user index'), :action => 'index' %></li>
</ul>
</div>

<div id="content">
<h1>_{Users}</h1>

<%= start_form_tag :action => 'modify' %>

<div class="form">
<h2>_{Editing User}</h2>
<%= render :partial => 'form' %>
</div>

<div id="operations">
<%= save %> <%= cancel %>
</div>

</form>
</div>

ここでは最初に編集した_form.tplを利用しています。
このように定型的に使うフォームなどは再利用し、フォームの内容修正が統一的に行われるようにします。


次は、アカウント登録用ページ regist.tpl を開いてください。
下記に内容を示します。

<div id="sidebar">
<h1>_{Tasks}:</h1>
<ul>
<li><%= link_to _('Back to user index'), :action => 'index' %></li>
</ul>
</div>

<div id="content">
<h1>_{Users}</h1>

<%= start_form_tag :action => 'regist' %>

<div class="form">
<h2>_{User Profile}</h2>
<%= render :partial => 'form' %>
</div>

<div id="operations">
<%= save %> <%= cancel %>
</div>

</form>
</div>

ここも同じように_form.tplを使っています。
先ほど編集したmodify.tplとはメッセージが異なるだけです。
再利用が効いてるわけです。



次は、アカウント登録用ページ remind.tpl を開いてください。
下記に内容を示します。

<div id="sidebar">
<h1>_{Tasks}:</h1>
<ul>
<li><%= link_to _('Back to user index'), :action => 'index' %></li>
</ul>
</div>

<div id="content">
<h1>_{Users}</h1>

<%= start_form_tag :action => 'remind' %>

<div class="form">
<h2>_{User Profile Regist}</h2>
<p>
<label for="user_email">_{Email}</label><br />
<%= input 'user', 'email' %>
</p>
</div>

<div id="operations">
<%= save %> <%= cancel %>
</div>

</form>
</div>



最後に、アカウント登録後に表示するWelcomeページ welcome.tpl を開いてください。
下記に内容を示します。

<div id="sidebar">
<h1>_{Tasks}:</h1>
<ul>
<li><%= link_to _('Back to user index'), :action => 'index' %></li>
</ul>
</div>

<div id="content">
<h1>_{Users}</h1>

<h2>_{Thank you for regist!}</h2>
<p>
<%= link_to _('Back to user index'), :action => 'index' %>
</p>
</form>
</div>
posted by AMUAMU at 22:35| Comment(0) | TrackBack(0) | チュートリアル | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/105920107

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。