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

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

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

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

CakePHP

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

Q&A

解決済

2回答

1798閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

CakePHP

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

0グッド

0クリップ

投稿2015/12/26 18:16

編集2015/12/27 01:46

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

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

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

###ソースコード

PHP

1<?php 2App::uses('AppController', 'Controller'); 3 4class SampleController extends AppController { 5 6 public function index() { 7 $this -> autoRender = false; 8 $date = new DateTime(); 9 $date->setTimeZone(new DateTimeZone('Asia/Tokyo')); 10 $str = $date->format("Y-m-d"); 11 $this->redirect("./other/" . urlencode($str)); 12 } 13 14 public function other($param=""){ 15 $this -> autoRender = false; 16 if ($param=="") { 17 # code... 18 echo "何もはいってないよ"; 19 }else{ 20 $str = urldecode($param); 21 echo "<html><head></head><body>"; 22 echo "<h1>サンプルページ</h1>"; 23 echo "<p>これはもう1つのページです。</p>"; 24 echo "<p>送られた値: " . $str . "</p>"; 25 echo "</body></html>"; 26 } 27 28 } 29 30}

###補足情報(言語/FW/ツール等のバージョンなど)
cakephp-2.7.8 + XAMPP の環境です。
###参考サイト
cakePHPを使って、コントローラークラスで、時間の受け渡しをしたいです。 - Yahoo!知恵袋

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

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

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

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

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

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

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

guest

回答2

0

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

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

投稿2015/12/27 16:08

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

いくつか確認を。

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

php

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

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

投稿2015/12/27 01:51

lightwill

総合スコア962

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

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

退会済みユーザー

退会済みユーザー

2015/12/27 02:25 編集

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

退会済みユーザー

2015/12/27 16:05 編集

>>リダイレクトしたときの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」と正しく表示できてしまいました。 これは解決と言っていいのか不明ですが、ここで止まっているわけにもいかないので「解決」ということにします。 丁寧なご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問