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

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

ただいまの
回答率

89.19%

CakePHPを使ってアクションからアクションへ値を渡せない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 914
退会済みユーザー

退会済みユーザー

前提・実現したいこと

CakePHPを練習しています。indexアクションからotherアクションへ現在の日付を送りたいです。

発生している問題・エラーメッセージ

初期値を設定しているのですが、初期値しか認識されません。
「何もはいってないよ」は初期値の場合にechoで表示しています。
参考にしたサイトでは「/%:」を含めるのはダメとのことでしたので、「-」にしました。ですが、解決しません。
【追記】
しかし、URLを見ると「http://localhost/cakephp-2.7.8/sample/other/2015-12-27%2001:09:48+09:00」となっており、日付を確認できます。
【ここまで】

ソースコード

<?php
App::uses('AppController', 'Controller');

class SampleController extends AppController {

    public function index() {
        $this -> autoRender = false;
        $date = new DateTime();
        $date->setTimeZone(new DateTimeZone('Asia/Tokyo'));
        $str = $date->format("Y-m-d");
        $this->redirect("./other/" . urlencode($str));
    }

    public function other($param=""){
        $this -> autoRender = false;
        if ($param=="") {
            # code...
            echo "何もはいってないよ";
        }else{
            $str = urldecode($param);
            echo "<html><head></head><body>";
            echo "<h1>サンプルページ</h1>";
            echo "<p>これはもう1つのページです。</p>";
            echo "<p>送られた値: " . $str . "</p>";
            echo "</body></html>";
        }

    }

}

補足情報(言語/FW/ツール等のバージョンなど)

cakephp-2.7.8 + XAMPP の環境です。

参考サイト

cakePHPを使って、コントローラークラスで、時間の受け渡しをしたいです。 - Yahoo!知恵袋

初心者のためのCakePHP2 プログラミング入門: コントローラーを使おう! (5/5)

vagrantその19-5 cakephp入門をやってみる(Controllerその4) redirect時の値の受け渡しでurlに:や/を含めるとエラーが出る

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

いくつか確認を。

1.リダイレクトする前の$strに想定通りの値が入っているかどうか。

echo $str;exit;
$this->redirect("./other/" . urlencode($str));

2.直接「http://xxx/xxx/other/2015-12-27」にアクセスしても$paramに値が入らないのか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/27 10:55 編集

    1、2を今確認したら入ってました。

    加えて、私はブラウザをChromeでしたが、何となくIEでやってみたらURLを弄らずに正しく日付を渡せていました。ブラウザにも関係してくるようです。

    キャンセル

  • 2015/12/27 20:32

    追記を見ましたが、
    リダイレクトしたときのURLが
    http://localhost/cakephp-2.7.8/sample/other/2015-12-27%2001:09:48+09:00
    になるのですか?

    では
    echo urlencode($str);exit;
    $this->redirect("./other/" . urlencode($str));
    だと
    2015-12-27%2001:09:48+09:00
    出力されます?

    キャンセル

  • 2015/12/28 01:02 編集

    >>リダイレクトしたときのURLが
    http://localhost/cakephp-2.7.8/sample/other/2015-12-27%2001:09:48+09:00
    になるのですか?
    ->質問時はなりました。


    >>echo urlencode($str);exit;
    $this->redirect("./other/" . urlencode($str));
    だと
    2015-12-27%2001:09:48+09:00
    出力されます?
    ->今試してみたところ「2015-12-28」となっていました。


    改めて質問時のコードをそのままコピーアンドペーストして再現しようとしたら、URLは「http://localhost/cakephp-2.7.8/sample/other/2015-12-28」となり、「送られた値: 2015-12-28」と正しく表示できてしまいました。

    これは解決と言っていいのか不明ですが、ここで止まっているわけにもいかないので「解決」ということにします。

    丁寧なご回答ありがとうございました。

    キャンセル

0

ブラウザをChromeで行っていたのをIEに変更したら正しく動作しました。
また、数時間後にChromeで試してみたら、こちらでも正しく動作しました。

原因は全くの不明です。参考にならないと思いますが、localhostで動作を確認する際にはブラウザを変更することで正しく動作する場合があるのかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.19%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる