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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

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

Q&A

解決済

2回答

607閲覧

cakephp rootesでURLを変更したのですが、リンクパラメータはコントローラの名前をつけないと受け取らない。

akobayashi

総合スコア15

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

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

0グッド

0クリップ

投稿2018/04/10 08:22

編集2018/04/10 08:43

タイトルがちょっと分かりづらいかと思いますが、

環境はcakephp 2.xです。更新予定です。
コントローラ名 PararaxControllerです。
routes.phpでは

Router::connect('/', array('controller' => 'pararax', 'action' => 'index')); Router::connect('/:action', array('controller' => 'pararax')); Router::connect('/:action/:name', array('controller' => 'pararax'));

とURLの表記をコントローラをつけない仕様にしました。
http://www.test.com/
これがトップページとします。

コントローラ public function hit(){ } public function hit2($id = null){ $tamashi = $this->Pararax->find("all",array("conditions" => array("Pararax.id" => $id))); $this->set(compact("tamashi")); }
ビュー hit.ctp <h2> <a href="hit2/1">リンク</a> </h2> hit2.ctp <h2> print_r($tamashi); </h2>

とすると、hit2.ctpではarray()のみで、空になってしまいます。
リンク先のurlはhttp://www.test.com/hit2/1 です。
なんでかなと考えて、試しに
http://www.test.com/pararax/hit2/1
とURLを変更すると、値を受け取りました。

できれば
http://www.test.com/hit2/1 でリンクの値を受け取りたいです。
どうかお力をお借り願えればと思います。

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

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

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

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

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

Lulucom

2018/04/10 08:36

コントローラのクラス名は、PararaxController ですか?
Lulucom

2018/04/10 08:37

念のため明記された方が良いと思います。あと、root.php ではなく routes.php かと思います。
akobayashi

2018/04/10 08:38

失礼しました。修正いたします。
Lulucom

2018/04/10 08:40

質問タイトルの root も間違いですよね?
退会済みユーザー

退会済みユーザー

2018/04/10 10:03

test.com は登録済みのドメインです。取得済みのドメインまたは例示ドメインを利用しましょう
akobayashi

2018/04/13 11:52

あと修正依頼出すのは構わないんですが、回答しない人はコメントしないでほしいです。 せめてこの回答は解らないですぐらい言うのが、礼儀だと思っています。 じゃなければ、ただの嫌がらせにしか見えないので。上記の修正依頼出した方はもうコメントしないでください。
akobayashi

2018/04/13 13:05

コメントするな言ったろうが、ボケ。
akobayashi

2018/04/13 13:06

真面目にやっているんだ。フザケ半分なら出て行け。
退会済みユーザー

退会済みユーザー

2018/04/13 13:22 編集

まじめにやってるなら。他人様のドメインを使いません。
akobayashi

2018/04/13 13:32

初心者を見下すのは一向に構わないんだけど、真面目にやっている人間はミスしたらいけないのか?それとは話が別だろ?もう少し考えてコメントしてくれ。
guest

回答2

0

自己解決

自己解決しました。
Router::connect('/', array('controller' => 'pararax', 'action' => 'index'));
Router::connect('/:action', array('controller' => 'pararax'));
Router::connect('/:action/*', array('controller' => 'pararax'));

こちらでリンクを受け取りました。

投稿2018/04/13 11:52

akobayashi

総合スコア15

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

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

0

名前つきパラメータに値が渡されていて、
$idに値がいかずnullになっていませんか?

コントローラのメソッド内で
$this->request->param(‘name’)
で取得出来たと思うので、取得した値を使用してfindできないでしょうか

投稿2018/04/10 09:54

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

akobayashi

2018/04/10 10:19

ありがとうございます。デバッグツールで見ると、 $request->data(false) になっておりました。 こちらは public function hit2($id = null){ if($this->request->param){ $namae = $this->params['id']; $tamashi = $this->Pararax->find("all",array("conditions" => array("Pararax.id" => $id))); $this->set(compact("tamashi")); } }
akobayashi

2018/04/10 10:20

とするのでしょうか? 何卒よろしくお願いいたします。
akobayashi

2018/04/10 10:23

なんか間違った事書いたような気がして申し訳ありません。
退会済みユーザー

退会済みユーザー

2018/04/10 10:43 編集

こちらこそ書き方が悪く申し訳ありません。 ルーティング設定を見た限りでは、目的のurlは3つ目の設定が適用されるように見えます。 Router::connect('/:action/:name', array('controller' => 'pararax')); この:nameが名前つきパラメータで本来$idに渡したい値が入ってしまっているのではないかと思った次第です。 以下の記述でデータを取得できるかどうかお試し頂けますと幸いです。 $tamashi = $this->Pararax->find("all",array("conditions" => array("Pararax.id" => $this->request->param("name"))));
akobayashi

2018/04/10 11:18

ありがとうございます。 試してみました。 受け取りて public function hit2($name = null){ $tamashi = $this->Pararax->find("all",array("conditions" => array("Pararax.id" => $this->request->param("name")))); $this->set(compact("tamashi")); } としたら、 Method params does not exist Error: An Internal Error Has Occurred. とデータベースエラーが出ちゃいました。
akobayashi

2018/04/13 11:50

自己解決しました。nk_pleasure様ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問