ToDoアプリ(3/5)をトレースしてみた
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
閲覧総計:&counter(); (本日:&counter(today); 昨日...
CakePHPの入門者トレーニングとして、gihyo.jpサイトの「Cake...
がすばらしい。しかし、このサンプル例題はCakePHP1.1で解説...
では少し異なるコード表現になりそうな所がある。
サンプル例題「ToDoアプリ」をCakePHP1.2でトレースしてみた...
【目次】(項目をクリックすると、そこに飛べます)
#contents
~
*コントローラへのアクションの追加 [#ec612bc4]
(原典)http://gihyo.jp/dev/serial/01/cakephp/0006?page=1
tasks_controller.phpのindexアクションの修正とdone, edit, ...
/cakephp/app/controllers/tasks_controller.php
<?php
// app/controllers/tasks_controller.php
class TasksController extends AppController { //AppContr...
var $name = 'Tasks'; //controller名を定義(頭が大文字...
var $uses = array('Task'); //使用するmodel名を定義
function index() { //indexアクションの定義
$this->set('yet_tasks', $this->Task->findAllByStatus...
$this->set('done_tasks', $this->Task->findAllByStatu...
}
function add() {
if (!empty($this->data)) { //モデルへの値が渡されて...
if ($this->Task->save($this->data, true, array('co...
//DBへのレコード追加、saveの第3引数でホワイトリ...
$this->flash('タスクが追加されました', '/tasks');
//flashで簡易な完了メッセージ表示
return;
}
}
$this->redirect('/tasks'); //$this->dataに値がないか...
}
function done($id) {
if ($this->Task->findById($id)) {
$this->Task->id = $id;
$this->Task->save(array('status' => 'done'));
}
$this->redirect('/tasks');
}
function edit($id) {
$task = $this->Task->findById($id);
if (!$task) {
$this->redirect('/tasks');
return;
}
if (!empty($this->data)) {
$task['Task']['content'] = $this->data['Task']['co...
$this->Task->save($task);
$this->redirect('/tasks'); //saveが完了したらtasks...
}
$this->set('task', $task);
}
function del($id) {
$this->Task->del($id);
$this->redirect('/tasks');
}
}
*indexビューの修正 [#z2f49422]
index.ctpを修正します。
/cakephp/app/views/tasks/index.ctp
<form action="<?php echo h($html->url('/tasks/add')) ?>"...
<p><?php echo $form->input('Task.content', array('type'=...
<?php echo $form->submit('タスクを追加') ?></p>
</form>
<h2>未完了タスク</h2>
<table>
<tr>
<th>Id</th>
<th>タスク内容</th>
<th>状態</th>
<th>操作</th>
<th>作成日</th>
</tr>
<?php foreach ($yet_tasks as $task) { ?>
<tr>
<td><?php echo h($task['Task']['id']) ?></td>
<td><?php echo h($task['Task']['content']) ?></td>
<td><?php echo h($task['Task']['status']) ?></td>
<td>
<?php echo $html->link('完了', '/tasks/done/' . ...
<?php echo $html->link('編集', '/tasks/edit/' . ...
<?php echo $html->link('削除', '/tasks/del/' ....
</td>
<td><?php echo h($task['Task']['created']) ?></td>
</tr>
<?php } ?>
</table>
<h2>完了タスク</h2>
<table>
<tr>
<th>Id</th>
<th>タスク内容</th>
<th>状態</th>
<th>操作</th>
<th>作成日</th>
</tr>
<?php foreach ($done_tasks as $task) { ?>
<tr>
<td><?php echo h($task['Task']['id']) ?></td>
<td><?php echo h($task['Task']['content']) ?></td>
<td><?php echo h($task['Task']['status']) ?></td>
<td><?php echo $html->link('削除', '/tasks/del/' ....
<td><?php echo h($task['Task']['created']) ?></td>
</tr>
<?php } ?>
</table>
*editビューの作成 [#uacd31f5]
edit.ctpを作成します。
/cakephp/app/views/tasks/edit.ctp
<h1>タスクの編集</h1>
<p><a href="<?php echo h($html->url('/tasks')); ?>">タス...
<form action="<?php echo h($html->url('/tasks/edit/' . $...
<?php echo $form->hidden('Task.id', array('value' => $ta...
<h2>内容</h2>
<p><?php echo $form->textarea('Task.content', array('col...
<p><input type="submit" value="保存"></p>
</form>
●CakePHP1.2では、<form>タグ周りのメソッドがHtmlヘルパーか...
に移動となり、書式も少し変更になっています。
<1.1書式>
<form action="<?php echo h($html->url('/tasks/edit/' . $...
<?php echo $html->hidden('Task/id', $task['Task']['id'])...
<h2>内容</h2>
<p><?php echo $html->textarea('Task/content', array('col...
<p><input type="submit" value="保存"></p>
</form>
<1.2書式>
<form action="<?php echo h($html->url('/tasks/edit/' . $...
<?php echo $form->hidden('Task.id', array('value' => $ta...
<h2>内容</h2>
<p><?php echo $form->textarea('Task.content', array('col...
<p><input type="submit" value="保存"></p>
</form>
*修正したアプリケーションの動作を確認する [#r8fa8fe7]
(原典)http://gihyo.jp/dev/serial/01/cakephp/0006?page=3
●完了と未完了タスクが分離された一覧表示
&ref(LH_cake_tasks2段表示画面.JPG);
●完了と削除のリンク選択時に確認メッセージが表示される
&ref(LH_cake_tasks確認メッセージ画面.JPG);
●Edit(編集)アクションのビュー
&ref(LH_cake_tasks編集画面.JPG);
- http://www.cybermondaydeals.in.net http://www.michaelk...
- http://www.marcjacobs.us.com/ http://www.designerhandba...
#comment_nospam
#vote(参考になった[11],ふつう[0],参考にならなかった[0])
終了行:
閲覧総計:&counter(); (本日:&counter(today); 昨日...
CakePHPの入門者トレーニングとして、gihyo.jpサイトの「Cake...
がすばらしい。しかし、このサンプル例題はCakePHP1.1で解説...
では少し異なるコード表現になりそうな所がある。
サンプル例題「ToDoアプリ」をCakePHP1.2でトレースしてみた...
【目次】(項目をクリックすると、そこに飛べます)
#contents
~
*コントローラへのアクションの追加 [#ec612bc4]
(原典)http://gihyo.jp/dev/serial/01/cakephp/0006?page=1
tasks_controller.phpのindexアクションの修正とdone, edit, ...
/cakephp/app/controllers/tasks_controller.php
<?php
// app/controllers/tasks_controller.php
class TasksController extends AppController { //AppContr...
var $name = 'Tasks'; //controller名を定義(頭が大文字...
var $uses = array('Task'); //使用するmodel名を定義
function index() { //indexアクションの定義
$this->set('yet_tasks', $this->Task->findAllByStatus...
$this->set('done_tasks', $this->Task->findAllByStatu...
}
function add() {
if (!empty($this->data)) { //モデルへの値が渡されて...
if ($this->Task->save($this->data, true, array('co...
//DBへのレコード追加、saveの第3引数でホワイトリ...
$this->flash('タスクが追加されました', '/tasks');
//flashで簡易な完了メッセージ表示
return;
}
}
$this->redirect('/tasks'); //$this->dataに値がないか...
}
function done($id) {
if ($this->Task->findById($id)) {
$this->Task->id = $id;
$this->Task->save(array('status' => 'done'));
}
$this->redirect('/tasks');
}
function edit($id) {
$task = $this->Task->findById($id);
if (!$task) {
$this->redirect('/tasks');
return;
}
if (!empty($this->data)) {
$task['Task']['content'] = $this->data['Task']['co...
$this->Task->save($task);
$this->redirect('/tasks'); //saveが完了したらtasks...
}
$this->set('task', $task);
}
function del($id) {
$this->Task->del($id);
$this->redirect('/tasks');
}
}
*indexビューの修正 [#z2f49422]
index.ctpを修正します。
/cakephp/app/views/tasks/index.ctp
<form action="<?php echo h($html->url('/tasks/add')) ?>"...
<p><?php echo $form->input('Task.content', array('type'=...
<?php echo $form->submit('タスクを追加') ?></p>
</form>
<h2>未完了タスク</h2>
<table>
<tr>
<th>Id</th>
<th>タスク内容</th>
<th>状態</th>
<th>操作</th>
<th>作成日</th>
</tr>
<?php foreach ($yet_tasks as $task) { ?>
<tr>
<td><?php echo h($task['Task']['id']) ?></td>
<td><?php echo h($task['Task']['content']) ?></td>
<td><?php echo h($task['Task']['status']) ?></td>
<td>
<?php echo $html->link('完了', '/tasks/done/' . ...
<?php echo $html->link('編集', '/tasks/edit/' . ...
<?php echo $html->link('削除', '/tasks/del/' ....
</td>
<td><?php echo h($task['Task']['created']) ?></td>
</tr>
<?php } ?>
</table>
<h2>完了タスク</h2>
<table>
<tr>
<th>Id</th>
<th>タスク内容</th>
<th>状態</th>
<th>操作</th>
<th>作成日</th>
</tr>
<?php foreach ($done_tasks as $task) { ?>
<tr>
<td><?php echo h($task['Task']['id']) ?></td>
<td><?php echo h($task['Task']['content']) ?></td>
<td><?php echo h($task['Task']['status']) ?></td>
<td><?php echo $html->link('削除', '/tasks/del/' ....
<td><?php echo h($task['Task']['created']) ?></td>
</tr>
<?php } ?>
</table>
*editビューの作成 [#uacd31f5]
edit.ctpを作成します。
/cakephp/app/views/tasks/edit.ctp
<h1>タスクの編集</h1>
<p><a href="<?php echo h($html->url('/tasks')); ?>">タス...
<form action="<?php echo h($html->url('/tasks/edit/' . $...
<?php echo $form->hidden('Task.id', array('value' => $ta...
<h2>内容</h2>
<p><?php echo $form->textarea('Task.content', array('col...
<p><input type="submit" value="保存"></p>
</form>
●CakePHP1.2では、<form>タグ周りのメソッドがHtmlヘルパーか...
に移動となり、書式も少し変更になっています。
<1.1書式>
<form action="<?php echo h($html->url('/tasks/edit/' . $...
<?php echo $html->hidden('Task/id', $task['Task']['id'])...
<h2>内容</h2>
<p><?php echo $html->textarea('Task/content', array('col...
<p><input type="submit" value="保存"></p>
</form>
<1.2書式>
<form action="<?php echo h($html->url('/tasks/edit/' . $...
<?php echo $form->hidden('Task.id', array('value' => $ta...
<h2>内容</h2>
<p><?php echo $form->textarea('Task.content', array('col...
<p><input type="submit" value="保存"></p>
</form>
*修正したアプリケーションの動作を確認する [#r8fa8fe7]
(原典)http://gihyo.jp/dev/serial/01/cakephp/0006?page=3
●完了と未完了タスクが分離された一覧表示
&ref(LH_cake_tasks2段表示画面.JPG);
●完了と削除のリンク選択時に確認メッセージが表示される
&ref(LH_cake_tasks確認メッセージ画面.JPG);
●Edit(編集)アクションのビュー
&ref(LH_cake_tasks編集画面.JPG);
- http://www.cybermondaydeals.in.net http://www.michaelk...
- http://www.marcjacobs.us.com/ http://www.designerhandba...
#comment_nospam
#vote(参考になった[11],ふつう[0],参考にならなかった[0])
ページ名: