新規登録ページを作成しよう

さて、それでは新規登録ページを作成していきましょう。
現状表示されているのは、scaffoldにより生成された仮のものです。
ここから、あなた好みにカスタマイズしてください。
まずは、新規登録ページのビューであるcreate.ctpを作成します。
説明が遅れましたが、CakePHPではビューの拡張子はctpになります。

<form action="<?php echo $this->Html->url('/Tasks/create'); ?>" method="POST">
タスク名<input type="text" name="name" size="40">
<input type="submit" value="タスクを作成">
</form>
<form action="<?php echo $this->Html->url('/Tasks/create'); ?>" method="POST"> 
タスク名<input type="text" name="name" size="40"> 
<input type="submit" value="タスクを作成">
</form>

formタグのaction属性の中に Htmlヘルパー を使用しており、読みにくいかもしれません。
この$this->Html->url()は、メソッド名の通り、URLを出力してくれます。
わざわざURLを調べてコピペする必要はありませんね。
この場合、Tasksコントローラーのcreateメソッドを呼ぶ、ということになります。

Htmlヘルパーは使わなくても良いのですが、便利なものも多いので、機会があれば調べてみてください。
CakePHP公式ドキュメント -HTMLヘルパー-

createアクションをコントローラーに実装

// app/Controller/TasksController.php
// 省略 
public function create() {
// POSTされた場合のみ処理を行う 
if($this->request->is('post')) {
]
$data = array(
// 渡ってきたデータの中からnameという名前のついた値を取り出す
'name' => $this->request->data['name'] );
// データを登録 
$id = $this->Task->save($data);
$msg = sprintf('タスク %s を登録しました。', $this->Task->id); 
// メッセージを表示してリダイレクト 
$this->Flash->set($msg);
$this->redirect(['controller'=>'tasks','action'=>'index']);
return;
}
// POSTされたデータがなければ普通にcreate.ctpを表示 
$this->render('create');
}
// 省略

多くは前項でも使ったメソッドであるため割愛します。
前項と違うところは、saveFieldではなく、saveでDBに登録することです。
saveFieldは一つのカラムに対して影響を与えることができますが、複数のカラムに影響を与える場合や、INSERTする場合にはsaveメソッドを使用します。
CakePHP公式ドキュメント -データを保存する-

$msg = sprintf(‘タスク %s を登録しました。’, $this->Task->id);
上記のsprintfの引数で渡している$this->Task->idですが、これは「 このコントローラーはTaskモデルに対し、今保存したレコードのidを取得するよう指示している 」ということです。

POSTされたデータがなかったら、つまり、 普通に新規登録ページにアクセスしてきたら 、上記の保存処理は行わずにビューを表示します。

これにて新規登録ページは完成です。

カテゴリー

アーカイブ

Close Bitnami banner
Bitnami