質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

1260閲覧

CakePHPでctpファイルからPOSTの値を取りたいです。

amaturePy

総合スコア131

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2019/06/03 15:11

編集2019/06/03 23:24

CakePHPのコントローラーの変数にctpファイルのフォームから値を送り、格納させたいのですが、うまく変数($id)に入りません。こちらのコードで何か問題がありましたらご指摘をお願いしたいです。
profile関数はユーザー情報の編集機能
この$idにPOSTの値を入れたいと考えてます。
また、下記のecho"1","2"はデバックのために記載しました。
その結果echo"2"の行が反応していないと分かりました。

エラー内容「Undefined variable: id」

profile.ctp Users/profilectp

<?php echo $this->Form->create('Users',array('action'=>'profile')); echo $this->Form->hidden('username',['username']); echo $this->Form->hidden('pass',['password']); echo $this->Form->hidden('email',['email']); echo $this->Form->end('Save'); ?> コード

Controller/ProfileController.php

public function profile() { $id=$this->request->data('profile'); //$this->request->$id('profile'); echo $id; if (!$id) { echo "1"; //throw new NotFoundException(__('Invalid user')); } $user = $this->Post->findById($id); if(!$user) { echo "2";// throw new NotFoundException(__('Invalid user')); } if($this->request->is(array('post','put'))) { $this->post->id = $id; if($this->post->save($this->request->data)) { $this->Flash->seccess(__('Your information could be updated')); return $this->redirect(array('action'=>'edit')); } $this->Flash->error(__('Unable to update your information')); } if(!$this->request->data) { $this->request->data = $post; } } コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Cookbook を読みましょう。

POST したデータは、

PHP

1$this->request->getData([入力項目のname])

で取ることができます。
※nameを指定しない場合、全てのデータを一括で(連想配列として)取得できます

投稿2019/06/03 23:38

編集2019/06/03 23:39
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaturePy

2019/06/04 01:52

ありがとうございます! $id->$this->request->data(['profile']);と入力したところ 「Trying to get property '' of non-object 」というエラーが出て知っているので、 ビューファイルのフォームにまだ問題があるかと思われます。
tacsheaven

2019/06/04 02:03

なんで $id-> なんて取ろうとするんですか…… 上に書いたとおりで、入力項目(<input>)の name に指定した名前を指定するだけですよ?
amaturePy

2019/06/04 02:30

失礼いたしました。勝手にアレンジしてしまいました。 $this->request->data(2系のため)(['Users']);と入力したのですが、
amaturePy

2019/06/04 02:32

Undefined variable とエラーが出てしまいました。 echo $this->Form->create('Users',array('action'=>'profile'));の'Usesr'部分がnameにあたるところと認識しているのですが。。。
amaturePy

2019/06/04 04:01

$this->request->data(['username']); $this->request->data(['pass']); $this->request->data(['email']);では記載方法が間違っていますでしょうか??
tacsheaven

2019/06/04 04:15

間違ってます。 次のどちらかでアクセスします。 $this->request->data['username']; $this->request->data('username'); 後者の場合、POST データに username という名前の項目が入ってなくてもエラーになりません(前者はエラーが発生します)
amaturePy

2019/06/04 13:01

本当に理解が悪くすみません。 $this->request->data('username'); $this->request->data('pass'); $this->request->data('email'); if (!$id) と書いた所Undefined variable: id [APP/Controller/UsersController.php, line 62] と変数に値が入っていない状態です。。。
tacsheaven

2019/06/04 23:24

そりゃそうでしょう。$this->request->data('username') などの戻り値を代入してないんですから。 で、あなたがご自身で書いているプログラムの中で、$id は「画面から渡ってくる何である必要があるか」きちんと理解されていますか? そうでなければそもそもそんな質問が来ること自体おかしいのですが。
amaturePy

2019/06/05 01:15

戻り値ですか! 理解できていませんでした。 調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問