閲覧総計:2568 (本日:1 昨日:0) CakePHPの入門者トレーニングとして、gihyo.jpサイトの「CakePHPで高速Webアプリ開発」 【目次】(項目をクリックすると、そこに飛べます) 入力フォームを作る †(原典)http://gihyo.jp/dev/serial/01/cakephp/0006?page=1 /cake/app/view/index.ctpに入力フォームのコードを追加します。 <form action="<?php echo h($html->url('/tasks/add')) ?>" method="post" style="margin-bottom:1em"> <p><?php echo $form->input('Task.content', array('type'=>"text", 'label'=>"")) ?> <?php echo $form->submit('タスクを追加') ?></p> </form> <table> <tr> <th>Id</th> <th>タスク内容</th> <th>状態</th> <th>作成日</th> </tr> <?php foreach ($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 h($task['Task']['created']) ?></td> </tr> <?php } ?> </table> ●CakePHP1.2では、入力フォーム回りの書式が変わりました。 <1.1書式> <form action="<?php echo h($html->url('/tasks/add')) ?>" method="post" style="margin-bottom:1em"> <p><?php echo $html->input('Task/content') ?> <?php echo $html->submit('タスクを追加') ?></p> </form> <1.2書式> <form action="<?php echo h($html->url('/tasks/add')) ?>" method="post" style="margin-bottom:1em"> <p><?php echo $form->input('Task.content', array('type'=>"text", 'label'=>"")) ?> <?php echo $form->submit('タスクを追加') ?></p> </form> ●CakePHP1.2からはFormヘルパーの<form>タグ回りの機能が強化され以下の表現で書ける (参考)<1.2書式> <?php echo $form->create('Task', array('type'=>"post", 'style'=>"margin-bottom:1em")); echo $form->input('content', array('type'=>"text")); echo $form->end('タスクを追加'); ?> http://localhost/cake/tasks/にアクセスした画面 addアクションを追加する †(原典)http://gihyo.jp/dev/serial/01/cakephp/0006?page=2 controllerにaddアクションを追加します。 /cake/app/controllers/tasks_controller.php <?php // app/controllers/tasks_controller.php class TasksController extends AppController { //AppControllerを継承 var $name = 'Tasks'; //controller名を定義(頭が大文字を覚える) var $uses = array('Task'); //使用するmodel名を定義 function index() { //indexアクションの定義 $this->set('tasks', $this->Task->find('all', array('order'=>'Task.created ASC'))); //モデルTaskのデータ全てを変数tasksに格納しビューに渡す } function add() { if (!empty($this->data)) { //モデルへの値が渡されてきているかチェック if ($this->Task->save($this->data, true, array('content', 'created', 'modified'))) { //DBへのレコード追加、saveの第3引数でホワイトリスト設定をした $this->flash('タスクが追加されました', '/tasks'); //flashで簡易な完了メッセージ表示 return; } } $this->redirect('/tasks'); //$this->dataに値がないか,saveに失敗したときはtasksへリダイレクト } } タスクを追加してみよう †●完了メッセージが表示されるので,メッセージ上のリンクを辿る |