$scaffoldを試してみる(CakePHP修行 #009)
June 26, 2007 12:31 AM written by Gen Taguchi

さてCakePHPのお勉強。前回までのあらすじはこちら。

» CakePHP修行! アーカイブ | i d e a * i d e a

さて前回「bake.php=面倒」ということがわかったので(かなり個人的な主観)、今回は$scaffoldをControllerに足す方法を試します。

■ 下準備

試しにやるだけなのでUsersモデルだけでやってみます。イメージでは作業は以下の通り。

  • /app/models/user.phpをつくる
  • /app/controllers/users_controller.phpを作って$scaffoldを追加。
  • /users/にアクセスすれば追加・削除・編集の画面ができているはず!(かな?)

では期待どおりになるかどうか・・・ドキドキしながらやってみます。

■ Usersモデルを作成

/app/models/user.phpを次のように作成。モデルは単数か、覚えないと。まず一つを定義するから、とか覚えておこう。

<?php
class User extends AppModel
{
    var $name = 'User';
}

↑ こんな感じ。最後の「?>」は書かない派ですw。

■ コントローラーをつくるぞ

/app/controllers/users_controller.phpを作ります。こちらは複数ね。

<?php
class UsersController extends AppController
{
    var $name = 'Users';
    var $scaffold;
}

さぁ、これでいいのでしょうかねぇ・・・。できたのか試してみます。

■ /usersにアクセスしてみる

さて・・・と、http://www.codexcode.com/users/にアクセスしてみます。

scaf_1.gif

↑ キターーーーーーー・・・・Warningかよ・・・orz。

前回/app/tmpに777のPermissionを与えましたが、これ、下位フォルダもそうしないとだめっぽかったっすね(つか、当然ですね・・・)。「chmod -R 777 /app/tmp」で解決。

scaf_2.gif

↑ きれいになりました。

なーるほど、これは便利ですね。Viewを書く手間が一気に減りました。うーん、便利かも。

それからマニュアルによるとViewのカスタムも簡単なようです。しかもすべてのモデルに共通するViewも作れるみたい。

各モデルごとなら以下を追加。

/app/views/users/scaffold/index.scaffold.thtml
/app/views/users/scaffold/edit.scaffold.thtml
/app/views/users/scaffold/show.scaffold.thtml
/app/views/users/scaffold/new.scaffold.thtml

すべてのモデルに共通するViewなら以下を追加。

/app/views/scaffold/index.scaffold.thtml
/app/views/scaffold/edit.scaffold.thtml
/app/views/scaffold/show.scaffold.thtml
/app/views/scaffold/new.scaffold.thtml

ちょっと試してみようかと思いましたが、まぁ、将来的に必要になったらやればいいや、ということでScaffoldの実験はこれでおしまい。とりあえずuser_controller.phpから$scaffoldを外しておきます。

さて、やっぱりViewはカスタムで一つずつ作ってみたいので、次回はいよいよ画面のモックアップからViewの設計までいきたいと思います。

この記事のトラックバックURL (トラックバックは承認後に公開されます)

コメント一覧

CakePHPの記事ドキドキしながら読ませていただいてます。
chmodでサブフォルダ含めて再帰的に処理するのであれば、「chmod -R 777 [hoge]」ではなく「chmod -R a+w [hoge]」の方が良いかもです。

a = All User
+ = 追加
w = Write権限

「-R」した場合、フォルダだけでなくファイルも処理しちゃうので、いらないファイルに実行権限付くのもなぁ〜って場合にお使いくださいませ。

by 高田 | 2007年06月26日 07:57

はじめまして。
ちょっとだけ
以前自分もscaffoldのViewをちょっとajax風にしたときがあって、そのときにきづいたんですが、
リファレンスでは確かに 「index.scaffold.thtml」
に という記述になっていますが、正しくは scaffold.****.thtml です。
やらないそうなので、大丈夫っぽいですが一応。

by jakk | 2007年06月26日 09:55

コメント投稿 (コメントは承認後に公開されます)

名前
メールアドレス (表示されませんのでご安心を)
URL
情報保存?
コメント
あわせて読みたい

クリエイティブ・コモンズ・ライセンス

ユーザビリティ向上支援ビービット
Usability tested by BeBit

タブブラウザ Sleipnir 公式ページ(上級者向け)

Powered by
MovableType 3.33-ja

人気ブログランキング - idea*idea
ワード
www.flickr.com
This is a Flickr badge showing photos in a set called 自炊生活. Make your own badge here.