###質問概要
表題の通り、CakePHP3のフォームでないGETで受け取ったパラメータのDB追加の書き方が知りたく、
質問させて頂きます。
フォームによるPOST、GETのパラメータのDB追加の書き方は教科書などにも載っているのですが、メールの本文に書かれているようなリンクをクリックすることによってGETでパラメータを渡しDBに追加するという処理をリンク先のページで済ませる書き方についてそもそもCakePHP3の情報が少なく、ご指摘頂きたく存じ上げます。
知っている方がいれば、ご指摘頂ければ大変助かります。
よろしくお願いします。
###前提条件
- DBについて
CakePHPのDB接続は既に済んでいる上で、
hogehogesというテーブルに
idというA_I_のINTカラム、
次にnameというTEXTカラムを設定してあると仮定します。
- リンクについて
http://hoge.co.jp/cake/hogehoges/test?name=suzuki
というリンクがメール本文にあるとさせてもらいます。
- Templateについて
CakePHP
1test.ctp 2 3<!---必要があればここにも処理を書きたい---> 4<div class="content"> 5DB追加が完了しました。 6</div> 7
- Controllerについて
CakePHP
1hogehogesController.php 2 3<?php 4namespace App\Controller; 5use Cake\ORM\TableRegistry; 6 7class HogehogesController extends AppController { 8 public function initialize(){ 9 $this->name = 'Hogehoges'; 10 $this->viewBuilder()->autoLayout(true); 11 $this->viewBuilder()->layout('hogehoges'); 12 } 13 public function index(){ 14} 15 public function test(){ 16//必要があればここに処理を書きたい 17$hogeVal = $this->request->query('hoge'); 18$table = TableRegistry::get('hogehoges'); 19$newData = $table->newEntity(); 20$newData->hoge = $hogeVal; 21$table->save($newData); 22} 23} 24
- モデルについて
TableフォルダにHogehogesTable.php
EntityフォルダにHogehoge.php
というファイルをそれぞれ、内容も問題なく用意してあると仮定させてもらいます。
###自分で調べたこと
上記でも触れた通り、自分の持っている教科書では、Formを通じてのパラメータのカラム追加しか書いておらず、また検索エンジンで調べたところ、そもそもCakePHP3の記事が少なく、あったとしてもPOSTパラメータの記事が多く参考になりそうなものは見当たりませんでした。
$this->request->queryでGETパラメータを取得する、というところまでは辿り着きましたが、
肝心のDB追加ができません。
ただ、教科書を熟読していて気がついたのは、
POSTによるページ遷移の受け渡し等では、
テンプレート側に$this->Form->create($entity・・・
コントローラ側に$this $this->set('entity',$this->Reviewresults->newEntity());・・・
といったページ遷移前にフォームとエンティティを関連づける処理が書かれており、
この点が、リンクをクリックする仕様では、そのままでは書けず、つまづいている原因になっていると考えています。
もしご存知の方がいれば、ご指摘頂ければ有り難いです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/03 03:19