CakePHP5入門【コラム⑭】linkとpostLink
A子
元の「デフォルト画像」に戻したいときって、(現状)ワンクリックでは無理だよね?
B美
Webサーバ上での操作が必要になるかな
C菜
(「確認ダイアログ」付きで~)
A子
(問答無用で変更しちゃうと、「うっかり」が発生したときに困るしね(苦笑))
C菜
「templates/Users」の中にある「change_image.php」内にコードを追加しますね~
A子
…って、エラーだ!
何で?
C菜
B美
「postLink」の箇所を「link」に変更するだけで、問題なく動くわよ
それ以外は何も変えずに…
A子
問い合わせのダイアログって、普通のリンクでも出せるの?
B美
あと、「src/Controller」の中にある「UsersController.php」だけど、勝手に「defaultImage」メソッドを追加しといたから…
|
public function defaultImage($id = null)
{ $this->copyImage($id); return $this->redirect(['controller' => 'Top', 'action' => 'index']); } |
まぁ、親クラス(AppController)で定義している「copyImage」メソッドを呼び出してるだけなんだけど…
↓
↓
C菜
それにしても、なぜ「postLink」ではダメだったのでしょうか~?
B美
「postLink」を使うと、勝手にformタグを補完する(埋め込む)のよ
A子
さっきのコードってformタグの内側に書いたから、formの中にformが入れ子で存在する形になっちゃったんだ
そりゃエラーになるわな(苦笑)
C菜
(「link」と「postLink」の~)
B美
…ってことは、(この場合)本来ならば「postLink」を使うべきなのよね
(GoogleのクローラなんかがGETリクエストしてくるかもしれないし…)
A子
その言い方だと、(「postLink」の利用は)難しいってことかな?
B美
なにしろ、このページにはすでにformタグが存在しているからね
C菜
B美
| https://192.168.1.205/authapp/users/default-image/1 |
あ、C菜のアカウントで試してみてね
(C菜のidは「3」だけど…)
C菜
何も起こりませんけど~
A子
私のアイコン画像が勝手にデフォルトに戻ってるじゃん
B美
…ってなわけで、「UsersController.php」の「defaultImage」メソッドはこう書くべきなのよ
|
public function defaultImage()
{ $this->copyImage($this->identity->id); return $this->redirect(['controller' => 'Top', 'action' => 'index']); } |
C菜
(GETパラメータを渡さないように~)
B美
「postLink」が使えたならば、最初のコードでも良かったんだけどね(苦笑)
A子
GETリクエストって、URL内にパラメータ(引数)を指定できるから(直接操作される可能性があって)怖いってことか…
てか、私のアイコン画像設定を(勝手に)実験で使わないでよ(怒)


