【PHP】フレームワーク CakePHP 14ホール目【v2.1】at PHP
【PHP】フレームワーク CakePHP 14ホール目【v2.1】 - 暇つぶし2ch357:nobodyさん
12/07/17 18:25:57.57
>>356
Drupalスレマジで過疎ってるんですよ・・・
すごくよくできたCMSなのに・・・

世界ではメジャーなんだぜ!!

358:nobodyさん
12/07/17 18:31:46.37
>>357
問題をもっと細かく切り分けろ
問題の発生する状況を少し変えてどうなるかやって比較しろ

359:nobodyさん
12/07/17 18:38:23.96
>>358
IMCE入れてConfigureもちゃんといっていると推測出来る状態です。
なぜからファイルアップロードウィンドウが正常に起動しているからです。

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

URLリンク(domain.com)

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


みんなで Drupal 使ってもりあげてくれ!!

360:nobodyさん
12/07/17 20:41:07.36
なんか大変なことになってきたな、、、

Excelがフレームワークだっていいきる俺がきましたょ

361:nobodyさん
12/07/18 12:27:45.60
1.3使ってるんだけど、
フォームにエラーがあったときに
inputの下だけじゃなくて、
一番上に出たエラーをまとめたもの出したいんだけど、どうしたらいい?

362:nobodyさん
12/07/18 12:32:22.69
formヘルパーにエラーを出すメソッドがある。
APIリファレンス読んでみ

363:nobodyさん
12/07/18 13:09:03.23
<?php echo $form->error('hoge');?>
<?php echo $form->input('hoge', array('type' => 'text', 'error' => false));?>

364:nobodyさん
12/07/18 14:51:43.89
これ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だけ送られてない
こんなこと初めてだ・・・お手上げ状態

365:nobodyさん
12/07/18 14:58:51.64
echo $this->Form->input('User.email');

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

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

やばい・・・本番サイトなのに・・・どうしよう
検討がつかないのがほんとにやばい
誰か知恵を貸して下さい

366:nobodyさん
12/07/18 15:06:24.68
生PHPでPOSTするとちゃんと送信されているので、やっぱりCakePHPの問題だわ
最初のinputだけPOSTするってどういうことだ???

367:nobodyさん
12/07/18 15:14:20.96
CakeのFormヘルパーは使っちゃ駄目な機能の一つ
でも初めての時はわからないよね、俺もそうだった
とりあえずないものだと思って開発した方が捗る

368:nobodyさん
12/07/18 15:20:28.68
とりあえずCake使う時は、提供されてる機能を無理に使おうとしないことだ
ちょっと試して期待した動作しなかったらやめる
このポリシーで貫いて、ほとんど使える所がなかったらそれは駄目FWだから捨てる
(幸いCakeはそこまで駄目ではない

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

出されたご飯は全部食べたいのが人情だが、冷静になろう

369:nobodyさん
12/07/18 15:22:05.83
>>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) "test@gmail.com" } } }

というか、今まで正常に動いてたのが、急に動かなくなった、、、
確か何か作業したような記憶があるけど、MySQLのテーブルを消しただけだし、
ファイルいじった覚えがない・・・多分いじってしまったんだろうけど、
なんにせよこんな不可解な動きをして焦りまくってます;;;

370:nobodyさん
12/07/18 15:26:34.07
>>368
次からそうします
本番ですぐに動かさないと業務に支障きたしていて、
今から全部formタグに書き換えるのもちょっと時間が無いですね、、、

というか今まで動いてたのが、急に動かなくなったので、
原因がわかればすぐに戻せそうなのですが、、、
こんな根本的な動きが変わるってことはコアのファイルをいじらないと変わらない気がするんですが
そんなファイルいじった覚えがない、、、

371:nobodyさん
12/07/18 15:30:09.32
確実に覚えている作業は、
DBの要らないテーブル(test_*)を15テーブルほど消したことです。
ローカルと見比べても、間違えて消したテーブルはありません。

このテーブル消す作業はPHPMyAdminで行いました
この作業のときにコアファイルが壊れたとか??ありえないか・・・と思いつつ
cake/libを見ているんですがやはりとくに変わった様子はありません

372:nobodyさん
12/07/18 15:31:06.50
全文読んでないが、
動かないformだけformタグに置き換えるとかできんの

373:nobodyさん
12/07/18 15:31:26.25
>>367
馬鹿は消えろ

374:nobodyさん
12/07/18 15:35:23.32
>>369で問題はformヘルパーじゃないって分かったのに
>>370ではformヘルパー脱却を検討

ほんと馬鹿を増やすスレだわ

375:nobodyさん
12/07/18 15:35:56.07
>>372
動かないformというか、
全formが最初のinputしか送信していない状態ですね
なにか根本の部分で変わってしまったとしか思えない

376:365
12/07/18 15:40:41.14
>>375
語弊がありました
送信していないかどうかは定かではありません。
とにかく、
送信先のcontroller内で、
var_dump($_POST)とやると

array(2) { ["_method"]=> string(4) "POST" ["data"]=> array(1) { ["User"]=> array(1) { ["email"]=> string(22) "test@gmail.com" } } }

このように、1つのinputだけしか入っていません。

377:nobodyさん
12/07/18 15:41:03.59
>同じように最初のデータしか送信されませんでした
ってあるけどたとえば順番入れ替えてpasswordを先頭に持ってきたらpasswodだけ受け取れるのかよ?

378:nobodyさん
12/07/18 15:43:27.56
あと、cakeって$_POST書き換えたっけ?
webrootのindex.phpの先頭でvar_dump($_POST)すると何出るの

379:nobodyさん
12/07/18 15:43:49.81
どうせformがfromになってるとかだろ

380:nobodyさん
12/07/18 15:46:15.74
いやform->end()後に
$form->input(...)書いてました(てへぺろ
な展開だろ

381:365
12/07/18 15:55:03.20
なぜか直りました・・・まだなにもアップロードしていないのに・・・
わけがわからん・・・
いやここにいる人も僕以上にわけわかってないと思うのですが、
当人もわかっていません
まず
>>377 はその通りです。
>>379-380 は、全formが急にこうなっていたので、書き間違えなどは無いと思います。

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

不可解すぎて今日眠れそうにないです。。。

382:365
12/07/18 15:57:18.12
わけわかんねえええええええええええええ

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

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

こええ・・・

383:nobodyさん
12/07/18 15:59:51.85
クライアントサイドがおかしいとしか思えないが?

384:365
12/07/18 16:01:21.18
>>383
と、思ってスマホでもPOSTしてみましたが、
最初のinputのみ送られていました

385:nobodyさん
12/07/18 16:32:06.06
キャッシュの問題とかじゃねーの

386:nobodyさん
12/07/18 16:52:26.92
>>360
おれはお前をすきになれそうだぜ。ゥホ。

387:nobodyさん
12/07/18 16:57:40.65
echo $this->Form->inputs(array('User.email','User.password'));

こっちだとどうなんだろ?

388:nobodyさん
12/07/18 17:49:20.92
phpの設定とキャッシュのせい

389:nobodyさん
12/07/18 18:04:13.59
動かなくなる前と後で何をしたのか記録に残してないとかいう時点で
Cake云々言う前に論外。

390:nobodyさん
12/07/18 18:20:44.17
ビューが吐き出したコードはどうなってんの?
必要最小限のコードでビュー(レイアウト含む)を作って、吐き出したコードさらしてみ?

あと中途半端にオレオレ入れるのって大抵時間とかが足らないので
仕様をよく理解できてないパターンだよな。
少なくとも FormHelper 使えないっていう人初めて見たわ。

391:nobodyさん
12/07/18 18:23:51.98
ファイルアップロードとかメール送信ならともかく、
フォーム関係でFormHelper使わずに何とかするって
それ、Cake使う意味無いだろw

392:nobodyさん
12/07/18 18:53:13.37
まぁ、時間とかが足らないんだろw

393:nobodyさん
12/07/18 18:56:47.21
>>368

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



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


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


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

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

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


なるほど、時間とかが足らないんだな

394:nobodyさん
12/07/18 21:00:57.07
頓珍漢な回答者ほど邪魔なものはない

395:nobodyさん
12/07/18 21:32:59.34
そんな自虐的なこと言うなよ

396:nobodyさん
12/07/24 23:11:24.05
>>362
> formヘルパーにエラーを出すメソッドがある。
> APIリファレンス読んでみ
ねーじゃん!!!1.3だよ?!

397:nobodyさん
12/07/24 23:34:02.18
>>396
どこを見てんの?2秒で見つかったぞ

398:nobodyさん
12/07/24 23:41:28.03
URLリンク(api13.cakephp.org)
いやないないない!ないだろ!
$form->error()じゃなくて、エラー全部出すやつだよ?!

399:nobodyさん
12/07/25 00:30:12.80
this->autoRender = false

にすると、全てのビューに関する処理は
スルーされるって認識で良いですかね?

400:nobodyさん
12/07/25 02:36:41.75
メソッド内で明示的に Controller::render() を呼び出さない限りはね。
※2.x以上しか知識ありません。念のため。

401:nobodyさん
12/07/25 02:38:31.88
いや待て、やっぱり「全てのビューに関する処理」ってのが気になるな。
Dispatcher とかが裏でゴソゴソViewクラスに値を渡したりとかはやってるよ?

402:nobodyさん
12/07/25 10:48:07.13
>>400-401
ビューをDBで管理しようと思いまして、>>399にすれば
余計な処理を実行させなくても良いのかな?と思っていました。


403:nobodyさん
12/07/25 11:51:23.40
>>398
おい、これどうなった!やっぱないのかい?

404:nobodyさん
12/07/25 20:40:10.91
>>403

viewの中でdebug($this);
あとはわかるな?

405:nobodyさん
12/07/25 22:22:16.55
>>402
きっとDispatcher周りの大改造が必要になるぜ

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

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

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

進捗を報告してくれ

406:nobodyさん
12/07/25 22:44:54.46
>>404
フォームヘルパーちゃうやん!!!!!

407:nobodyさん
12/07/25 22:56:14.30
なにをごちゃごちゃ言ってんだこのキチガイは
まとめたのを出すメソッドがないから何なんだ

408:nobodyさん
12/07/25 23:27:27.44
>>407
ちゃぶだいひっくり返すなよ^^;

409:nobodyさん
12/07/27 13:43:34.69 Ij5uT65n

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

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

都道府県[▼東京都 ]

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


inputの下には自動で出してくれるんですが、
一番上にあるようなエラーの一覧が欲しいんです
本当にお願いします。

410:nobodyさん
12/07/27 13:57:29.16
>>409
しつこい
>>404で解決済み

411:nobodyさん
12/07/27 14:01:38.23
たしかvalidationErrorsってのに入ってた気がする
>>404してvalidationErrorsで検索してみ

412:nobodyさん
12/07/27 15:54:14.68 Ij5uT65n
>>411
ありがとうございます。入っていました。
ただ、 $this->Model->validationErrors にアクセスできません
themeView に Modelオブジェクトが無いと言われます

413:nobodyさん
12/07/27 15:59:54.55
409が求めてるのは、$form->errorAll('Post')
みたいなメソッドが無いか?って事だろ?

で、結論としては「無い」んだよ。
>>409みたいなことがやりたいなら$form->errorを全て書くか
>>404をしろよ。そこをまずは納得しろ。

414:nobodyさん
12/07/27 16:11:56.02
2.0でちゃちゃっと今見てみたらviewのthis->validationErrorsに入ってあるんだけど、
1.3じゃあ入ってないの?

415:nobodyさん
12/07/27 16:11:58.09 Ij5uT65n
>>413
分かりやすい説明ありがとうございます。
無いんですね。

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

これでいきます。
ありがとうございました!

416:nobodyさん
12/07/27 16:13:04.99
それでいいのかよw

417:nobodyさん
12/07/27 16:27:39.79
敢えて俺にも言わせてくれ

それでいいのかよw

418:nobodyさん
12/07/27 17:06:53.00
>>404どころか>>362の時点で終わってた

419:nobodyさん
12/07/27 17:18:46.30
モデルのフィールド一覧を取得してループさせて、
コピペじゃない方法でやることもできそうですね
誰か頼みました!w

420:nobodyさん
12/07/27 17:21:02.41 Ij5uT65n
>>416-418
いや、エラー一覧を出してくれるのがベストでしたが、
無いというので、もうこれで妥協しました

421:nobodyさん
12/07/27 17:59:17.31 QJsfcWiv
Cakephp2.2を使っているのですが、
Authのログイン認証で手間取っています。
usernameとpassword以外にも、
certificationというフィールドが1かどうか、確かめさせてからログインさせたいのですが、

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

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

どこがいけないでしょうか?

422:nobodyさん
12/07/27 18:54:38.02
全然確認しないで答えるけど
this->Auth->authenticateあたりに変更されたのって関係ない?

423:nobodyさん
12/07/27 21:36:25.39
>>415
ほっこりした


424:nobodyさん
12/07/28 05:06:27.70 NZVlXbv8
>>422

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

でできました!
これで10時間以上格闘してたので本当に嬉しいです
ありがとうございました

425:nobodyさん
12/07/29 20:58:02.94
初歩中の初歩かもしれませんが、教えてください。
cakephp1.3で、独自ドメインを取得、サーバーはロリポップレンタルです。
いままでは URLリンク(yyy.yyy.com) にcakeをインストールしていましたが、
URLリンク(xxx.xxx.com) でアクセスしたいと思い、
.htaccessを修正し、URLリンク(xxx.xxx.com)<) でアクセスしていたところも
URLリンク(xxx.xxx.com) でアクセスできるかな?と思ったら、URL直打ちならいけました。
でも、$html->link('test', array('controller' => 'controller') としても、実際にレンダリングされる
HTMLでは、URLリンク(xxx.xxx.com) にリンクされています。
これを、testの部分をなくすことはできないでしょうか?

426:nobodyさん
12/07/29 21:07:28.25
連投ですいません

前にテストしていた URLリンク(yyy.yyy.com) は、既に他のファイルがいろいろあったので
cakephpテスト用に 
URLリンク(yyy.yyy.com)
URLリンク(yyy.yyy.com)
みたいな構成にしてたんですが、
今回はcakephpを一つ動かすだけのサイトにするつもりです。
で、前と同じように
URLリンク(xxx.xxx.com)
URLリンク(xxx.xxx.com)
みたいに配置しているんですが、そもそも、URLリンク(xxx.xxx.com)にすべきだったんでしょうか?
.htaccessは、ドメイン直下、test/直下、app/直下、app/webroot直下の4つを修正しました。


427:nobodyさん
12/07/29 21:28:07.68
何度もすいません・・・
結局インストールディレクトリをかえて、
URLリンク(xxx.xxx.com)になるように配置したら
期待したとおり、URLリンク(xxx.xxx.com) とHTMLに吐き出すようになりました。
これでいこうと思うのですが、
この配置がドメイン直下での運用の場合は正解なんでしょうか。


428:nobodyさん
12/07/29 23:35:13.63
まず例示するときに変なドメイン使うのやめれ。
ひとつだけなら
example.com

もうひとつなら
example.org

サブドメインは自由

429:nobodyさん
12/07/29 23:45:55.88
勝手に使うとexample.comドメインの中の人に怒られるよ

430:nobodyさん
12/07/30 00:12:58.18
ネタにマジレスもなんだが
>>429
URLリンク(tools.ietf.org)

431:nobodyさん
12/07/30 00:18:16.96
>>427
URIとファイルパスの書き方がぐちゃぐちゃだな。
ディレクトリ構造の記述にはプロトコルは関係ないだろ。

そんな質問の仕方をしてるってことはマニュアルを全然読めていない証拠だから
誰も真剣に答えてくれんよ。

432:nobodyさん
12/07/30 00:29:32.30
あとひとこと言わせてもらえば、マニュアル読め。
そして「マニュアル通り」にしろ。
ほとんどのことはそれで解決できる。
それでも無理なときはもう一度マニュアル読め。

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

ブログの記事なんかを参考にする場合は、
マニュアルの読み方や定石の解説をしているものならいいが、
小ネタの披露などの類は定石を一通りマスターしてからだ。

433:nobodyさん
12/07/30 11:01:11.94
>>425-427 です
レスありがとうございます。
指摘いただいたことを修正して改めて質問させてください。

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

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

そこで、cake_installのディレクトリを作らずに
/app
/cake
にしたところ、うまくいきました。
これが正しい配置なんでしょうか?

434:nobodyさん
12/07/30 13:14:23.48
下がり過ぎなのでageます

435:nobodyさん
12/07/30 15:31:19.13
>>433
要するに解凍した cake ディレクトリの中身をそのまま ftp での一番上にぶちまけたってことかな?
ならば、公開時の設定としては推奨されていないが、
正常に動くかどうかという点に関してはOK。

ここ見れば分かるよね?
URLリンク(book.cakephp.org)


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

これはどこか設定が間違ってる

436:nobodyさん
12/07/30 16:35:51.07
Cakeのヘルパーとか真面目に使ってる奴いるのか…
2以降はマシになったんかな?
でもctpテンプレに使うとかうちはなしだなあ、デザイナにコーディング頼めないじゃん

437:nobodyさん
12/07/30 17:55:19.65
フォームヘルパーは使っているけど、HTMLヘルパーは使ってないな

438:nobodyさん
12/07/30 18:06:30.07
テンプレの話題なんか出すとまたSmarty厨がくるぞ…



439:nobodyさん
12/07/30 20:03:51.92
テンプレにSmarty使う話しもしたいのに、
厨とか悪いことのような言い方されるから言い出しにくい雰囲気・・・

440:nobodyさん
12/07/30 21:12:22.01
ヘルパーも含めてビューは2になってから使いやすくなったと思う

処理が明確になったんじゃないかな
引き換えに、コーディング工程数というか、タイプするキーの数は増えたけど

441:nobodyさん
12/07/30 21:15:21.67 qcTCojeX
AzureにcakePHP2.0  入れて動くかな?
動かした事のある人いる?

442:nobodyさん
12/07/30 21:31:34.90
動かしてる。今なら簡単。

443:nobodyさん
12/07/30 21:59:05.68
>>435
そうです、cakeディレクトリを中身だけトップに入れました。
マニュアルの指定されたページを見ると、
URLリンク(www.example.com) でアクセスできますよね?ってことですが
/
└cake_1_3
  ├app
  └cake
の構成だと、確かにURLリンク(www.example.com)でアクセスできました。

> >すると確かにURLリンク(example.com)でアクセスできるのですが、
> >cakeから出力されたHTMLでは、コントローラーへのアクセスURLが
> >URLリンク(example.com)
> >になっていました。
>
> これはどこか設定が間違ってる
やっぱりなんか間違ってるんですね…

444:nobodyさん
12/07/31 08:43:55.59
2.xの場合は各所にある index.php、APP/Cosole/cake.php にあるパスの記述を一通り済ませば
webroot, APP, CAKE をどこにおいても問題なく動く。
2.x の経験から言えば、 >>443 はパスの設定は自分で書かないとダメなんじゃないかな?

1.3のマニュアル読んだことはあまりないんで間違えてるかもしれんけど。
いまさら1.3には興味がわかないんであとは自分で調べてくれ。

445:nobodyさん
12/07/31 21:30:00.08
>>444
ありがとうございます。
index.phpの設定ですが、
cake1.3のマニュアルによると、
/app
 └/webroot
/cake
といった、普通の?配置にしない場合は、確かにindex.phpで場所を設定できるようでした。
URLリンク(book.cakephp.org)

今回は配置は/cake_install以下に上記の通り配置して、
URLリンク(www.example.com) でアクセスできるんですが、
$html->link('aaa', array('controller' => 'cont')
で出力されたURLがURLリンク(www.example.com) になってしまうのを URLリンク(www.example.com) にしたいのです…。


446:nobodyさん
12/07/31 22:02:44.89
>>445
ちなみにその
URLリンク(www.example.com)
では動作してるの?

それと
URLリンク(www.example.com)
ではどんな挙動になるの?

447:nobodyさん
12/07/31 22:07:17.42
>>446
両方自分が期待しているページで同じページが出ます。


448:nobodyさん
12/07/31 22:13:47.14
あぁ、$html ってHtmlHelperなのか。よく分からんかった。2と結構違うんだな。

HtmlHelper::link() のふるまいに問題があるのか。
ちょっとソース見てみる。

449:nobodyさん
12/07/31 22:18:13.20
ありがとうございます。
今気づいたんですが、妙な挙動になっていました。

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

URLリンク(www.example.com) にアクセスしたとき、$html->link('controller', '/cont/')は、
URLリンク(www.example.com) と出力されますが、それをクリックして
URLリンク(www.example.com)に遷移すると、
$html->link('controller', '/cont/')は、
URLリンク(www.example.com) と出力されていました。
これをクリックすると、また元に戻り、これを繰り返します。
ちなみに、トップページに戻るための出力も、$html->link('top','/')としてましたが、
URLリンク(www.example.com)になったり、URLリンク(www.example.com) になったりするようです。


450:nobodyさん
12/07/31 22:20:01.18
分かった。 Router の設定だな

HtmlHelper::link()
 ↑
Helper::url()
 ↑
Router::url()


451:nobodyさん
12/07/31 22:25:10.66
ちょっとローカルに1.3インストールしてみるわw

452:nobodyさん
12/07/31 22:26:19.86
すいません、ありがとうございます!

453:nobodyさん
12/07/31 22:51:02.56
何度も申し訳ないですが、
Router::url()のソースが挙動の操作をしているとのことで、少し見てみましたが
<?php echo $html->base; ?>をすると、
/cake_install がでたり、何もでない(空文字)だったりするようです。


454:nobodyさん
12/07/31 23:13:11.82
もう一度.htaccessを見直し、

/.htaccess
RewriteBase /cake_install

/cake_install/.htaccess
RewriteBase /

/cake_install/app/.htaccess
RewriteBase /app

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

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



455:nobodyさん
12/07/31 23:37:04.27
>>454
わかった
bootstrap.php
に、

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

で、どう?

456:nobodyさん
12/07/31 23:37:52.23
>>454
.htaccess は最初のままでいいよ、たぶん。

457:nobodyさん
12/07/31 23:47:04.93
メモ:


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

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

デフォはこれは設定されていないんで、 dirname( env( 'PHP_SELF' ) ) から算出してるってこと


458:nobodyさん
12/07/31 23:49:45.96
指摘いただいた内容でやってみたところ、
確かに /cake_install だったのが / に変わり、$html->linkも、cake_installなしで
出力されましたが、UploadPackというプラグインの画像出力が
<img src="//uploaddir/image.png"> のようになり、画像がでなくなりました…
これはプラグインのソースを修正する必要があるのかもしれません。

そして、色々やっていただいて本当に申し訳ないのですが、
ドキュメントルート直下の /.htaccess の記述が間違っていたようで、
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /cake_install
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
としていたのを、
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^$ cake_install/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ cake_install/$1 [L]
</IfModule>
と変更すると、うまくいきました!
修正後の記述も、ネットから拾ってきたものでよく理解はしていないのですが、
なんとかこれで動きそうです。

本当にありがとうございました&すいませんでした。

459:nobodyさん
12/07/31 23:50:05.45
とにかく .htaccess の設定とか体当たりで確かめるのはやめれw
身体もたないぞw

460:nobodyさん
12/07/31 23:51:50.45
メモまで丁寧にありがとうございます!
$__paths[0]['base'] に値が入ってるのがダメなような気はしたんですが
それがどこでどうセットされてるかまでは見れなかったんで
今後の参考にさせていただきます!!

461:nobodyさん
12/08/01 00:09:50.35
> とにかく .htaccess の設定とか体当たりで確かめるのはやめれw
> 身体もたないぞw
まさにそのとおりでした。

実は
/cake_install
 ├/app
 └/cake
でインストールしたあと、うまくいかなかったんで
/app
/cake
で直下にぶちまけて動かしてたんです。
で、先ほどからずっと/cake_installの方のファイルをさわったりしてたんですが
.htaccessの修正で対応できた!と思い、
/app
/cake
の方を消したら、また元に戻りました。
URLがころころ変わってたのも、環境が複数あったのが問題だったようで…
そして、指摘された Configure::write( 'App.base', '/' ); を入れて、
リンクURLは問題なく出力されていますが、
先ほど書いた通りプラグインのUploadPackの画像出力URLが//になることだけが問題になりました。
UploadPackのソースを確認してみます

462:nobodyさん
12/08/01 00:56:24.96
センスのかけらもないコーディングですが、
プラグインのuploadpackを下記の通り修正し、今回の一連の問題が解決しました。
ありがとうございました。

function image($data, $path, $options = array(), $htmlOptions = array()) {
$options += array('urlize' => false);
// src="//imageurl" になって出力されるのを修正
// 生成されたタグから、"//example/example.png" の最初の / を一本削除
// return $this->output($this->Html->image($this->url($data, $path, $options), $htmlOptions));
$imgtag = $this->Html->image($this->url($data, $path, $options), $htmlOptions);
$imgtag = str_replace('//', '/', $imgtag);
  return $this->output($imgtag);
}

463:nobodyさん
12/08/02 17:37:50.48
DBでビューを管理したいのですが、
ググっても情報が1.2や1.3系で古いです。

2.x系ではどうすればいいのでしょうか?
DBでビュー管理ししている人が居たら教えてください。

464:nobodyさん
12/08/02 20:48:40.47
どこまでDBに任せるのか分からないけど、View の描画ロジックそのものが
ファイルシステムと分離されていないからコアを変更することになるけどいいの?

もっとも、PHPのソースコードをDBに格納してそれを取り出して云々て話だったら1.3系であろうが2.x系であろうが同じ。

465:nobodyさん
12/08/02 20:51:57.55 kl7SocZ+
>>442
Azure上でcake入れてるとの事ですけど
動作は安定してますか?

DBは、SQL Azure?
それとも Webロール側に Windows版のMySQLを入れてますか?

あと、Azure上にcakeを入れる方法とかを解説しているサイトがあったら教えて下さい。

466:nobodyさん
12/08/02 21:02:45.91
>>464
ブログのテンプレート編集ってあるじゃないですか?
ああいうことをしたいと思っているんです。
公開画面ではCakeのビューは使わずにDBのみで対応するとか

467:nobodyさん
12/08/02 21:07:49.84
>>466
DBにする必要あんの?

468:nobodyさん
12/08/02 21:08:00.72
>>466
テーマ使えばいいんじゃないか?
baserCMSのテーマ管理が参考になると思うよ

469:463
12/08/02 21:20:15.13
>>467-468
ファイルを直接編集するよりもDBの方が修正しやすいと思いまして。
初期化やコピーする場合とか。

470:nobodyさん
12/08/02 21:40:40.11
その程度のことなら実体はファイルのままにしておいた方が良い。

パスの情報をコアに教えるのは簡単だし結合は緩いんで、
ディレクトリの構造を工夫して、パスの管理をDBに委ねるっていうのがいいと思うが。
あと、更新履歴なんかはDBに任せられるな。

471:nobodyさん
12/08/02 21:44:35.65
ちなみにテンプレートファイルを呼び出してるロジックがどこにあるか分かってる?

472:nobodyさん
12/08/02 22:09:38.31
>>465
最近Azureが更新されて、Linuxの仮想サーバを立てられるようになったり、
仮想ネットワークが組めるようになってる。データの永続化のしきいも下がってる。
俺が試したのはLinuxの仮想サーバ上。CentOS6.2だから素直な環境が組める。
これからPHPの運用環境をAzureに組むなら、どういう基盤が良いか再考したほうがいいよ。

473:nobodyさん
12/08/02 22:13:49.40 kl7SocZ+
>>472
サンキュー

個人的にはAWSで行きたいんだけど
お上からの指令でAzureでやんちゃくちゃならない案件なんだよね。

474:463
12/08/03 01:19:17.08
>>470
例えばなんですが、ブログのテンプレ(テーマ)って
修正しても元に戻したり、別の物を選べるじゃないですか?
それをファイルで管理するって事は、元ファイルをwebroot以外の場所に置いて、
使用する時に/app/views/themed/以下にコピーするって事でしょうか?
そして、/app/views/themed/に作ったテーマのソースを
file_get_contentsで取得してfopen→fwriteで編集するみたいな。

そうであれば、DBに記録するのも、
ファイルとして用意するのも同じような気がしますね・・・
更新履歴宿のテーマを使うかだけをDBに記録するだけで良いのかなぁ

475:nobodyさん
12/08/03 07:21:24.39
>>463
WPしか知らんが、あれはファイルの本体があって、更新履歴はDBに保存してる。
テーマの管理はファイルの記述ルールにのっとってリクエストのたびに解決してる。

それをたとえばCakePHPでやりたいんなら、更新履歴の管理はコアとは関係のない実装が可能なので、
コアの拡張はテンプレートのファイル構造の変更だけで済む。
で、それ(ファイル構造)だけならコアの設計ですでに綺麗に切り離されてるから
アプリケーションで対応できると思う。

あと、コアの変更に関してはアプリケーション側でほとんどのコアライブラリファイルを
上書きできるようにしてあるわ。
俺の知識不足だった。
すまん。

476:463
12/08/03 14:43:49.29
>>475
詳しく教えていただいたのに恐縮ですが、
おっしゃる意味がいまいち想像できず、理解できませんでした・・。

ここでいう「更新履歴」とは、「どのユーザがどのファイルを更新した」
と言う情報のみを記録するデータでしょうか?
それとも、ソース毎管理するのでしょうか?

当初、私が>>463で記載した「DBをビューで管理したい」が、
別にDBでなくても、もっと便利で簡単な方法があるなら
DBにこだわりはありません。

最終的な目的としては、ブログのように
複数のデザインを切り替えて編集できる機能を持ちたいのです。
それを管理画面から操作したいと思っています。
(そう言う点で言えばWordpressと同じなのかもしれません

477:nobodyさん
12/08/03 15:25:35.11
お前らに質問です。

ちょっとしたシステムを作る場合とかだと

cakePHP とかのFWを使わずにpure php を使って組んだ方が

環境構築時間を短縮出来て効率が良いと思うんだけど、

お前らはどう思いますか?


478:nobodyさん
12/08/03 15:33:52.08
フレームワークを使うやつはアホ

479:nobodyさん
12/08/03 15:44:57.43
>>477
「ちょっとしたシステム」の規模が、掲示板とかお問い合わせフォームとか
その程度の物を指すなら、cake使わなくて良いと思う。

ただ、オープンソースや自作ライブラリを使いながら作るから、
pure phpと違うとは思うけど。

480:nobodyさん
12/08/03 16:14:27.55
>>477
もちろん場合によります。
当たり前です。

481:nobodyさん
12/08/03 16:15:48.17
>>478
使う阿呆に使わぬ阿呆
同じ阿呆なら使わにゃそんそん

482:nobodyさん
12/08/03 18:12:50.67 S+tv8I6e
>>478

483:nobodyさん
12/08/03 18:13:45.87 S+tv8I6e
>>479
自作ライブラリを使った方が
あらゆる機能を把握出来るから
カスタマイズもスムーズに行くと思うんだよね。

>>480
あたりまえだのくらっかー

今回の案件は、オレオレFWで行きますぜ。

484:nobodyさん
12/08/03 19:08:06.08
オレオレ作って使いたいんだけど、どうしても時間がないから
渋々Cake使ってる
まあ確かに開発は速い、動作は遅い

485:nobodyさん
12/08/03 19:36:57.12
>ここでいう「更新履歴」とは、「どのユーザがどのファイルを更新した」
>と言う情報のみを記録するデータでしょうか?
>それとも、ソース毎管理するのでしょうか?

そんなことは好きにやればいいじゃん。
CakePHPのコアから見れば全く関係ない。
テンプレートファイルのパスさえ渡してくれたらちゃんと処理してくれる。

分かってるとは思うけど、やろうとしていることはどっちかっていうと、
Cakeが本来想定していない使用方法という意味において応用レベルだよ。
少なくともコアの通常のロジックを一通り理解していないと対応できないんじゃないかなぁ

なんとなく質問のレベルと目指す目標が離れすぎてる気がする。。。
まぁ発想としては面白いんで頑張ってw

あと、WPの更新履歴に関しては勘違いしていた。実際には履歴は保存されていなかった。
でも、それを実装したいならさっき書いたようにDBで保存すればいいんじゃない?

486:nobodyさん
12/08/03 19:51:51.79
>485 は、>>476 のレスね

ちなみに
>それとも、ソース毎管理するのでしょうか?
は、俺の脳内ではソースを丸ごと保存するイメージ

487:463
12/08/03 20:25:43.13
>>485-486
わかりました。アドバイスいただいたことを参考に、試してみます。

488:nobodyさん
12/08/05 01:21:49.66 R26XMbHJ
ようやく さくら にcake2 の設定ができたわ。

嘘っぱちの情報を公開しているブログのせいで苦戦したぜw

489:nobodyさん
12/08/05 19:11:15.04 R26XMbHJ
Config/routes.php を弄っているのですが何か罪悪感を感じます。
このファイルって弄ってもよいものなのでしょうか?

490:nobodyさん
12/08/05 19:33:36.03
むしろいじるものだよ

491:nobodyさん
12/08/05 19:43:03.99 R26XMbHJ
サンクス。

しっかしcakePHP2.0の設定ってメンドクサイね。
もっと手軽にならないものか。

492:nobodyさん
12/08/05 22:12:43.47 R26XMbHJ
下記ページを参考にcakePHPでログイン認証機能にチャレンジしています。

URLリンク(weble.org)

ページに記載されている内容を一通り設定し
テストしようと /admin/add にアクセスしようとするとエラーが出てしまいます。

URLリンク(hogehoge.com)
※tmp/logs/error.log を確認しましたが
エラーに関係しそうなログはありませんでした。

< アクセス時にブラウザに表示される内容 >
Internal Server Error
The server encountered an internal error or
misconfiguration and was unable to complete your request.

Please contact the server administrator, support@sakura.ad.jp
and inform them of the time the error occurred,
and anything you might have done that may have caused the error.

どこに問題があるのでしょうか?

493:492
12/08/05 22:28:47.42 R26XMbHJ
いろいろと試してみたところ、ログイン認証以前の問題が発生している様です。
コントローラ+アクションを作成したにも関わらずブラウザにURLを指定するとInternal Server Errorが起きてます。
助けてぇええええ

★関連する各種ソース
【Config/routes.php】
Router::connect('/', array('controller' => 'tops', 'action' => 'index'));

【TopsController.php】
<?php
class TopsController extends AppController
{
public function index()
{
//デフォルトレイアウト
$this->layout = "ps-default";
}
}
?>

★アクセスパターン①
URLリンク(hogehoge.com)
→正常にアクセス出来てます。

★アクセスパターン②
URLリンク(hogehoge.com)
→ Internal Serve Error が表示されてしまいます。


494:nobodyさん
12/08/05 23:00:58.57
.htaccess とかいじり倒してない?

495:nobodyさん
12/08/05 23:04:47.87
十中八九設置ミス。
ディレクトリの配置、各種パスの設定をもう一度見直してみたら?

496:nobodyさん
12/08/06 00:51:05.79 sAYEX+TS
>>494
デフォルトの侭でも①は正常に動作していましたので
.htaccessへの修正は、 ファイル指定が無い場合には index.php にアクセスさせる様にしただけです。
rewritebase等は全てそのままです。

>>495
うーん。。。
設置ミスですかぁー。


ちなみに実は以前、 cakePHP2.0を別のサクラ鯖に入れた時には
一応動作していました。

実は若干気がかりな点がありまして、cakePHPをDLして解凍した中身※
※cakephp-cakephp-e0b6f86\app\webroot ← この中身
の配置なんですが、現在は④に入れてます。(マルチドメインの中に丸ごと突っ込んでます。)

以前さくらに入れた際には③で正常に動作していましたが
webrootの正しい配置場所はやはり③なのでしょうか?

③ /home/www/{user_name}/{domain_name}/app/webroot/{favicon.ico や index.php...etc}
④ /home/www/{user_name}/{domain_name}/{favicon.ico や index.php ...etc}

実は、③への配置が本当は正しく無かったと思い、今回は④に配置しました。
それが仇となったのかな?

497:nobodyさん
12/08/06 02:18:43.07
いや、どっちも正しいよ。
っていうか、ほぼどんなパターンも間違いではない。

ブラウザの要求が webroot の index.php に渡せて、
なおかつ webroot/index.php がアプリケーションを実行できて、
tempディレクトリ内に書き込み権限があれば
どんなパターンでも動く。

で、そういう柔軟な配置に対応させうるために、index.php とかにパスの指定をするようになっている。
中にはデフォルトではコメントアウトしてるのもあったりするので、
量はそう多くないから実行するファイルの順に一度目を通したらいいと思う。

いずれにせよ、それらを逐一順にきっちり設定すれば動くように設計されてる。
むしろ、動かないパターンを見つけて報告すれば話題になるかもしれんよ。
コメントは英語だけど簡単だから絶対読める。

498:nobodyさん
12/08/06 02:31:25.59
>index.php とかにパスの指定をする

補足すると、公開するWebページの設定だけなら webroot/index.php の設定
Shell を実行するときは App/Console/cake.php の設定
Webページのテストするときは webroot/test.php の設定

で OK だったと思う。
1.3に比べたらかなり設定は楽になってる。

499:nobodyさん
12/08/06 14:34:51.02
CakePHP の1.3を最後に使ってから2年以上経過して、
今その後継のサイトを作る話が出てるんだけど、
やっぱ最新版を使うべきだよね?

噂では3が出るとかでないとかって話もあるんだけど、それは時期尚早かな?

まだ企画段階で、実際に制作に入るのは10月頃だと思うんだけど。

ちなみにうちは基本、デザインの会社なんで
フレームワーク触れる人間が俺しかいないという惨状 orz...

500:nobodyさん
12/08/06 14:51:40.29
炎上必死

501:nobodyさん
12/08/06 15:12:00.57
逆になんで最新版を使うべきだと思うの?

502:nobodyさん
12/08/06 15:38:20.73
3はまだまだでしょ。楽しみだけど

503:nobodyさん
12/08/06 15:49:11.82
3は俺も見てみたいな。
モデル周り一新されてるらしいし。
>>501 普通最新版使おうと思うだろw

504:nobodyさん
12/08/06 15:57:02.65
>>503
これから始めるならそうだけど、1.3で作ったものがあるんでしょ?
普通使い回すだろうし、そうしないならそれなりの理由があるだろう

505:nobodyさん
12/08/06 15:57:49.75
3は今年中にアルファ版が出るかどうかってレベルでしょ。
正式版は来年以降だろうし、使えるようになるのは再来年だと思う。
つまり、まだまだ2系で良いと思うよ。

506:499
12/08/06 18:34:12.11
>>500
やっぱりやばいですかねぇ。自分自身、いつもいつもスクリプト触ってるわけじゃないんで。

>>501
いや、ただなんとなくです。
前のサイトのサーバーはPHP4だったのですが、今度のは最新の環境で出来るので、せっかくなら新しい方が楽しいかなと(^^)

>>502
まだまだ見たいでしたね。ちょっと今回は関係なさそうです。

>>503
モデル周りが変わるということは、今までの作り方とは大きく変わるんでしょうかね。
そうなるとまた勉強することが増えて大変です(汗

>>504
前のサイトはそのままにして、兄弟サイトのようなものの作成になるのですが、
クライアント様は機能的には今のままで満足されてて、
デザイン重視の要求ですので、どうやら2系の方がビューが扱いやすいような書き込みを見ましたので
一応新規で作成する予定ではありました。

ただ、使いまわせるとは思うので、検討してみます。

>>505
そうですね、3は全く手を出せる時期ではないんですね。

皆さんアドバイスありがとうございました。
時間を見つけて一度2系でプロトタイプ的なものを作ってみたいと思います。

507:492
12/08/07 00:30:47.68
一向にcakePHP2の設定がおかしいようです。

さくらのエラーログを確認してみたところ次のエラー出ています。

[Tue Aug 07 00:23:12 2012] [error] [client 222.222.222.222]
Request exceeded the limit of 10 internal redirects due to
probable configuration error.

Use 'LimitInternalRecursion' to increase the limit if
necessary. Use 'LogLevel debug' to get a backtrace.

>>493 で記載したURLのうち ② でアクセスするとダメです。

はやくこんな環境設定部分はクリアして開発したいのですが。。。まいった。

508:492
12/08/07 00:35:25.67
rewriteBase直したら行けました。

なるほど。一応ここさへ指定をしっかりしてあげればどんなディレクトリ階層でも
動きそうですね。


cakePHPって素敵w

509:nobodyさん
12/08/07 02:57:36.83
>>508
でしょ~!

510:nobodyさん
12/08/07 03:22:44.25
うん。
cakePHP って素敵だわ!!

511:nobodyさん
12/08/07 23:00:42.56 VIyBwqSF
cakePHPのヘルパーについて質問があります。

echo $this->Form->input('email',Array('label' => false,'class' => 'cb','style' => 'width:200px;'));



<div class="input text required"> ←この<div>タグに cssやstyle を設定するにはどうすれば良いでしょうか?
  <input name="data[User][email]" class="cb" style="width:200px;"
  maxlength="120" type="text" id="UserEmail">
</div>


512:511
12/08/07 23:03:59.17 VIyBwqSF
自己解決いろいろできるんだね。cakePHPは。

513:nobodyさん
12/08/08 01:47:43.67
ですです。

514:nobodyさん
12/08/08 18:28:34.00 LAYqfGos
cakePHP2.0 で下の構文は使えなくなったのでしょうか?
画面よりログインボタンを押下し
期待している動作としては、ログインに失敗した場合
ユーザ名もしくはパスワードに誤りがあります
というメッセージが画面に出る事を期待しているのですが
setFlashの方が優先されてしまいます。


public function beforeFilter()
{
parent::beforeFilter();
$this->Auth->loginError = 'ユーザ名もしくはパスワードに誤りがあります';

}


public function login()
{
       //認証NGの場合
$this->Session->setFlash(__('残念!'), 'default', array(), 'auth');
}


515:nobodyさん
12/08/09 18:05:47.44 DMpFXPo0
cakePHP2 の認証系の勉強をしています。
そこで↓を参考にしてアカウントの作成まで行う事が出来る様になったのですが
cake_sessions とusers
テーブル上のレコードを全て削除した上でアカウントを作成しても
常に

URLリンク(weble.org)

users.id の値がインクリメントされた状態で入ってしまいます。

例)
users.id = 15 の状態でこのレコードを削除し
再び登録処理を行った場合には
users.id = 1 が入って欲しいのですが
users.id = 16 が入ってしまいます。

原因をご存じの方がいらっしゃいましたらお教え下さい。



516:nobodyさん
12/08/09 18:16:09.26 DMpFXPo0
あと、 cakePHP2 でcronを走らせる場合の方法を細かく説明している
おススメサイトがあったら教えて下さい。

517:nobodyさん
12/08/09 20:07:01.62
なんでも聞くな
調べろカス

518:nobodyさん
12/08/09 20:25:01.28 DMpFXPo0
調べ方を教えろや

519:nobodyさん
12/08/09 20:35:28.78
お前のかいた「cakePHP2 でcron」でぐぐったら先頭にそれっぽいのあるだろかす
書き込むなかす

520:nobodyさん
12/08/09 20:44:18.25
>>515
idがauto incrementだからじゃねの?

521:nobodyさん
12/08/09 21:44:41.71
>>515
逆にusers.id = 1だと非常にまずい気がするんだが。

522:nobodyさん
12/08/09 21:53:08.28 DMpFXPo0
>>520
Ou!! サンキュー


>>521
なぜまずいのでしょうか?

true と判定されちゃう?とか?

523:nobodyさん
12/08/09 21:54:01.87
CAKEでもPHPでもなくDBの問題だろ
>テーブル上のレコードを全て削除した上で
オートインクリメント値を戻せよ
それなんですか?とかまた聞くなよ?調べろ

524:nobodyさん
12/08/09 22:40:10.77 /OApl7of
↑それくらいわかるわ。

525:nobodyさん
12/08/10 00:50:06.97
けんか腰になるな良く図が

526:nobodyさん
12/08/10 01:10:09.25
日本語もかけない癖して人様に文句を垂れるなよ >>525

527:nobodyさん
12/08/10 02:30:02.81
>>526
2ちゃんで何言っちゃってんの?

528:nobodyさん
12/08/10 03:20:41.62
それくらい誰でもわかるってことを
延々質問してるわけだけど

529:nobodyさん
12/08/11 02:22:52.66
ルーティングって動的に変えられるのでしょうか?
DBに登録した設定で管理したいのですが。

530:nobodyさん
12/08/11 11:13:49.63
>>529
タイミングによりますよ
普通は routes.php に記載しますから、その時点で独自にDB接続することになります。

routes.php よりも後で設定できますか?って質問なら、分からないけど多分CakePHPの想定外なのでやめた方が良いのと違う?ってことになります

531:nobodyさん
12/08/11 13:25:15.29
>>514

亀レスだけど、CakePHP2ではAPIが変わってるからドキュメント読み直した方が良いよ。
loginError っていうプロパティは無くなってます。

532:nobodyさん
12/08/11 13:51:30.91
>>530
そうですか・・。Wordpressにあるように
ユーザがルーティングパターンを選択できたらいいと思ってたんです。
無理と言うことなら諦めます。

533:nobodyさん
12/08/11 13:58:26.18
え?WPってそんなことできんの?

534:nobodyさん
12/08/11 20:59:09.76 nk3X9t5Y
コントローラで
$this->paginate = array(
'limit' => 3,
'order' => array('Foo.bar' => 'asc');
)
$this->set('foo',$this->Paginate());
としてもFoo.barのasc順になりません
数字を書き換えると1ページの上限がかわるので、1行目での設定が無視されてるわけではなさそうなんですが
どうすれば順番の指定ができますでしょうか?
ご教示お願いいたします

535:nobodyさん
12/08/11 22:14:02.92
orderってarrayで指定できたっけ?

536:534
12/08/11 22:33:59.62 nk3X9t5Y
>>535
念のため
'order' => array('Foo.bar' => 'asc');

'order' => array('Foo.bar asc');
に書き換えてみましたが順にならなかったです
よろしくお願いいたします

537:nobodyさん
12/08/11 22:41:47.17
'order' => 'Foo.bar asc'

538:534
12/08/11 22:46:39.98 nk3X9t5Y
>>537
ありがとうございます
それでも順になりませんでした
念のため他にpaginateを指定してる個所がないかスクリプトにpaginateで検索をかけたところ、
$this->paginate = array(

$this->set('foo',$this->Paginate());
しかヒットしなかったので、どこかで指定しちゃってたってことでもないようです

539:nobodyさん
12/08/12 15:50:49.77
ログイン中のユーザIDを取得するにはどうしたらいいですか?

Usersテーブルを認証用のテーブルとして使用しています。
    id / email / password / created

イメージとしては下の感じで取れそうだったんですが。

$this->Auth->id

540:539
12/08/12 15:52:15.00
自己解決しました。

541:534
12/08/13 03:34:01.92 DBWlC9mq
$this->paginate = array(

$this->set('foo',$this->Paginate());
の第三引数にorderを設定したらいけました

542:nobodyさん
12/08/14 15:24:43.09 Gol/k/SD
$this->Article->id = 3;
$this->Article->read(); // reads a third record
$record = $this->Article->data // stores the third record in $record

↑これでレコード取得できるんだけど、

$this->Article->id = 3;
$reacord = $this->Article->read();

↑これでも取得できなかったっけ?あれ?俺の勘違い??
今やってみるとNULLが帰ってきてる
$this->Article->data
ってやるとちゃんと取得できてる
今までのコードずっと
$reacord = $this->Article->read();
で取得してるコード書いてて、
それで確認できてるはずなんだけどな、、、??

543:nobodyさん
12/08/14 17:20:28.09
>>542

後者の書き方でも問題ないはず。
そしてコアのModel::read()メソッド自体は1.2から特に変わっていない。
となると、考えられる原因は
1)自前で書いたbeforeFind()でしくじっている
2)ビヘイビアで何やら起こっている
3)AppModel.phpかArticle.phpでread()メソッドをオーバーライドしていて
 コアのread()挙動が変わってしまっている

なんにせよ、debug()祭りで原因箇所を探すべし

544:nobodyさん
12/08/14 17:24:28.52
すまぬ。
>>543の1)はafterFind()で読み替えてくれい


545:nobodyさん
12/08/15 02:43:01.91
↓このスレは終了を議論しています(質問受付は停止)

PHP】下らねぇ質問はID出して書き込みやがれ 122
スレリンク(php板)

546:nobodyさん
12/08/16 04:28:57.25 4Ld1R7VY
Retrieve

547:nobodyさん
12/08/26 17:18:00.39
1週間以上レスがない・・・

548:nobodyさん
12/08/26 18:14:00.41 +ThJuMom
PHP歴5年以上、CakePHP歴1か月です
他フレームワークはSymfony, Ethnaあたりを少々

さて、CakePHP1.3+PHP5.3.3で質問です。
1. 実行中のControllerオブジェクトをViewで取得するにはどうしたらよいですか?
 Controller::getInstance()とかないのかな?
 View->set('controller', $this)とかを試したんですが、
 DebugKitとの相性が悪く、な手を模索中です。
2. AuthコンポーネントをViewで呼び出すにはどうしたらよいですか?
 Session('Auth.XXX')でも参照できるけど
 なんかプライベート変数を盗み見ているようで気持ちが悪い。

ご存知の方がいらっしゃたらよろしくおねがいしますです。


549:nobodyさん
12/08/26 18:17:02.43
そんなわけ分かんないことしたいんなら無理してCake使うなよ

550:548
12/08/26 18:22:47.13 +ThJuMom
そんなこと言わんといてー

551:nobodyさん
12/08/26 18:40:22.53 lL3DBKkv
Answer:Yiiを使え

552:548
12/08/26 18:46:51.19 +ThJuMom
Yiiは選考対象に入れていたんだけど、
知名度の低さと日本語リソースの少なさでCakeに勝てなかったんだよ。

環境さえ整えばYiiはよい選択肢だよね。

553:nobodyさん
12/08/30 10:00:09.56 /uv7B1Aq
$this->renderや$this->flashしてるのに
なぜか下のプログラムも読み込みにいって困ってるんですがどなたか理由わかりませんか?

ちゃんと動いて止まってくれるところもあるけどなぜか動き続けるところもあって違いがわからないです。

554:nobodyさん
12/08/30 11:50:06.98
下のプログラムって何のことかよく分からんから詳しく。

ひょっとして afterRender とかのコールバック系じゃないの?
そもそもプロセスの終了はControllerでは制御しない。
Controller そのものを動かしている Despatcher がいろいろやってる。

555:nobodyさん
12/08/30 11:50:58.51
(x)Despatcher
(o)Dispatcer

556:553
12/08/30 12:27:23.14 /uv7B1Aq
>>554
例えば、
if(!$this->Model>save($this->data))$this->flash("保存失敗",/index);

という感じに保存に失敗したら、真っ白の画面に「保存失敗」とだけ表示して数秒後に指定ページへ飛ばしたいのですが
実際はViewまで読み込んでしまう現状です。
exit()てきな動きをすると思ってたのですが、ひょっとして勘違いですか?

557:nobodyさん
12/08/30 13:58:28.85
return;すれば?

558:nobodyさん
12/08/31 11:00:18.38
>>556
そういうときは2系だと Controller::redirect を使うんだけど、
その書き方だと1.3なのかな?

559:nobodyさん
12/08/31 13:18:33.55
renderとかflashだと処理は終了しないので>>557の言うように処理の中断もしたいならreturnするのが正解

>>558
redirectとflashは別物だよー

560:nobodyさん
12/09/07 23:58:12.87
何でこんなに盛り上がってないんだ
cakephp2本も出るというのに

561:nobodyさん
12/09/08 00:41:43.49
オワコンだから

562:nobodyさん
12/09/08 01:18:50.89
Cakeがオワコンかどうかはさておき、
2chで情報交換する時代じゃなくなったよな

563:nobodyさん
12/09/08 01:25:56.12
>>560
いつでるの?

564:nobodyさん
12/09/08 02:31:39.98
>>562
かといって公式コミュニティはなんかお堅い感じがするし、ブログに書いても反応があるかわからないし
でもcodeなにがしが転けたりしているのを見ると技術者向けコミュニティっていうのは本当に運用が難しいんだろうな

>>563
29日だとか
執筆陣から期待が高いぜ
URLリンク(www.amazon.co.jp)

565:nobodyさん
12/09/08 09:50:55.77
Cakeがオワコンなのは事実だがスレが盛り上がらないのは
2chがオワコンなのが原因
最近どこのスレでも会話が成立しなくなってきてて困る

566:nobodyさん
12/09/08 11:04:20.78
最近2chの過疎ぶりがひどい
ブラウザの「最近読み込んだスレ」のほとんどが、俺の書き込みで止まってる
内容は普通だから、俺が悪いんじゃないぞ

567:nobodyさん
12/09/08 12:32:12.69
雑談板は普通に人いるけどな
専門板が過疎ってるだけ
なぜなら未だにsage進行にこだわったり
質問したらテンプレ嫁、みたいな10年前から進歩してないオッサンが
幅きかせてうざいから

568:nobodyさん
12/09/08 12:52:04.55
規制が厳しいせいもあるかも
auひかりとか使ってたらほぼ書き込めないだろ?

569:nobodyさん
12/09/08 13:21:35.98
専門晩に来なくなった人達は、どこに行ってるんだろうな?
公式フォーラムとかその辺がかわりに賑わっているわけでもないし

570:nobodyさん
12/09/08 14:40:44.18
1.3系で作ってた過去のシステムを全部1.3.15に上げたぜ
もう1.x系のリリースはないだろう

しかし2.x系のリリースはバージョンアップが激しくて手が出しにくいな
2.0、2.1、2.2と4ヶ月スパンくらいで出てないか?
1.2から1.3までは1年半くらいかかったのに

571:nobodyさん
12/09/08 14:57:41.60
2系はガンスルーしてるわ
対応めんどくさいから新規案件もガンガン1.3使い回して作ってる
うちみたいな零細には余計な手間かける余裕が一切ないからな

572:nobodyさん
12/09/08 15:32:24.19
>>569
ツイッターで独り言つぶやき続けてる印象
あいつらマジで非コミュだな、匿名掲示板で議論もできないのかよ

573:nobodyさん
12/09/08 15:34:11.67
まあ、このスレも>>565以下殆ど俺の自演なんだけどな

574:nobodyさん
12/09/08 16:16:43.77
>>572
ツイッターで書いてると、他の全部がめんどくさくなるからな
ブログとか俺も全然書く気がしない

575:nobodyさん
12/09/08 16:36:12.19
2系はそんなに変更点多くないし、1.3系よりかなり早くなってるよ。
更新はともかく、新規案件なら2系で作ってもメリットはあると思う。

576:nobodyさん
12/09/09 19:53:39.13
cakeってオワコンなの!?

ちょうどcakeで作ろうと思ってたのに…
今なら変えられるけど代わりのいいフレワないのだろうか…

577:nobodyさん
12/09/09 20:05:22.24
Yiiがいいらしい
使ったことないけど

578:nobodyさん
12/09/09 20:19:59.28
英語できないからcake一択

579:nobodyさん
12/09/09 20:26:41.47
英語ができるならyiiか…

一回お試しで簡単に触ってみるか

なんかcakeと似てるらしいし

どうもです

580:nobodyさん
12/09/09 20:41:24.37
そんなにCakeって日本語の資料多い?
2009年あたり以降、日本ではあまり使われていない気がするが

581:nobodyさん
12/09/09 20:50:36.97
他と比べたことないからわからないけどググったりCakePHP辞典とかは役に立ってるよ
1.Xのとか情報が古くても

582:nobodyさん
12/09/10 15:53:53.54
Cakeオワコンっていうなら何があるっちゅーの?
まぁ、PHP自体があれかもしれんがな

583:nobodyさん
12/09/10 16:01:44.70
そもそもフレームワーク自体オワコンで生PHPの時代かも


openpneだって2までは良かったんだけど3からシンフォニー()とか変なの採用してクソ重くなっただけでなくカスタマイズ性も落ちた

584:nobodyさん
12/09/10 16:20:01.42
まぁ、フレームワーク使うのは開発者が開発しやすくするためだからな
利用者にはほとんどメリット無いよ

585:nobodyさん
12/09/10 23:20:40.72
>>582
フレームワークの中ではYiiが一番良い

>>583
生はないだろ・・・めんどくさすぎるわ

586:nobodyさん
12/09/11 03:14:36.56
何だよ cakephp.org のサイトが落ちちゃってるんで、
前から騒いでる Yii ってのでも覗いてみようと思ったら
そっちのサイトも落ちてるじゃねーかw

>>585
前からことあるごとにYiiの宣伝に勤しんでるようだが、
(別人かも知れないがな)
どう良いのか書かねぇと誰も話を聞いてくれんぞ

587:nobodyさん
12/09/11 04:59:28.19
すれち

588:nobodyさん
12/09/12 00:44:18.90
Eclipse 3.7.2 Indigo

一般 > ファイルの関連付けで
*.ctp をしっかり PHP エディター(デフォルト)に関連付けて
いるにも関わらず、Eclipseから*.ctpファイルを開いても
*.phpファイルを開いた時のフォントが適用されていません。

どこか設定が間違っているのでしょうか?



589:nobodyさん
12/09/12 00:59:24.23
cakePHP使っているのに
標準のバリデーションを使わずに、
自前でController内でバリデーション処理を組み込んでいるのですが
こーいうことはしないほうがやっぱり良い?


590:nobodyさん
12/09/12 01:03:11.83
DRYに書けるならいいんじゃね

591:nobodyさん
12/09/12 01:08:25.46
>>590
実は、まだcakePHPのバリデーション機構をあまり理解していなくて(時間がないので)
既存のPHPの知識だけでコントローラ内でバリデーション処理を組んでます。
(FW使ってる意味ねーじゃんw)

592:nobodyさん
12/09/12 01:10:40.04
あっそw

593:nobodyさん
12/09/12 02:19:19.08
>>591
コントローラは質素に作るのが定石。
そのやり方はたぶんまずい。
使い方が分からなければ、ロジックをモデルに書いておいて後でリファクタリング。

594:nobodyさん
12/09/12 02:33:05.48
>>593
アドバイスサンクスです。
※現在は、モデルは形上テーブル数分用意してますが
特にこれといったコードを書いていないです。。。
おいおい勉強してゆきます。

595:nobodyさん
12/09/12 02:45:41.26
>>594
まずこれを読むといいと思ってどこかに上がってた翻訳を探してたんだが
見つけられなかったスマン。
URLリンク(bitfluxx.com)

概要はここでわかる。
URLリンク(blog.syuhari.jp)

俺も始めコントローラにゴリゴリ処理を書いて納品したあとで
この知識を知って、この記事を早く読めばよかったと心から悔やんだ。
コントローラに複雑な処理を書くとあとで泣きを見る確率激高だ。
趣味でやってるんならじっくり覚えていけばいい。

596:nobodyさん
12/09/12 05:14:49.77
>>595
ありがとうございます。
モデルの本来の使い方をやっと知った感じです。

コントローラに何でも詰め込んでいましたが
モデルに検索機能とかを移動させたら大分コードがすっきりしました。

597:nobodyさん
12/09/12 10:25:29.96
バリデーションて使ったことないんだけど
ユーザー入力からのデータを保存する際には使った方がいいのか

598:nobodyさん
12/09/12 11:06:09.67
君次第だ

599:nobodyさん
12/09/12 13:35:01.67
どうでもいいってことか

600:nobodyさん
12/09/12 14:33:36.86
Cake2.2にしたけど、どうしてもredirectするとセッションが空になるという問題が起きて
2日ぐらい調べているけどわからない
海外フォーラムとか見ても多発してるが解決策がない模様
1.3に戻すか…

601:nobodyさん
12/09/12 16:00:33.62
>>600
あぁ、どっかで回避策読んだなぁ、、、
割と簡単に解決できるようなこと書いてあった。

602:nobodyさん
12/09/12 18:21:16.88
うーむぐぐってもぐぐっても解決法が見つからん
古いバージョンのなら出てくるんだけど、当然試してもダメだった

よく調べるとリダイレクトすると空になるんじゃなくて、
リダイレクト前後でsession_id()が異なる値を返し、リダイレクト前にwriteした値が正しく保存されてないようだ
何故こうなるのかがわからない

603:nobodyさん
12/09/12 19:14:19.36
>>600
Cakeってこういうバグたくさんあるからいやなんだよ

604:nobodyさん
12/09/12 19:19:58.01
同感。まだまだ旧バージョンを使い続けた方がいいみたいだな
1.3も1.3.10ぐらいまではひどいバグあった、テーブル全消し喰らったり

605:nobodyさん
12/09/12 19:24:44.80
Cakeに限った話じゃないが、セッションてデバッグしにくいよな

606:nobodyさん
12/09/12 20:06:50.64
セッションがどれぐらい保持されるかっていう設定もややこしすぎるしCake

607:nobodyさん
12/09/12 23:23:35.18
セッション切れは多分存在しないcssとかjsとか呼び出しちゃってんじゃないか
なんでもcakeのバグとか言わない。

608:nobodyさん
12/09/13 00:03:27.42
>>600
普通にできるけど?

609:nobodyさん
12/09/13 07:33:06.03
既存のWebアプリに外部に機能を提供するAPIを追加したいんだけど
APIでのユーザ認証はどんな風に実装するのが普通でしょうか?
APIへのセッション情報の受け渡し方法が判らないです・・・

610:nobodyさん
12/09/13 08:19:36.38
クッキーで渡すしかない?

611:nobodyさん
12/09/13 10:08:21.91
Oauth

612:nobodyさん
12/09/13 11:09:41.72
>>611

トークン管理(発行・破棄)とか多重ログイン対応とか考えると大変そう・・・

613:nobodyさん
12/09/13 11:11:51.90
あっそ

614:nobodyさん
12/09/15 18:54:29.08
score_daily

って名前のテーブルを定義しようとしたら
score_dailies にしろってエラーがcakeから返されるんだけど
どうも daily は形容詞であり、複数形など無いので
凄く納得が行きません。

テーブル名称は、複数系にしなくちゃならないのでしょうか?

615:nobodyさん
12/09/15 18:58:42.11
daily_scores


いやならmodelにuseTableで指定すればいいだけ

616:nobodyさん
12/09/15 19:28:52.44
>>615
!!!Good!!!

617:nobodyさん
12/09/17 13:46:54.01
コントローラーのアクション関数中で$this->redirectを書いたら
それ以下の行は実行されないという認識であってまっすか

618:nobodyさん
12/09/17 14:23:03.05
>>617
第3引数次第。デフォルトではそれでOK。

619:nobodyさん
12/09/17 16:12:43.15
>>618
なるほど㌧です

620:nobodyさん
12/09/18 10:50:35.32
Cake2.2
core.phpで Configure::write('debug', 0);としていても、エラー時にCakeのエラー表示が出てしまいます
出さないようにするにはどこで設定するのでしょうか?

621:nobodyさん
12/09/18 22:18:22.36
php のエラーじゃなくて?

622:nobodyさん
12/09/18 22:38:41.86
です。Cakeのエラーです。

引き続き調べていてわかったのは、PHPにエラーがある場合にそうなります。
存在しないURLを入れた場合には、CakePHPのエラー表示用の?ソースコードが吐かれます。頭にCakeのコメント付きの。

これでは困るので、なんとかならないでしょうか。何かおかしいと思うのですが…。
エラーがなければ正常に動いています。

623:nobodyさん
12/09/19 00:47:19.09
error_reporting(0) はしてみた?

624:nobodyさん
12/09/19 08:58:59.05
コントローラとかビューでdebug上書きしてるんじゃないの

625:nobodyさん
12/09/19 10:46:33.83
2でどのくらい速くなったの?ざっと見た所構造同じだし、速くできるような違いが見当たらなかったが
モデルの遅延読み込みで速くなったって、アソシエーション使ってなければ関係ないんじゃないの?

626:nobodyさん
12/09/19 16:01:01.46
>>625
URLリンク(d.hatena.ne.jp)

627:nobodyさん
12/09/19 16:03:18.26
>>626
㌧クス
Verあがるたびに遅くなってるw

628:nobodyさん
12/09/19 16:28:46.26
2.1でテストしている限りには速く感じたけど、
>>626見ると、バージョンアップしていく毎に遅くなるのか。

まぁ、機能が増えるから遅くなるのはわかるけども

629:nobodyさん
12/09/19 16:56:44.01
このやり方じゃボトルネックがよく分からんが、
DBをメモリに乗せてないだろうからDB接続を確立させるコストが一番高いんだろうな

そういう意味じゃどのFW使っても大差ないと思うし、バージョンの差分などは気にするほどでもないと思う。

630:nobodyさん
12/09/19 16:58:04.41
つまり1.3でも大差ないってことだ

631:nobodyさん
12/09/19 18:20:17.13
感覚的には1.3系より2系の方が速く感じるけどな

632:nobodyさん
12/09/19 19:49:16.34
っていうか、実際早いんだろ

633:nobodyさん
12/09/19 20:54:32.34
少しはな

634:nobodyさん
12/09/20 01:40:17.08
じゃぁ良かったじゃん

635:nobodyさん
12/09/20 04:06:56.13
元が遅いからそんなによくない

636:nobodyさん
12/09/20 10:15:47.13
じゃぁ何が早いのさ

637:nobodyさん
12/09/20 10:32:10.03 ir1LF+Ba
Cake2.2を使ってます。
各アクションのsetメソッドで1つづつ値を渡す方法でなく
AppControllerから一括でViewの全てのディレクトリのctpに変数を渡す方法ってありますか?



638:nobodyさん
12/09/20 10:52:45.15
beforeFilterかbeforeRenderあたりに書けば良いんでないの

639:nobodyさん
12/09/20 11:02:18.03
Cake2.2を使ってます。
掲示板を作っていて、スレタイモデルとレスモデルが
スレhasManyレス
レスbelongsToスレ
になっているのですが、レスが追加された際にスレのmodifiedを自動更新する方法ないでしょうか?
counterCacheを使うとレス数カウントはできるのですが、更新時刻も取りたいです

640:nobodyさん
12/09/20 16:59:36.49
>>639
そんなロジック実装してないよ。
Modelに書いとけ。

641:nobodyさん
12/09/22 18:00:13.95
counterCacheの存在を初めて知った


642:nobodyさん
12/09/22 18:06:13.12
アソシエーション便利だけど、裏ではどんだけ無駄な処理が実装されて動いてるんだろうな
findやsaveを1回する度にCPUが悲鳴を上げているような気持ちになる

気になるので今度lib以下のソース見てみるか
使わない機能はばっさりコメントアウトとかしちゃおうかな

643:nobodyさん
12/09/22 18:12:35.09
そういうのがもっと整理されれば速度も上がるんだけどね

644:nobodyさん
12/09/22 19:00:02.06
cakephpは使わないコードはなるべく読み込まないような実装になっているはず

645:nobodyさん
12/10/01 00:47:57.77 fpJxZWOx
ファイルのアップロードで、fileに対するバリデーションのことなんですが、
ファイルが指定されていたらファイル形式、ファイルサイズなどをバリデーションにかけて、
指定されていなかったらかけない、という書き方がわかりません
どうしたらいいんでしょうか?

646:nobodyさん
12/10/01 02:38:43.69
ファイルのアップロードでファイルが指定されている/いないって意味がよく分からないし、
どこで躓いているのかもよく分からないし、
CakePHPのバージョンも分からないので答える気が失せる質問だから、
何となくvalidate 系のコールバックをうまく使えばいいじゃんとしか言えない。

647:nobodyさん
12/10/01 05:38:17.07
if (isset($_FILE['image'])) {
//ファイルがアップロードされた場合のバリデーション
} else {
return true;
}

素のPHPで言うと、こういう事じゃないの?

648:nobodyさん
12/10/01 07:27:09.08 qwXCS9RT
>>646
$form->file()でファイル渡せる状態になってるフォームで、
そこにファイルを指定したときだけファイルの中身のバリデーションをかけたいってことです

>>647
ありがとうございます
allowEmptyみたいな感じで、
<input type="file">にファイルを指定していなければバリデーションルールはスルーする
みたいな簡単にできるものってないんでしょうか?

649:nobodyさん
12/10/01 10:28:51.05
簡単には出来ないよ。俺もルールは自作してるよ

650:nobodyさん
12/10/01 10:29:01.17
>>648
>>1
>質問するときはCakePHPのバージョンを書きましょう

651:nobodyさん
12/10/01 10:30:55.20
俺は簡単にできてるけど、やってみてできなかったの?

652:nobodyさん
12/10/01 20:09:57.83 fpJxZWOx
>>649
ありがとうございます自作してみます

>>650
echo Configure::version();してみたら1.3.8って出ました
書き漏れすみません

>>651
allowEmptyでは無理でした
普通にエラー警告(ファイルの形式を見て、jpgでなければ警告を出すようにしてました)が出ました

653:nobodyさん
12/10/01 21:49:36.94
Cake2本がついに発売されてるのか
2のリリースから1年も経って、やっとまともな本が一冊
うれしい

654:645
12/10/01 22:08:47.24 fpJxZWOx
>>649
>>647のやり方でうまくいきました
みなさまありがとうございました

655:nobodyさん
12/10/02 01:23:26.02
いまだ1.3使ってる人いるんだな
何故2系を使わないのか

656:nobodyさん
12/10/02 03:11:43.69
使う理由がないから

657:nobodyさん
12/10/02 15:09:48.22
さすがに新案件は2系だな

658:nobodyさん
12/10/02 18:17:45.17
これまで書いたコードを、2対応に書き直す時間がないお

659:nobodyさん
12/10/02 18:23:04.39
そんなに時間かからないよ

660:nobodyさん
12/10/02 18:26:06.05
>>659
きちんとテストコードをかいてるひとには苦行だぞ

661:nobodyさん
12/10/07 03:32:25.58 vSsbr+AJ
CakePHPでバリデーションエラー時に
エラーメッセージをまとめて一箇所に表示する方法ってある?

662:nobodyさん
12/10/07 10:11:59.83
>>661
無い

663:nobodyさん
12/10/07 15:15:02.59
ちょっと前に同じ話が出てたはず
ログ見るべし

664:nobodyさん
12/10/12 18:03:03.50 zHaiJKat
最終ログイン時間を記録する場合どういう実装をするのが適切でしょうか?

僕が思いつくのは、
app_controller.phpのbeforeFilter()に、
アカウントテーブルのlastloginに現在の時間をupdateする方法です

ログインのアクションに記述すると、
クッキーで自動ログインしている際などはそのアクションを通らないので不適切でした

なにか他に良い方法ありますでしょうか??

665:nobodyさん
12/10/12 23:39:10.35
自動ログインの場合も記録したいというのならそれが正解なんじゃないかな

666:nobodyさん
12/10/16 15:59:26.74
はてブで見かけた、
「外注が作ったCakeのコードが糞だから書き直した」的なブログ記事。
「お前のコードも糞じゃねぇか」って叩かれてワロタw

てか、俺の書き方が意外と駄目じゃないと知っただけでも収穫あったぜ

667:nobodyさん
12/10/17 20:17:29.91
URLくれくれ

668:nobodyさん
12/10/17 20:54:19.04
URLリンク(ac7.tumblr.com)
これかな

669:nobodyさん
12/10/18 00:28:24.24
cakePHPの勉強を始めようと思い、ver2から始めようと思ってます。
「プロになるためのPHPプログラミング入門」という本が良さそうと思ったんですが、
ver1.3基準で書かれているようです。
cakePHP2を勉強するうえで、1.3基準の本は有用でしょうか?

670:nobodyさん
12/10/18 01:17:25.05
有用ではありません。
もうcake2の本はあるんだからそっち選びなさい。
CakePHP2 実践入門 は評判良いぞ。

671:nobodyさん
12/10/18 23:55:26.47
>>669
670に同じく今さら1.3の本を読むのは時間のむだ。
公式のチュートリアルを何回も繰り返して手順を身体に覚えこませてから
>>670 の本を読むといいと思うよ。

672:669
12/10/22 14:14:23.93
遅くなりましたがアドバイスありがとうございました

673:nobodyさん
12/10/24 12:14:02.26
2.2.2を使用しています。
Authコンポーネントのログインで、認証条件を付ける時、
以下のようにすればOKとあったのですが、条件が適用されません。
書き方が違うのでしょうか?

$this->Auth->userScope = array( 'User.status'=>1 );

674:nobodyさん
12/10/24 14:29:36.53
さくらサーバーをレンタルし、2.2.2のソースをCakeファイル直置きでアップロードした所
同コントローラの別アクションへredirect処理が行なわれなくなりました。
$this->redirect(コントローラ名:アクション名)を試してみても
$this->redirect(相対パスor絶対パス)の形でも
どちらの形式でも正しくリダイレクトが行なわれていないようです(真っ白なページが表示される)
何か間違っているのでしょうか

675:674
12/10/24 15:50:39.87
とりあえず動かす為にJavaScriptで遷移させます
お騒がせしました

676:nobodyさん
12/10/24 16:28:04.62
>>673
それ、1.3の書き方なんじゃないの?
よく分からんけど公式ドキュメントにそんなプロパティ載ってないよ
1.3ならあったみたいだけど

>>674
真っ白=debugモードが0でいいのかな?
だとしたらキャッシュクリアしてみた?

677:nobodyさん
12/10/24 16:30:39.54
>>673
今改めて見直したら AuthComponent::$authenticate じゃないかな?

678:673
12/10/25 09:13:43.26
>>676-677
ありがとうございます。
自分もソースを見直したら、以下のようにしたら実行できました。

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

679:nobodyさん
12/10/26 15:07:41.06
ファイルアップロードを今まで自作コンポーネントで扱っていたのですが、
これってモデル(ビヘイビア)の処理ですかね?
コントローラ側でエラーチェックとかアップロード先のパスとか書いていくと
長くなるのでどうすれば納まりが良く、使い回しが利くかと悩んでいます。


680:nobodyさん
12/10/26 15:44:39.23
679ですが、後から考えたらコントローラに入れる方が小回り利きますね
効率化よりも今まで書いていた方法で行きます。

681:nobodyさん
12/10/26 17:58:57.48
まぁ、それでいいなら構わないけど、Modelだよ普通は。
あとプラグインもいいのあるけど、何で使わないの?

682:nobodyさん
12/10/26 19:01:29.27
>>681
自分の使い方だと、コントローラの方が良いと思いまして。

例えば、一度アップロードしたファイルはセッションに入れて、
フォームのその他の項目にエラーがある時は、
そのセッションを表示して再アップロードさせない。

みたいな処理を入れる時、セッションコンポーネントを使うので、
モデル内で解決するより、コントローラの方が簡単だと思いまして。

あと、プラグインも小回りが利かないんです。
ファイル名をいくつかのパターンで生成したい時とか、
最初は仮フォルダにアップして、save前に公開画面のフォルダに移動するとか
そういう細かい仕様に対応するには自作の方が便利なんです。
ファイルアップロードの仕組みを自作する事自体は簡単ですし。

683:nobodyさん
12/10/26 19:24:22.60
言わんとしてることは大体わかるけど、CRONの処理とかはないの?
テーブル無しのUploadFileモデルとか作った方が小回り効くような気がする・・・


684:nobodyさん
12/10/28 17:11:17.13
CakePHP2.2.2を利用しています。
コントローラーからビューにメンバ変数の連想配列を渡したいのですが、躓いています。

下記の Controller にて、
class UserController extends AppController {
 var $hoge = array();
 public function beforeFilter() {
  $this->$hoge['foo'] = 1;
  $this->set(compact('hoge'));
 }
}
として View 側で$hoge['foo']を呼び出そうとして、
Undefined variable: hoge
のエラーが返ります。
compactを使用しない場合でも同様でした。

URLリンク(book.cakephp.org)
を参考に考えてみたのですが、何か思い違いをしていますでしょうか?


685:nobodyさん
12/10/28 17:19:31.98
>>684
$this->set('hoge',$this->hoge);

686:nobodyさん
12/10/28 17:25:23.15
>>685
すんなり解決しました。ありがとうございます。
提示内容を見て、どう思い違いをしていたのか理解しました。
これに半日かけてドキュメントを漁っていましたが、もう少し基本を勉強したいと思います。

687:nobodyさん
12/10/29 12:31:19.66
CakePHP 2.2.2で
一度だけ使えるクーポンを定義しようとしていて
'Model.coupon' => 'hoge'
で保存しておいて

checkルーチンで
'Model.coupon' => 'hoge'でfindし、見つからなければfalse
見つかったら'Model.coupon'=>'' でからにしてsave後 trueを返す。
というのを作ったのですが、 saveするとfalseが返ってきます。
saveをしなければ trueのまま返るのですがなぜなのでしょうか?

688:nobodyさん
12/10/29 12:39:28.07
>>687
バリデーションチェックでnotempty指定してるとか?

689:687
12/10/29 13:21:50.79
>>688
SQLのダンプを表示させたところ
findのSQLは どちらも同じなのですが、Num.rowsが saveした方では0になります。
save後にfindが走っているってことでしょうか

690:nobodyさん
12/10/29 13:44:36.50 h036kd/w
apps/Console/CommandHogeShell.php
この中で定義したメソッドに引数を渡す事ってできないの?

CUIから内部で定義したメソッドをキックすると
Warning Error: Missing argument 1 for HogeShell::Test()

っていうエラーが出ちゃうんだけど。

691:nobodyさん
12/10/29 13:55:16.32
マニュアル読みなさい

692:nobodyさん
12/10/29 15:09:32.64
findについて質問です。
以下のようなモデルがあるとして
A hasMany B

B belongsTo C

A.id = 1のCのリストを取得

$this->A->find('all', 'conditions'=>array('A.id'=>1))として
取得した中のBの中に含まれるCをとってくるしかないのでしょうか

SQL文としては以下のようなものを想定しています。
SELECT C.* FROM A, B, C WHERE A.id=1 AND A.id = B.a_id AND C.id = B.c_id


693:692
12/10/29 15:56:52.28
'joins'で紐付けできました。
お騒がせしました

694:687
12/10/29 16:35:42.03
find();
SQLダンプと結果の出力
exit;
save();
だと、SQLダンプと結果はNumrows = 1 (データ更新されていないので何度呼び出しても、、)ですが

find();
SQLダンプと結果の出力
save();

だと SQLダンプは同じで、Numrows=0になります。
後ろで行った saveが 前に書かれたfindに影響を与えるというのがどうしてなのかがわかりません。



695:nobodyさん
12/10/29 16:45:00.54
なにいってんだこいつ

696:687
12/10/29 16:49:40.01
Queryを見ると saveを入れた方は

1. SELECT 文 Num.rows = 0
2. SELECT COUNT文
3. UPDATE 文 Num.rows = 1
となっていました。

3の結果が1へ影響しているみたいです。

697:nobodyさん
12/10/29 19:04:11.24 h036kd/w
>>691
マニュアルのどこにかいてんのさ。

698:nobodyさん
12/10/29 19:18:29.22
書いてあるから隅々まで全部読みなさい

699:687
12/10/29 19:20:25.68
すいません、私のブラウザのせいでした。
へんな機能拡張がページを2回呼んでたみたい

700:nobodyさん
12/10/30 00:25:02.95
>>697
cakephpでコマンドで引数を渡す

とかでぐぐればいくらでも出てくるだろボケ

701:nobodyさん
12/10/30 16:38:01.14 sDbMhdsy
>>700
サンキュー。


あと
$contents = @file($reading_file_name );

の @ ってなに?

702:nobodyさん
12/10/30 16:42:13.00
>>701
URLリンク(www.google.co.jp)

703:nobodyさん
12/10/30 17:21:19.86
>>701
お前はPHPの基本からやり直せ

704:nobodyさん
12/10/31 01:06:58.14
フレームワーク以前の問題ですな

705:nobodyさん
12/10/31 12:18:01.71
>>701
顔洗って出直してこいw

706:nobodyさん
12/10/31 15:08:44.33
passedArgsとgetの共存ってどしたらいいすか?
formヘルパから作られるgetをrest的なpassedArgs形式で渡したいッス。

example.com/controller/action/arg1:val1/arg2:val2/?arg3=val3
ってなってるヤツを
example.com/controller/action/arg1:val1/arg2:val2/arg3:val3
としたいッス。

js使えば行けるし受け側でgetの処理をすればいけるんだけど、こうすれば楽じゃね?的なご指摘あればうれしいです。
>>671
現状はactionでgetとごちゃまぜにしたり、場合によってはappControllerでget優先で$this->passedArgsを書き換えてる感じッス。

707:nobodyさん
12/10/31 15:10:54.24
了解ッス

708:nobodyさん
12/10/31 19:38:39.19
>>706
バージョン書けって
2系ならある程度分かってるから教えられるけど、
passedArgsってパラメータは1.3系なのかよ?

709:nobodyさん
12/10/31 20:41:07.57
>>708
2っすわー。

710:nobodyさん
12/10/31 22:21:21.64
>>709
URLリンク(api.cakephp.org)
FormHelper::create($mode, $options) の、第2パラメータ $options に、
'url'をキーとしたパラメータをセット。

'url' の値は string | array で、そういうパラメータを渡したい場合は
連想配列で構造を渡す。
CakePHPのルータがこの連想配列のURLパラメータと現実のURLを相互変換するのは理解OK?

で、通常のURLパラメータに該当しないキーで値をセットすると、
・・・つまり
array('arg1'=>'val1', 'arg2'=>'val2')
のようにやると、やりたいことができる。

711:nobodyさん
12/10/31 22:50:43.25
何いってんの?
formにゅうりょくちをコロンセパレートにしたいんだろ
formってそういう仕様だから、自分で言ってるとおりjsでがんばる。それかばかだけどリダイレクトしちゃえ

712:nobodyさん
12/10/31 23:58:50.04
んなもんそれ以外の方法で出来るわけねーだろ

713:706
12/11/01 11:41:29.98
みんな色々意見あざす~。

結局ちまちまやるっきゃないぽいっすね~。
みんなそうしてるんかね~。マンドクサ

714:nobodyさん
12/11/01 13:50:06.03
俺もフレームワーク使う限りには効率的なやり方を模索して
長時間、あれやこれやと試すことがあるけど、
目的は「動く」事だから、効率化や綺麗なソースよりも
まずは動くことを目指してやると良いよ。こだわりすぎはいかんぞ。

715:nobodyさん
12/11/01 15:07:46.14
cakephp2.2を使用しています。
ビューからrequestActionでカテゴリを取得しようとしているのですが、
$this->requestAction('/widget/category');

widgetコントローラにcategoryアクションが無い場合は
どうすればいいのでしょうか?
単なる構文ミスでエラーになるのですが、
存在確認みたいなコードがあれば教えてください。

716:nobodyさん
12/11/01 16:54:03.16
>>714
納品してポイなら良いんだけどね~。
何年か自分たちでメンテしていくことになるときには気分の良いコードの方が精神衛生上いいなぁと。

まぁそうは言ってもね、一年前のコード見てすごく気分悪くなるんですけどねw

717:nobodyさん
12/11/03 21:12:09.24 nZj97DWz
質問なんですけど、cakePHP 2.0 で認証時に使用するテーブルの列の名前を
id じゃなくて login_id にしたいんですけど、この列名って固定なんでしょうか?

718:nobodyさん
12/11/03 21:18:17.79 X1g36ZBW
$primaryKey

719:nobodyさん
12/11/03 21:43:28.47
>>717

primaryKey を login_id に設定した上で
下記コードを記述しました。

<td><?php echo $this->Form->input('login_id',
Array('label' => false,'style' => 'width:150px;')); ?></td>

するとなぜか、コンボボックスが表示されてしまうんですけどなんでしょうか?

720:nobodyさん
12/11/03 22:58:33.57
マニュアルのFormの項目見たりFormHelperのAPIリファレンスみたりソース見たりしてきて

721:nobodyさん
12/11/03 23:04:10.03
適当に調べてみます。

722:nobodyさん
12/11/03 23:10:32.22
>>719
FormHelper::input は、オプションの自動補完機能があるんですよ~

で、***_id っていうフィールド名の場合、フォームのデータ型を指定しないとselect扱いになるというわけ。

それを回避するには、オプションで明示的に'type'を'text'とかに指定する。

723:nobodyさん
12/11/04 00:26:48.52
>>722
ありがとうございます。全くしりませんでした。。。
別な方法で迂回して対処しようとしてました。。。

724:nobodyさん
12/11/04 00:44:08.63
AdminsController.php の中に次のコードを書いています。
public
$uses = Array('User'),
$components = Array(
'Session',
'Auth' => Array(
'loginRedirect' => Array('controller' => 'admins', 'action' => 'index'), // ログイン後のリダイレクト先
'logoutRedirect' => Array('controller' => 'admins', 'action' => 'login'), // ログアウト後のリダイレクト先
'loginAction' => Array('controller' => 'admins', 'action' => 'top'), // ログインしていない場合のリダイレクト先
'authenticate' => Array('Form' => Array('fields' => Array('username' => 'email')))
)
);

そしてブラウザより
/admins/add にアクセスすると問題無く /admins/addのコントローラが実行され
/Views/Admins/add.ctp が表示されるのですが

/admins/addcustomer にアクセスすると、/admins/top に飛ばされてしまいます。
なぜ、/admins/add がリダイレクトされないのに /admins/addcustomer だと
リダイレクトされてしまうのでしょうか?
※add() { //略 } をコピーして作成したコントローラ内のファンクションが addcustomer () { //略 }となります。


725:nobodyさん
12/11/04 11:00:47.88
CakePHP 5.0ぐらいになったら使う

726:nobodyさん
12/11/04 12:56:08.07
>>1にあるフォーラムで新規登録したいのだけど、フォームから登録しても全く音沙汰無し。
ニュースリリース見ると2006年で登録止まってるし、管理者からは放置されてるのかな?
フォーラム自体の投稿はぼちぼちあるから古参だけの閉じた環境になってる?

727:nobodyさん
12/11/04 13:01:18.74
Cakeで作ってあるからバグってるとかなんじゃないの
知らんけど

728:nobodyさん
12/11/04 13:16:21.36
フォーラムはxoopsじゃないか

729:nobodyさん
12/11/04 19:10:28.20
なぜCakeで設計しないのか?!

730:nobodyさん
12/11/04 21:38:37.79 eiB+7ElR
画面上に次の2つの入力項目があります。
そのうち、1)と2)で入力された値の組み合わせのチェックを
独自バリデーション内で行いたいのですが
どうすれば、独自バリデーションファンクション内でサブIDの値を
捕捉する事が出来ますか?

1)基本ID ( basic_id )
2)サブID ( sub_id )

public $validate = Array(
'basic_id' => Array(
'dokuzi' => array(
'rule' => array('isCorrectId', 'ダミーの引数'),
'message' => '独自バリデーションの結果エラーが出ました。。'
)


function isCorrectId($data, $dummy_args)
{
$basic_id = $data["basic_id"];
$sub_id = {サブID}; ← どうやって取得したらいいか分かりません。
return true;
//return false;
}

731:730
12/11/04 21:56:02.04 eiB+7ElR
お願いです!誰か教えて下さい。
はまりまくってます。

732:nobodyさん
12/11/04 22:07:20.84
>>730
バージョン不明なので2と仮定して、
定石的に Model に定義しているのを前提に。

Post されたデータなら
$this->data['Model']['basic_id']
$this->data['Model']['sub_id']
で参照出来ると思うけど、何でわざわざ関数に引数渡すの?
あと”ダミーの引数”って書き方だけだと配列で渡しているか不明なんだけど、
配列で渡してないから参照出来ないんじゃないのか?

733:nobodyさん
12/11/04 22:10:34.23
>>731
数レス進んでいる中でスルーされているんならわかるが、
無レスで催促求めるんなら2ch向いてない、ヤフー知恵袋あたりに帰れ

734:730
12/11/04 23:39:10.86 eiB+7ElR
>>732
ありがとうございます。

次の様に項目毎に独自バリデーション関数を指定したところ
ファンクション内で var_dump($data); をしたら
画面上の入力項目(基本ID、サブID)の値も取得出来る様になりました。


public $validate = Array(
'basic_id' => Array(
'dokuzi' => array(
'rule' => array('isCorrectSequenceNumber'),
'message' => '独自バリデーションです。'
)
),
'sub_id' => Array(
'dokuzi' => array(
'rule' => array('isCorrectSequenceNumber'),
'message' => '独自バリデーションです。'
)
),




次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch