• 締切済み

CakePHPのredirect()関数について

<?php App::uses('AppController', 'Controller'); class DayController extends AppController{ public function index(){ $this->autoRender = false; $date = new DateTime(); $date->setTimeZone(new DateTimeZone('Asia/Tokyo')); $str = $date->format("H:i:s"); $this->redirect("./other/".urlencode($str)); } public function other($param){ $this->autoRender = false; $str = urldecode($param); echo '<html><head><title>現在時刻</title>'; echo '<meta charset="UTF-8"></head>'; echo '<body>'; echo '<h1>現在の時刻は、'.$str. 'です。</h1>'; echo '</body></html>'; } } ?> 上記のようなスクリプトをApacheのhtdodos./cakephp/App/Controller フォルダに入れて 動作させると、下記のようなエラーが出力されます。 redirect() 関数の引数がおかしいようですが、どこがどうおかしいのか 教えていただけませんか。 Warning (2): Missing argument 1 for DayController::other() [APP\Controller\DayController.php, line 14] Notice (8): Undefined variable: param [APP\Controller\DayController.php, line 16]

みんなの回答

  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.3

index側でredirectする前にdebugなりvur_dumpしてみてください。 もちろんredirectはコメントアウトしてください。 URL直叩きで正常に表示されますか? ファイルにログを出すには$this->log('debugしたいもの', LOG_DEBUG) でtmp/logs/debug.logに吐かれます。 関数仕様>公式のドキュメントではダメ?

beterugius
質問者

お礼

ご回答、ありがとうございました。

  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.2

string指定でもイケるようですね。 "./other/".urlencode($str) をデバッグしたらどうなりますか? ./other/のドットいらない気がします。 paramがないということはurlencode($str)が怪しいような気がします。

beterugius
質問者

お礼

ご回答、ありがとうございました。

beterugius
質問者

補足

ONEONEさんがおっしゃるとおりに、"./other/".urlencode($str) でデバッグすると、同じエラーが表示されます。(./other/ の.を外しても同様です。) リダイレクトしているので、function index()側で、urlencode($str)をvar_dump()しても、中身が表示されません。 中身をファイルに出力してみようか考えております。 あと、CakePHPの関数リファレンスページなど、ないでしょうか?文章ではなく、検索で関数仕様が表示されるものです。

  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.1

redirectの使い方ってそういう使い方できんのかな? arrayでコントローラとアクションと引数を渡してみては。 http://book.cakephp.org/2.0/ja/controllers.html#id8

beterugius
質問者

お礼

ご回答、どうもありがとうございました。

関連するQ&A