トップページ⇒php
1001コメント313KB

【PHP】フレームワーク CakePHP 14ホール目【v2.1】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/05/01(火) 16:58:44.53ID:fVBzm1/A
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい には無いかも

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja

前スレ
【PHP】フレームワーク CakePHP 13ホール目【v2.0】
http://kohada.2ch.net/test/read.cgi/php/1320768310/
0357nobodyさん2012/07/17(火) 18:25:57.57ID:???
>>356
Drupalスレマジで過疎ってるんですよ・・・
すごくよくできたCMSなのに・・・

世界ではメジャーなんだぜ!!
0358nobodyさん2012/07/17(火) 18:31:46.37ID:???
>>357
問題をもっと細かく切り分けろ
問題の発生する状況を少し変えてどうなるかやって比較しろ
0359nobodyさん2012/07/17(火) 18:38:23.96ID:???
>>358
IMCE入れてConfigureもちゃんといっていると推測出来る状態です。
なぜからファイルアップロードウィンドウが正常に起動しているからです。

IMCEで指定した画像ファイルへのパスは、
次の様になっておりサーバ上に画像ファイルもしっかり存在していました。

http://domain.com/drupal/sites/default/files/pictures/large_picture.jpg

ブラウザから当該画像ファイルへ直接アクセスしようとして、
はじかれている事からアクセス制限回りが原因ではないかと疑っております。


みんなで Drupal 使ってもりあげてくれ!!
0360nobodyさん2012/07/17(火) 20:41:07.36ID:???
なんか大変なことになってきたな、、、

Excelがフレームワークだっていいきる俺がきましたょ
0361nobodyさん2012/07/18(水) 12:27:45.60ID:???
1.3使ってるんだけど、
フォームにエラーがあったときに
inputの下だけじゃなくて、
一番上に出たエラーをまとめたもの出したいんだけど、どうしたらいい?
0362nobodyさん2012/07/18(水) 12:32:22.69ID:???
formヘルパーにエラーを出すメソッドがある。
APIリファレンス読んでみ
0363nobodyさん2012/07/18(水) 13:09:03.23ID:???
<?php echo $form->error('hoge');?>
<?php echo $form->input('hoge', array('type' => 'text', 'error' => false));?>
0364nobodyさん2012/07/18(水) 14:51:43.89ID:???
これCakePHPの問題かわからないけど、

<?php
echo $this->Form->create('User', array('inputDefaults' => array('label' => false)));?>

echo $this->Form->input('User.email');

echo $this->Form->input('User.password');
?>
こんな感じでPOSTデータ送ったら、
passwordだけすっぽり抜けて送られるんだが・・・
$this->dataに入れるときになんかやってるのかと思って、
$_POSTをdumpしてみたけど、やっぱりpasswordだけ送られてない
こんなこと初めてだ・・・お手上げ状態
0365nobodyさん2012/07/18(水) 14:58:51.64ID:???
echo $this->Form->input('User.email');

echo $this->Form->input('User.password');
echo $this->Form->input('User.test1');

とかやってみると、最初のemailだけしか送られていない
ほかのページでも最初のinputだけがPOSTされているみたいです。。。

やばい・・・本番サイトなのに・・・どうしよう
検討がつかないのがほんとにやばい
誰か知恵を貸して下さい
0366nobodyさん2012/07/18(水) 15:06:24.68ID:???
生PHPでPOSTするとちゃんと送信されているので、やっぱりCakePHPの問題だわ
最初のinputだけPOSTするってどういうことだ???
0367nobodyさん2012/07/18(水) 15:14:20.96ID:???
CakeのFormヘルパーは使っちゃ駄目な機能の一つ
でも初めての時はわからないよね、俺もそうだった
とりあえずないものだと思って開発した方が捗る
0368nobodyさん2012/07/18(水) 15:20:28.68ID:???
とりあえずCake使う時は、提供されてる機能を無理に使おうとしないことだ
ちょっと試して期待した動作しなかったらやめる
このポリシーで貫いて、ほとんど使える所がなかったらそれは駄目FWだから捨てる
(幸いCakeはそこまで駄目ではない

FWなんて工数短縮のためにあるもの(そしてそのメリット以外は犠牲にするもの)なのに、
機能を使うために時間を費やすなんて本末転倒だ

出されたご飯は全部食べたいのが人情だが、冷静になろう
0369nobodyさん2012/07/18(水) 15:22:05.83ID:???
>>367
<?php
echo $this->Form->input('User.email');
?>
<label>パスワード</label>
<?php
echo $this->Form->input('User.password');
?>
<input name="data[User][test1]" type="text" id="UserTest1">
と書き換えてみましたが、
同じように最初のデータしか送信されませんでした


array(2) { ["_method"]=> string(4) "POST" ["data"]=> array(1) { ["User"]=> array(1) { ["email"]=> string(22) "[email protected]" } } }

というか、今まで正常に動いてたのが、急に動かなくなった、、、
確か何か作業したような記憶があるけど、MySQLのテーブルを消しただけだし、
ファイルいじった覚えがない・・・多分いじってしまったんだろうけど、
なんにせよこんな不可解な動きをして焦りまくってます;;;
0370nobodyさん2012/07/18(水) 15:26:34.07ID:???
>>368
次からそうします
本番ですぐに動かさないと業務に支障きたしていて、
今から全部formタグに書き換えるのもちょっと時間が無いですね、、、

というか今まで動いてたのが、急に動かなくなったので、
原因がわかればすぐに戻せそうなのですが、、、
こんな根本的な動きが変わるってことはコアのファイルをいじらないと変わらない気がするんですが
そんなファイルいじった覚えがない、、、
0371nobodyさん2012/07/18(水) 15:30:09.32ID:???
確実に覚えている作業は、
DBの要らないテーブル(test_*)を15テーブルほど消したことです。
ローカルと見比べても、間違えて消したテーブルはありません。

このテーブル消す作業はPHPMyAdminで行いました
この作業のときにコアファイルが壊れたとか??ありえないか・・・と思いつつ
cake/libを見ているんですがやはりとくに変わった様子はありません
0372nobodyさん2012/07/18(水) 15:31:06.50ID:???
全文読んでないが、
動かないformだけformタグに置き換えるとかできんの
0373nobodyさん2012/07/18(水) 15:31:26.25ID:???
>>367
馬鹿は消えろ
0374nobodyさん2012/07/18(水) 15:35:23.32ID:???
>>369で問題はformヘルパーじゃないって分かったのに
>>370ではformヘルパー脱却を検討

ほんと馬鹿を増やすスレだわ
0375nobodyさん2012/07/18(水) 15:35:56.07ID:???
>>372
動かないformというか、
全formが最初のinputしか送信していない状態ですね
なにか根本の部分で変わってしまったとしか思えない
03763652012/07/18(水) 15:40:41.14ID:???
>>375
語弊がありました
送信していないかどうかは定かではありません。
とにかく、
送信先のcontroller内で、
var_dump($_POST)とやると

array(2) { ["_method"]=> string(4) "POST" ["data"]=> array(1) { ["User"]=> array(1) { ["email"]=> string(22) "[email protected]" } } }

このように、1つのinputだけしか入っていません。
0377nobodyさん2012/07/18(水) 15:41:03.59ID:???
>同じように最初のデータしか送信されませんでした
ってあるけどたとえば順番入れ替えてpasswordを先頭に持ってきたらpasswodだけ受け取れるのかよ?
0378nobodyさん2012/07/18(水) 15:43:27.56ID:???
あと、cakeって$_POST書き換えたっけ?
webrootのindex.phpの先頭でvar_dump($_POST)すると何出るの
0379nobodyさん2012/07/18(水) 15:43:49.81ID:???
どうせformがfromになってるとかだろ
0380nobodyさん2012/07/18(水) 15:46:15.74ID:???
いやform->end()後に
$form->input(...)書いてました(てへぺろ
な展開だろ
03813652012/07/18(水) 15:55:03.20ID:???
なぜか直りました・・・まだなにもアップロードしていないのに・・・
わけがわからん・・・
いやここにいる人も僕以上にわけわかってないと思うのですが、
当人もわかっていません
まず
>>377 はその通りです。
>>379-380 は、全formが急にこうなっていたので、書き間違えなどは無いと思います。

>>378 ああ、それを試したかったですね・・・

不可解すぎて今日眠れそうにないです。。。
03823652012/07/18(水) 15:57:18.12ID:???
わけわかんねえええええええええええええ

まず
不可解1
最初のinputだけ送られる、
しかも全フォームで
という謎の挙動

不可解2
急に直る
まだなにもアップロードしてない

こええ・・・
0383nobodyさん2012/07/18(水) 15:59:51.85ID:???
クライアントサイドがおかしいとしか思えないが?
03843652012/07/18(水) 16:01:21.18ID:???
>>383
と、思ってスマホでもPOSTしてみましたが、
最初のinputのみ送られていました
0385nobodyさん2012/07/18(水) 16:32:06.06ID:???
キャッシュの問題とかじゃねーの
0386nobodyさん2012/07/18(水) 16:52:26.92ID:???
>>360
おれはお前をすきになれそうだぜ。ゥホ。
0387nobodyさん2012/07/18(水) 16:57:40.65ID:???
echo $this->Form->inputs(array('User.email','User.password'));

こっちだとどうなんだろ?
0388nobodyさん2012/07/18(水) 17:49:20.92ID:???
phpの設定とキャッシュのせい
0389nobodyさん2012/07/18(水) 18:04:13.59ID:???
動かなくなる前と後で何をしたのか記録に残してないとかいう時点で
Cake云々言う前に論外。
0390nobodyさん2012/07/18(水) 18:20:44.17ID:???
ビューが吐き出したコードはどうなってんの?
必要最小限のコードでビュー(レイアウト含む)を作って、吐き出したコードさらしてみ?

あと中途半端にオレオレ入れるのって大抵時間とかが足らないので
仕様をよく理解できてないパターンだよな。
少なくとも FormHelper 使えないっていう人初めて見たわ。
0391nobodyさん2012/07/18(水) 18:23:51.98ID:???
ファイルアップロードとかメール送信ならともかく、
フォーム関係でFormHelper使わずに何とかするって
それ、Cake使う意味無いだろw
0392nobodyさん2012/07/18(水) 18:53:13.37ID:???
まぁ、時間とかが足らないんだろw
0393nobodyさん2012/07/18(水) 18:56:47.21ID:???
>>368

>とりあえずCake使う時は、提供されてる機能を無理に使おうとしないことだ
>ちょっと試して期待した動作しなかったらやめる



>ちょっと試して期待した動作しなかったらやめる


>ちょっと試して期待した動作しなかったらやめる


>ちょっと試して期待した動作しなかったらやめる

>ちょっと試して期待した動作しなかったらやめる

>ちょっと試して期待した動作しなかったらやめる
>ちょっと試して期待した動作しなかったらやめる
>ちょっと試して期待した動作しなかったらやめる


なるほど、時間とかが足らないんだな
0394nobodyさん2012/07/18(水) 21:00:57.07ID:???
頓珍漢な回答者ほど邪魔なものはない
0395nobodyさん2012/07/18(水) 21:32:59.34ID:???
そんな自虐的なこと言うなよ
0396nobodyさん2012/07/24(火) 23:11:24.05ID:???
>>362
> formヘルパーにエラーを出すメソッドがある。
> APIリファレンス読んでみ
ねーじゃん!!!1.3だよ?!
0397nobodyさん2012/07/24(火) 23:34:02.18ID:???
>>396
どこを見てんの?2秒で見つかったぞ
0398nobodyさん2012/07/24(火) 23:41:28.03ID:???
http://api13.cakephp.org/class/form-helper
いやないないない!ないだろ!
$form->error()じゃなくて、エラー全部出すやつだよ?!
0399nobodyさん2012/07/25(水) 00:30:12.80ID:???
this->autoRender = false

にすると、全てのビューに関する処理は
スルーされるって認識で良いですかね?
0400nobodyさん2012/07/25(水) 02:36:41.75ID:???
メソッド内で明示的に Controller::render() を呼び出さない限りはね。
※2.x以上しか知識ありません。念のため。
0401nobodyさん2012/07/25(水) 02:38:31.88ID:???
いや待て、やっぱり「全てのビューに関する処理」ってのが気になるな。
Dispatcher とかが裏でゴソゴソViewクラスに値を渡したりとかはやってるよ?
0402nobodyさん2012/07/25(水) 10:48:07.13ID:???
>>400-401
ビューをDBで管理しようと思いまして、>>399にすれば
余計な処理を実行させなくても良いのかな?と思っていました。
0403nobodyさん2012/07/25(水) 11:51:23.40ID:???
>>398
おい、これどうなった!やっぱないのかい?
0404nobodyさん2012/07/25(水) 20:40:10.91ID:???
>>403

viewの中でdebug($this);
あとはわかるな?
0405nobodyさん2012/07/25(水) 22:22:16.55ID:???
>>402
きっとDispatcher周りの大改造が必要になるぜ

無理とは言えないが、かなり仕様を理解しないとだめだろうな

この程度の質問にすらすら答えられるようじゃないとドツボにハマるよ

まぁでもどうなるのか見てみたい

進捗を報告してくれ
0406nobodyさん2012/07/25(水) 22:44:54.46ID:???
>>404
フォームヘルパーちゃうやん!!!!!
0407nobodyさん2012/07/25(水) 22:56:14.30ID:???
なにをごちゃごちゃ言ってんだこのキチガイは
まとめたのを出すメソッドがないから何なんだ
0408nobodyさん2012/07/25(水) 23:27:27.44ID:???
>>407
ちゃぶだいひっくり返すなよ^^;
0409nobodyさん2012/07/27(金) 13:43:34.69ID:Ij5uT65n

-----
・名前を入力してください
・メールアドレスを入力してください
-----

名前[       ]
!名前を入力してください

都道府県[▼東京都 ]

メールアドレス[       ]
!メールアドレスを入力してください


inputの下には自動で出してくれるんですが、
一番上にあるようなエラーの一覧が欲しいんです
本当にお願いします。
0410nobodyさん2012/07/27(金) 13:57:29.16ID:???
>>409
しつこい
>>404で解決済み
0411nobodyさん2012/07/27(金) 14:01:38.23ID:???
たしかvalidationErrorsってのに入ってた気がする
>>404してvalidationErrorsで検索してみ
0412nobodyさん2012/07/27(金) 15:54:14.68ID:Ij5uT65n
>>411
ありがとうございます。入っていました。
ただ、 $this->Model->validationErrors にアクセスできません
themeView に Modelオブジェクトが無いと言われます
0413nobodyさん2012/07/27(金) 15:59:54.55ID:???
409が求めてるのは、$form->errorAll('Post')
みたいなメソッドが無いか?って事だろ?

で、結論としては「無い」んだよ。
>>409みたいなことがやりたいなら$form->errorを全て書くか
>>404をしろよ。そこをまずは納得しろ。
0414nobodyさん2012/07/27(金) 16:11:56.02ID:???
2.0でちゃちゃっと今見てみたらviewのthis->validationErrorsに入ってあるんだけど、
1.3じゃあ入ってないの?
0415nobodyさん2012/07/27(金) 16:11:58.09ID:Ij5uT65n
>>413
分かりやすい説明ありがとうございます。
無いんですね。

> >>409みたいなことがやりたいなら$form->errorを全て書くか
あ、これでいいですね。
$form->error('inpu1');
$form->error('inpu2');
$form->error('inpu3');
$form->error('inpu4');
まだ試してないですけど、こうやればおkですよね。

これでいきます。
ありがとうございました!
0416nobodyさん2012/07/27(金) 16:13:04.99ID:???
それでいいのかよw
0417nobodyさん2012/07/27(金) 16:27:39.79ID:???
敢えて俺にも言わせてくれ

それでいいのかよw
0418nobodyさん2012/07/27(金) 17:06:53.00ID:???
>>404どころか>>362の時点で終わってた
0419nobodyさん2012/07/27(金) 17:18:46.30ID:???
モデルのフィールド一覧を取得してループさせて、
コピペじゃない方法でやることもできそうですね
誰か頼みました!w
0420nobodyさん2012/07/27(金) 17:21:02.41ID:Ij5uT65n
>>416-418
いや、エラー一覧を出してくれるのがベストでしたが、
無いというので、もうこれで妥協しました
0421nobodyさん2012/07/27(金) 17:59:17.31ID:QJsfcWiv
Cakephp2.2を使っているのですが、
Authのログイン認証で手間取っています。
usernameとpassword以外にも、
certificationというフィールドが1かどうか、確かめさせてからログインさせたいのですが、

$this->Auth->userScope = array('certification'=>1);

をfunction beforeFilter()に追加しても、
実際のsql文的には追加されていないようで、certification関係なく、ログインできてしまいます。

どこがいけないでしょうか?
0422nobodyさん2012/07/27(金) 18:54:38.02ID:???
全然確認しないで答えるけど
this->Auth->authenticateあたりに変更されたのって関係ない?
0423nobodyさん2012/07/27(金) 21:36:25.39ID:???
>>415
ほっこりした
0424nobodyさん2012/07/28(土) 05:06:27.70ID:NZVlXbv8
>>422

$this->Auth->authenticate = array(
'Form' => array(
'scope' => array('User.certification'=>2)
)
);

でできました!
これで10時間以上格闘してたので本当に嬉しいです
ありがとうございました
0425nobodyさん2012/07/29(日) 20:58:02.94ID:???
初歩中の初歩かもしれませんが、教えてください。
cakephp1.3で、独自ドメインを取得、サーバーはロリポップレンタルです。
いままでは http://yyy.yyy.com/test/ にcakeをインストールしていましたが、
http://xxx.xxx.com/ でアクセスしたいと思い、
.htaccessを修正し、http://xxx.xxx.com でアクセスできるところまではいきました。

そこから、
いままで http://yyy.yyy.com/test/controller/ でアクセスしていたところも
http://xxx.xxx.com/controller でアクセスできるかな?と思ったら、URL直打ちならいけました。
でも、$html->link('test', array('controller' => 'controller') としても、実際にレンダリングされる
HTMLでは、http://xxx.xxx.com/test/controller にリンクされています。
これを、testの部分をなくすことはできないでしょうか?
0426nobodyさん2012/07/29(日) 21:07:28.25ID:???
連投ですいません

前にテストしていた http://yyy.yyy.com/ は、既に他のファイルがいろいろあったので
cakephpテスト用に 
http://yyy.yyy.com/test/app/...
http://yyy.yyy.com/test/cake/...
みたいな構成にしてたんですが、
今回はcakephpを一つ動かすだけのサイトにするつもりです。
で、前と同じように
http://xxx.xxx.com/test/app/...
http://xxx.xxx.com/test/cake/...
みたいに配置しているんですが、そもそも、http://xxx.xxx.com/app/にすべきだったんでしょうか?
.htaccessは、ドメイン直下、test/直下、app/直下、app/webroot直下の4つを修正しました。
0427nobodyさん2012/07/29(日) 21:28:07.68ID:???
何度もすいません・・・
結局インストールディレクトリをかえて、
http://xxx.xxx.com/app/になるように配置したら
期待したとおり、http://xxx.xxx.com/controller とHTMLに吐き出すようになりました。
これでいこうと思うのですが、
この配置がドメイン直下での運用の場合は正解なんでしょうか。
0428nobodyさん2012/07/29(日) 23:35:13.63ID:???
まず例示するときに変なドメイン使うのやめれ。
ひとつだけなら
example.com

もうひとつなら
example.org

サブドメインは自由
0429nobodyさん2012/07/29(日) 23:45:55.88ID:???
勝手に使うとexample.comドメインの中の人に怒られるよ
0430nobodyさん2012/07/30(月) 00:12:58.18ID:???
ネタにマジレスもなんだが
>>429
つhttp://tools.ietf.org/html/rfc2606
0431nobodyさん2012/07/30(月) 00:18:16.96ID:???
>>427
URIとファイルパスの書き方がぐちゃぐちゃだな。
ディレクトリ構造の記述にはプロトコルは関係ないだろ。

そんな質問の仕方をしてるってことはマニュアルを全然読めていない証拠だから
誰も真剣に答えてくれんよ。
0432nobodyさん2012/07/30(月) 00:29:32.30ID:???
あとひとこと言わせてもらえば、マニュアル読め。
そして「マニュアル通り」にしろ。
ほとんどのことはそれで解決できる。
それでも無理なときはもう一度マニュアル読め。

つまり、たいていのケースに対しての定石が既に用意されている。
ルールに縛られるのが窮屈だからといって安易に定石を離れることは
一時しのぎは出来るかも知れないが結局遠回りになる。

ブログの記事なんかを参考にする場合は、
マニュアルの読み方や定石の解説をしているものならいいが、
小ネタの披露などの類は定石を一通りマスターしてからだ。
0433nobodyさん2012/07/30(月) 11:01:11.94ID:???
>>425-427 です
レスありがとうございます。
指摘いただいたことを修正して改めて質問させてください。

http://example.com/ でアクセスしたいのですが、
マニュアルでは
/cake_install/
 ├/app
 └/cake
と配置して、
DocumentRoot /cake_install/app/webroot
と設定すればいいとなっていました。

レンタルサーバーのため、httpd.confはいじれないので、
.htaccessにRewriteBaseを設定しました。
すると確かにhttp://example.com/でアクセスできるのですが、
cakeから出力されたHTMLでは、コントローラーへのアクセスURLが
http://example.com/cake_install/controller/
になっていました。
これを、http://example.com/controller/にしたかったんです。

そこで、cake_installのディレクトリを作らずに
/app
/cake
にしたところ、うまくいきました。
これが正しい配置なんでしょうか?
0434nobodyさん2012/07/30(月) 13:14:23.48ID:???
下がり過ぎなのでageます
0435nobodyさん2012/07/30(月) 15:31:19.13ID:???
>>433
要するに解凍した cake ディレクトリの中身をそのまま ftp での一番上にぶちまけたってことかな?
ならば、公開時の設定としては推奨されていないが、
正常に動くかどうかという点に関してはOK。

ここ見れば分かるよね?
http://book.cakephp.org/1.3/ja/view/913/%E9%96%8B%E7%99%BA-Development


>すると確かにhttp://example.com/でアクセスできるのですが、
>cakeから出力されたHTMLでは、コントローラーへのアクセスURLが
>http://example.com/cake_install/controller/
>になっていました。

これはどこか設定が間違ってる
0436nobodyさん2012/07/30(月) 16:35:51.07ID:???
Cakeのヘルパーとか真面目に使ってる奴いるのか…
2以降はマシになったんかな?
でもctpテンプレに使うとかうちはなしだなあ、デザイナにコーディング頼めないじゃん
0437nobodyさん2012/07/30(月) 17:55:19.65ID:???
フォームヘルパーは使っているけど、HTMLヘルパーは使ってないな
0438nobodyさん2012/07/30(月) 18:06:30.07ID:???
テンプレの話題なんか出すとまたSmarty厨がくるぞ…

0439nobodyさん2012/07/30(月) 20:03:51.92ID:???
テンプレにSmarty使う話しもしたいのに、
厨とか悪いことのような言い方されるから言い出しにくい雰囲気・・・
0440nobodyさん2012/07/30(月) 21:12:22.01ID:???
ヘルパーも含めてビューは2になってから使いやすくなったと思う

処理が明確になったんじゃないかな
引き換えに、コーディング工程数というか、タイプするキーの数は増えたけど
0441nobodyさん2012/07/30(月) 21:15:21.67ID:qcTCojeX
AzureにcakePHP2.0  入れて動くかな?
動かした事のある人いる?
0442nobodyさん2012/07/30(月) 21:31:34.90ID:???
動かしてる。今なら簡単。
0443nobodyさん2012/07/30(月) 21:59:05.68ID:???
>>435
そうです、cakeディレクトリを中身だけトップに入れました。
マニュアルの指定されたページを見ると、
http://www.example.com/cake_1_3/ でアクセスできますよね?ってことですが
/
└cake_1_3
  ├app
  └cake
の構成だと、確かにhttp://www.example.com/cake_1_3/でアクセスできました。

> >すると確かにhttp://example.com/でアクセスできるのですが、
> >cakeから出力されたHTMLでは、コントローラーへのアクセスURLが
> >http://example.com/cake_install/controller/
> >になっていました。
>
> これはどこか設定が間違ってる
やっぱりなんか間違ってるんですね…
0444nobodyさん2012/07/31(火) 08:43:55.59ID:???
2.xの場合は各所にある index.php、APP/Cosole/cake.php にあるパスの記述を一通り済ませば
webroot, APP, CAKE をどこにおいても問題なく動く。
2.x の経験から言えば、 >>443 はパスの設定は自分で書かないとダメなんじゃないかな?

1.3のマニュアル読んだことはあまりないんで間違えてるかもしれんけど。
いまさら1.3には興味がわかないんであとは自分で調べてくれ。
0445nobodyさん2012/07/31(火) 21:30:00.08ID:???
>>444
ありがとうございます。
index.phpの設定ですが、
cake1.3のマニュアルによると、
/app
 └/webroot
/cake
といった、普通の?配置にしない場合は、確かにindex.phpで場所を設定できるようでした。
http://book.cakephp.org/1.3/ja/view/915/%E5%BF%9C%E7%94%A8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

今回は配置は/cake_install以下に上記の通り配置して、
http://www.example.com/ でアクセスできるんですが、
$html->link('aaa', array('controller' => 'cont')
で出力されたURLがhttp://www.example.com/cake_install/cont になってしまうのを http://www.example.com/cont にしたいのです…。
0446nobodyさん2012/07/31(火) 22:02:44.89ID:???
>>445
ちなみにその
http://www.example.com/cake_install/cont
では動作してるの?

それと
http://www.example.com/cont
ではどんな挙動になるの?
0447nobodyさん2012/07/31(火) 22:07:17.42ID:???
>>446
両方自分が期待しているページで同じページが出ます。
0448nobodyさん2012/07/31(火) 22:13:47.14ID:???
あぁ、$html ってHtmlHelperなのか。よく分からんかった。2と結構違うんだな。

HtmlHelper::link() のふるまいに問題があるのか。
ちょっとソース見てみる。
0449nobodyさん2012/07/31(火) 22:18:13.20ID:???
ありがとうございます。
今気づいたんですが、妙な挙動になっていました。

トップページは、routes.phpの設定でpages_controllerのindexアクションを呼ぶようにしています。
Router::connect('/', array('controller' => 'pages', 'action' => 'index'));

http://www.example.com/ にアクセスしたとき、$html->link('controller', '/cont/')は、
http://www.example.com/cake_install/cont と出力されますが、それをクリックして
http://www.example.com/cake_install/contに遷移すると、
$html->link('controller', '/cont/')は、
http://www.example.com/cont と出力されていました。
これをクリックすると、また元に戻り、これを繰り返します。
ちなみに、トップページに戻るための出力も、$html->link('top','/')としてましたが、
http://www.example.com/になったり、http://www.example.com/cake_install になったりするようです。
0450nobodyさん2012/07/31(火) 22:20:01.18ID:???
分かった。 Router の設定だな

HtmlHelper::link()
 ↑
Helper::url()
 ↑
Router::url()
0451nobodyさん2012/07/31(火) 22:25:10.66ID:???
ちょっとローカルに1.3インストールしてみるわw
0452nobodyさん2012/07/31(火) 22:26:19.86ID:???
すいません、ありがとうございます!
0453nobodyさん2012/07/31(火) 22:51:02.56ID:???
何度も申し訳ないですが、
Router::url()のソースが挙動の操作をしているとのことで、少し見てみましたが
<?php echo $html->base; ?>をすると、
/cake_install がでたり、何もでない(空文字)だったりするようです。
0454nobodyさん2012/07/31(火) 23:13:11.82ID:???
もう一度.htaccessを見直し、

/.htaccess
RewriteBase /cake_install

/cake_install/.htaccess
RewriteBase /

/cake_install/app/.htaccess
RewriteBase /app

/cake_install/app/webroot/.htaccess
RewriteBase /app/webroot

にしたところ、http://www.example.com/controller のページでは、
常に正しく http://www.example.com/controller と出力するようになりました。
($html->base に何も入らなくなりました)
が、トップページ http://www.example.com/ にアクセスした場合だけ、
$html->base に cake_install が入り、
http://www.example.com/cake_install/controller となっています。

0455nobodyさん2012/07/31(火) 23:37:04.27ID:???
>>454
わかった
bootstrap.php
に、

Configure::write( 'App.base', '/' );

で、どう?
0456nobodyさん2012/07/31(火) 23:37:52.23ID:???
>>454
.htaccess は最初のままでいいよ、たぶん。
0457nobodyさん2012/07/31(火) 23:47:04.93ID:???
メモ:


HtmlHelper::link で吐き出すURLは Router::url で生成されてるんだけど、
ベースURLはRouterのインスタンスの$__paths[0]['base'] に保存されてる。
で、これは Dispatcher::baseUrl() の戻り値。

この Dispatcher::baseUrl() をみてやると、
最初の方に Configure に書き込んだ設置を展開していて、
もしそこに 'base' があればそれを優先する仕組み。

デフォはこれは設定されていないんで、 dirname( env( 'PHP_SELF' ) ) から算出してるってこと
■ このスレッドは過去ログ倉庫に格納されています