CakePHP+SmartyでのpostLink使用上の注意
はじめに
私のような人が今後出ないようにメモしておきます。
ちなみに私はPHPはほぼ初心者なので、上級者の方はこんなことでは躓かない…のかもしれません。
確認ダイアログを出した上で選択されたレコードを削除して」と言われたので…
CakePHPにはFormHelper::postLink()メソッドというものがあります。
参考になる記事はこちら。
その記事の中で以下の通り例があったわけです。
<?php echo $this->Form->postLink('Submit', array('controller' => 'Hoges', 'action' => 'complete'), array('data' => $data)); ?>
第2引数で、連想配列でControllerとActionを指定、第3引数ではFormのデータおよびaタグのattributeをやはり連想配列で指定するようになっています。
というわけで以下みたいに作ったところ…PhpStorm上でエラー発生。
{$this->Form->postLink('削除',
array('controller' => 'ProgressList', 'action' => 'delete'),
array('data' => $project_id, 'class' => 'btn2', 'style' => 'background: red; font-weight: normal; text-decoration: none'),
'削除してよろしいでしょうか?')}
まぁこれは理由は簡単で、Smartyのtpl内ではPHPの関数がそのまま使えないんでエラーになってしまっていたわけです(私はしばらく気が付きませんでしたが)
気を取り直して、array関数を使っていたところをリテラルで書き直して、これでいける…と思いきや、第3引数から作られるはずのhidden属性のinputタグが作られない…。
{$this->Form->postLink('削除',
['controller' => 'ProgressList', 'action' => 'delete'],
['data' => $project_id, 'class' => 'btn2', 'style' => 'background: red; font-weight: normal; text-decoration: none'],
'削除してよろしいでしょうか?')}
ここの説明だと、第3引数にdataというキーの連想配列のレコードを作っておくとhidden属性のinputタグが作られるはずなのに…。
頭を抱えること小一時間、記事を読んでようやく第3引数にはdataというキーでFormデータを格納しなくてはならないことにようやく気付く。
そしてようやくたどり着いたのが↓
{$this->Form->postLink('削除',
['controller' => 'ProgressList', 'action' => 'delete'],
['data' => ["project_id" => $project_id], 'class' => 'btn2', 'style' => 'background: red; font-weight: normal; text-decoration: none'],
'削除してよろしいでしょうか?')}
まとめ
すげー時間かかった…。
とりあえず次回同じことでハマらないようにしたいです…。
Author And Source
この問題について(CakePHP+SmartyでのpostLink使用上の注意), 我々は、より多くの情報をここで見つけました https://qiita.com/myzktkyk/items/a277f80d865ebb3fd5cf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .