「既存レコードの更新」と「新規レコードの登録」を一つの画面で行いたいのですが、うまくできずに困っております。つまずいているポイントが2箇所ありまして、下記のソース内に
★悩みポイント1★
★悩みポイント2★
というカタチで記載させていただいてます。
もし解決方法をご存知の方がいましたらご教授いただけますと幸いです。
よろしくお願いします。
■cakeのバージョン:2.7
■データベース(テーブル名:hoges)
id | text
1 | りんご 2 | バナナ 3 | スイカ ■Model/Hoge.php ```lang-php <?php class Hoge extends AppModel { } ?> ``` ■View/Hoges/index.ctp ```lang-html <?php echo $this->Form->create('Hoge'); ?> <ul> <!-- すでに登録してあるレコード情報を表示・更新するエリア --> <?php foreach ($hoges as $hoge) :?> <li> <?php echo $this->Form->input('Hoge.' . $hoge['Hoge']['id'] . '.text', array( 'type' => 'text', 'default' => $hoge['Hoge']['text'] )); ?> </li> <?php endforeach; ?> <!-- /すでに登録してあるレコード情報を表示・更新するエリア --> <!-- 新しく情報を登録するエリア --> <!-- ★悩みポイント1★ --> <!-- ここに情報が入力された場合、新規レコードとして登録したいのですが出来ずに困っています…。 --> <li> <?php echo $this->Form->input('text');?> </li> <!-- /新しく情報を登録するエリア --> </ul> <?php echo $this->Form->end('保存'); ?> ``` ■Controller/HogesController.php ```lang-php <?php class HogesController extends AppController { public function index($id=NULL) { $this->hoges = $this->Hoge->find('all'); $this->set('hoges',$this->hoges); if ($this->request->is('post')) { //★悩みポイント2★ //下記のように //$text = $this->request->data['Hoge'][1]['text']; //とすると一番上に入力した値で更新されるのですが、これをそれぞれの入力欄に対して行いたいです。 //data['Hoge'][配列の番号]['text'] ←配列の番号 を自動で取得できたら解決すると思うのですがやり方がわからず困っています…。 $text = $this->request->data['Hoge'][1]['text']; if ($this->Hoge->updateAll( array('Hoge.text' => "'".$text."'") )) { $this->Session->setFlash('保存しました。'); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash('保存できませんでした。'); } } } } ?> ```
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/13 15:56 編集
2015/12/13 16:07