【PHP】フレームワーク CakePHP 13ホール目【v2.0】at PHP
【PHP】フレームワーク CakePHP 13ホール目【v2.0】 - 暇つぶし2ch420:nobodyさん
12/01/06 06:11:17.85
セッションファイルってどれだけ溜めてもいいもん?
云万になるとlsが遅くなる気がするけど、
PHPがセッションファイルを直接取ってくるんならとくに大丈夫なのかな

421:nobodyさん
12/01/06 07:36:47.81
>>420
全列挙する必要がある ls には O(N) 必要
それに対して目的のファイルが判っている場合は O(log N) に収まる
古いファイルシステムだとまた話が変わってくるが

422:nobodyさん
12/01/06 07:42:05.08
>>421
100万あっても無視できる程度になりそうですね

423:nobodyさん
12/01/06 09:12:24.69
ファイルってインデックス化されるん?
そらされるか…

424:nobodyさん
12/01/06 10:03:42.70
インデントはスペース派なんだけど、
Cakeはタブだよね?

スペース派の人どうしてる?
Cakeに合わせてる?

425:nobodyさん
12/01/06 11:54:55.28
プロジェクトや会社によってはPEAR規約(っぽいもの)で開発してたりするよ

426:nobodyさん
12/01/06 14:42:53.01
cakephp2.0を置いてHelloコントローラとindexアクションとhelloビューを作って
URLリンク(localhost)にアクセスするとhelloビューの内容が読み込まれましたが
URLリンク(localhost)にアクセスするとcakephpのreadme見たいな感じのページがでてしまいます
URLリンク(localhost)にアクセスした場合のデフォルトのコントローラをhelloにしたいのですがこれはどこのファイルに設定するのでしょうか?

427:nobodyさん
12/01/06 15:56:30.42
routes.php

428:nobodyさん
12/01/06 23:03:59.16
>>424
自分で書いたコードはスペースインデント
routes.phpとか既に用意されているファイルはタブインデント
一人プロジェクトだから細かいことは(゚ε゚)キニシナイ!!

429:nobodyさん
12/01/07 08:27:20.92
携帯からアクセスがあったときは、
app_controller の before_filter で

header('Content-Type: application/xhtml+xml; charset=Shift_JIS');
という風にHTTPヘッダの content-type と charset を設定して、本来

Content-Type: application/xhtml+xml; charset=Shift_JIS
このヘッダが送られるはずが、

Configure::write('debug', N);
この設定を、0(デバッグ無し)に変更すると、

Content-Type: text/html
と、出力されてしまう。
(3 にするとちゃんとxml用のヘッダが送られるのは確認済み)

このケースが逆なら、手動でヘッダを送る前にデバッグ情報が送られているのかなと思うのですが、
デバッグ無しにすると、別のヘッダが送られているのが不思議です・・・。

どのファイルのどこでHTTPヘッダが送られているかって確認できましたっけ?

430:429
12/01/07 08:33:08.99
大事なことを言い忘れていました。
>>429の現象はさくらの本番サーバにアップしたときにのみ起こります。
開発環境のlocalhostではdebugの値に関係なく、
意図したHTTPヘッダが送られています。

アドバイスいただければ幸いです

431:nobodyさん
12/01/07 12:27:32.35
一部のアクションでしか使わないコンポーネントを全部ロードするのは無駄ですが
アクションに応じて、ロードするコンポーネントを変更することはできないのでしょうか?


432:nobodyさん
12/01/07 13:24:04.51
>>431
App::importは?

URLリンク(book.cakephp.org)

433:nobodyさん
12/01/07 13:52:12.56
>>432
リンク先は違う情報だったけど要は
App::import('Component', 'Mailer');
$Mailer = new MailerComponent();
$Mailer->initialize( $this );
$Mailer->startup( $this );
ってやればいいのかな?


434:ひろみちゃん
12/01/07 17:28:25.09
>>431
2.0からコアの機能で動的に読めますが、1,x系は拙作のHackプラグインを使うことによって
期待する機能が提供されます。
URLリンク(github.com)
Alias->loadComponent('Mailer');
startupするかは第3引数にtrueを指定すればOKです。
ドキュメントが整備されてないのですが需要があればします。
あとプラグイン名が厨二病臭いですが厨二病なので諦めてください。

435:nobodyさん
12/01/07 17:52:24.37
>>434
ありがとうございます
拝見しましたが、思ったより長いですね
>>433のやり方じゃ駄目で、このようにきっちりやるべきなんでしょうか

436:ひろみちゃん
12/01/07 18:00:20.89
>>435
短期的には>>433のやり方でも問題ないです。
メールのマネージャー程度のコンポーネントならまず大きな問題は起こりえないでしょう。
長期的に見れば、2.0で導入されるやり方に近いほうがより良いと思います。

437:nobodyさん
12/01/07 18:15:00.53
わかりました、ありがとうございます
コードはありがたくいただきます

438:nobodyさん
12/01/07 21:17:09.01
2.0でこのAdminAuthComponentがちゃんと動いている人いる?
URLリンク(www.1x1.jp)

開発環境では問題なかったんだけれども、レンタルサーバーに上げてみたら
> header("WWW-Authenticate: Basic realm=\"Please Enter Your Password\"");
のところが効いてないのか、Basic認証のダイヤログが出ずにAuthorization Requiredと表示されてしまう。

HTTPヘッダーを見てみたところ、開発環境(正しく動いている環境)では
>HTTP/1.1 401 Authorization Required
となっているのが、本番(正しく動かない環境)では
>HTTP/1.1 200 OK
が出てしまっている。

ちょっと>>429の状況に近いかも知れないけど、自分の方はdebugの値に関係なくheaderがちゃんと送信されてない感じ

439:438
12/01/07 21:49:27.70
すまん、自己解決
CGI版のPHPだとBasic認証効かないのね

440:nobodyさん
12/01/07 22:13:13.36
2になってからちょっと軽くなった?
1.xと比べてシャキシャキ動いてる気がする

441:nobodyさん
12/01/07 22:51:46.73
2.0.5ぐらいになってるけど、バグは減った?

442:nobodyさん
12/01/07 23:02:34.52
なに、動きが軽くなるなら乗り換えたいが

443:nobodyさん
12/01/08 01:17:09.40
何となく軽いと言うだけでベンチを取ったわけじゃないので話半分に聞いてくれ

444:nobodyさん
12/01/08 03:29:35.66
そうか、ベンチ取った人とかいないのかな

445:nobodyさん
12/01/08 14:39:21.96
URLリンク(doophp.com)
dev版だけど、多少軽くなってるみたいだな

446:nobodyさん
12/01/09 00:29:39.74 pfm1AGOc
controllerでfindするときのorderを
'order' => array('Person.secondname ASC')
のようにしているんですが、複数のorder条件をつけるのはどうしたらいいですか?

具体的には苗字順に並べるようにしてるんですが、苗字がない人は下の名前(Person.firstname)を参照して五十音で並べたいです

447:nobodyさん
12/01/09 00:37:51.69
自己解決しました
$options['order'] = array(
'Person.secondname, Person.firstname ASC'
);
で$optionsをうしろにくっつければいけました

448:nobodyさん
12/01/09 00:53:14.64
>>446です>>447では解決してませんでした。。

449:nobodyさん
12/01/09 01:58:03.73
orderがarrayになってるんだから分かるだろ?

450:nobodyさん
12/01/09 06:19:15.24
コントローラーで
function index($param){
とアクションを作っていて、URLで
コントローラー名/index/パラメータ
と呼ばすに
コントローラー名/パラメータ
とやっても動くようにするにはどうすればよいでしょうか
ぐぐるとRoutesを使う例が出てきましたが、それだと他のアクションが使えなくなるようでした
アクションとして存在しない時のみ、indexのパラメータとして扱うことはできないでしょうか

451:nobodyさん
12/01/09 08:57:47.96
>>450
$paramが数値なら、ルーティング規則でその部分に(数値であることの)正規表現を書けば
いける。詳しくはぐぐって。
だめだったらカスタムルートオブジェクトを作成してひーこらするしかない。頑張って。

452:nobodyさん
12/01/09 08:58:56.35
その部分にってのは紛らわしいなごめん
Router::connect()の第3引数で指定するってこと。

453:nobodyさん
12/01/09 09:04:31.25
調べ中ですがまだうまくいっていません
ちなみに$paramは文字列で、複数ある場合もありますが大丈夫でしょうか

454:nobodyさん
12/01/09 09:46:49.44
数値ならってわざわざ書いたのはなんでだと思う?

455:nobodyさん
12/01/09 23:29:06.48
cakephpのサイトだけ紹介してるサイトないかな

456:nobodyさん
12/01/09 23:34:27.49 SU3KFcHv
2になって、AuthComponentがかなり洗練されたね

457:nobodyさん
12/01/09 23:37:13.69
CakePHPでページを表示すると下の方にsqlを200件だしているような表示になります
これは実際に200件実行してるということでしょうか
すると問題ありますかね

458:nobodyさん
12/01/09 23:43:44.32
件数取得してるだけじゃないのか?
sqlを200回実行してるわけねーだろ


459:nobodyさん
12/01/09 23:49:11.21
>>458
ありがとうございます。
(default) 262 queries took 46 ms こう表示されてました。

460:nobodyさん
12/01/09 23:55:34.73
>>459
262回クエリ投げてるな
どんなページだか知らないがさすがに多すぎると思う
っていうか、自分で実装したコードなんだろうからクエリ回数くらい検討つくだろう
アソシエーションで勝手にいっぱい持ってきているのならcontainableで引っ張ってくるデータを厳選すればいいぞ

461:nobodyさん
12/01/09 23:58:51.05
>>460
ありがとうございます。
containable調べてみます


462:nobodyさん
12/01/10 01:48:35.15
containつかったら88 queriesまで減らせませした


463:nobodyさん
12/01/10 03:05:48.92 Rzgwr3Tg
CakePHP2.1alpha を早速いれて試してみたが、エラーメッセージ(スタックトレース)がかなり見やすくなってる

464:nobodyさん
12/01/10 05:46:55.61
Cakeって気付くとめちゃめちゃクエリ投げてるよね
遅い原因の一つはこれか?

465:nobodyさん
12/01/10 10:19:59.29
今頃気づいたのか
Yiiにしとけ
CakePHPはオワコン

466:nobodyさん
12/01/10 12:07:44.08 +4VQFJJn
v1.2の話なんだけど
aテーブル
bテーブル
a_bテーブル
があるとして
a にhasAndBelongsToManyを設定して
a_b にbelongsToを設定したら、このbelongsToがスルーされる。なぜだかわかる?
削除用に設定したいんだけど、毎回bindModelするしかないのかな。


467:nobodyさん
12/01/10 12:11:35.74
Yiiってほとんどのレンタルサーバーで使えないじゃんw

468:nobodyさん
12/01/10 13:05:20.54
PDO使うからか?

469:nobodyさん
12/01/10 13:14:52.36
Yiiっていいの?

470:nobodyさん
12/01/10 13:32:02.30
>>466
recursive設定するのはどうかな

471:nobodyさん
12/01/10 19:50:56.57
最近2.0使ってるんだけど、本番環境時に/foos/barとか適当なURLにアクセスすると
表向きは404返してくれるんだけど、error.logにmissing controllerが記録されるようになった気がする
テスト環境時はmissing controllerエラーを表示してくれてOKだけど、本番でそれがerror.logに記録されるのはなんか変じゃないか?
/robots.txtとか/favicon.icoとかにアクセスがあったら、ひたすらerror.logに記録されちゃってるし(ファイルがない場合)

472:nobodyさん
12/01/10 21:31:38.90
それ、php.iniの設定では?

473:471
12/01/10 22:52:12.56
>>471
説明不足ですまぬ
/app/tmp/error.logに記録されまくって困っている

474:nobodyさん
12/01/11 09:07:32.93
>>471
.htaccessでなんでもかんでもCakePHPに渡すようになってる事が問題

475:nobodyさん
12/01/11 16:35:42.80
設定でExceptionHandlerがログを取るかどうかが指定できたような気がする
今再インストール中で確認できないが

476:471
12/01/11 19:36:53.02
>>474
1.3の頃はそんなことなかったんだけどなあ

>>475
サンクス
ちょいと調べてみる

477:nobodyさん
12/01/12 06:51:34.68
2.0ではController::cakeError()の代わりにどうやってエラー画面出すの?

478:nobodyさん
12/01/12 13:41:50.62
>>477
URLリンク(c-brains.jp)

479:nobodyさん
12/01/12 20:06:56.05 srRhUW1K
>>470
返信サンクス
解決方法探し当てた。
URLリンク(d.hatena.ne.jp)

480:nobodyさん
12/01/13 01:39:04.98 ayVGOPQu
通常セッションの有効期限はcore.phpで設定すると思いますが、
コントローラーの中で動的に変更したい場合どうすればいいですか?

481:nobodyさん
12/01/13 17:22:59.89
Cakeで作られたサイトのフォーム見ると、

<input name="data[Post][title]"
じゃなくて
<input name="title"

になっている場合があるのですが、
これって単にフォームヘルパーを使ってないだけですかね?
それともフォームヘルパーでnameを配列にしない方法があるのでしょうか?

482:nobodyさん
12/01/13 18:28:21.82
Cakeのヘルパーは使えないことで有名だからな


483:nobodyさん
12/01/14 21:18:17.06
関数で帰ってきた配列を代入せずに、
そのまま添字付けることって可能?

test()['test']

みたいな

484:nobodyさん
12/01/14 21:28:07.86
やってみりゃいいじゃん

485:nobodyさん
12/01/14 21:47:35.89
できなかったから他の方法ないかなぁと思って
内部的に戻ってきた配列に添字つけて参照するだけだし、
難しそうではないんだけどなぁ

486:nobodyさん
12/01/14 21:55:23.06
あーよく俺もそれできたらいいなと思う
つーかCake関係ないやんそれ

487:nobodyさん
12/01/15 00:09:42.08
function getValueFromFunc($func,$key) {
$a = $func();
return $a[$key];
}

488:nobodyさん
12/01/15 15:39:15.61
URLリンク(blog.s21g.com)
こんな感じでURLを丸ごとパラメータとして渡したいんですが
Cakeでやる方法があったら教えてほしいです

489:nobodyさん
12/01/15 16:40:34.32
cakeってパラメータにメタ文字使えないんじゃ

490:nobodyさん
12/01/16 17:55:18.55 l7Fd5fgU
.NET interoperability overview of Phalanger 3.0
URLリンク(www.php-compiler.net)

491:nobodyさん
12/01/16 19:49:38.62
>>485
PHPの公式コミュニティ行って頼んでこいよハゲ

492:nobodyさん
12/01/17 00:47:37.68
1.3.10使ってるんだけど、cccが3のレコードのaaaとbbbを更新したくて

$this->updateAll(array('aaa' => 1, 'bbb' => 2), array('ccc' => 3));

だと失敗して

$data = $this->find('first', array('conditions' => array('ccc' => 3), 'field' => array('id')));
$data['ModelName']['aaa'] = 1;
$data['ModelName']['bbb'] = 2;
$this->save($data);

だと成功する。今まで2年ぐらいCake使っててこういうの初めてで、何故だかわからないんだけど
わかる人いる?

493:nobodyさん
12/01/17 01:07:49.33
>>492
1個目の例で失敗しそうにないけど、何て出て失敗するの?

494:nobodyさん
12/01/17 01:37:40.29
事故解決。これでした
URLリンク(stackoverflow.com)

495:nobodyさん
12/01/17 02:50:02.37
Cake2.0を使ってます。モデル内でコンポーネントを使っていて
PHPUnitでそのモデルをテストすると
Fatal error: Class 'Component' not found in /path/to/Controller/Component/HogeComponent.php on line xx
と怒られる。

ちなみにモデル内でのコンポーネントの呼出はこんな感じ。
App::uses('HogeComponent', 'Controller/Component');
$hoge = new HogeComponent(new ComponentCollection());

Call Stackの最後にはinclude( '/path/to/Controller/Component/HogeComponent.php' )とあるんだけど
これはコンポーネントのインクルードでなにか問題があったということかな?

コンポーネントが見つかりませんというエラーメッセージについて分かる人いたら教えてください。


496:nobodyさん
12/01/17 02:58:24.75 7jQnUKTc
斜め読みだけど、その HugeComponent の冒頭に
App::uses('Component', 'Controller');
と付け加えればよいのでは?

497:nobodyさん
12/01/17 04:10:42.74
それならテストコードにつけるべきだな。
モデルでコンポーネント使う設計についてはもはや何も言うまい

498:nobodyさん
12/01/17 08:53:23.17
>>496
斜め読みすげえ!
エラーが消えてテストできるようになったよ。サンクス!

499:nobodyさん
12/01/17 11:04:16.23 7jQnUKTc
>>498
CakePHPは、2になってクラス階層を意識する場面が多くなったと思う。
2.1ではさらにその傾向が強くなっている。
2で開発しているのだったら、今のうちに2.1にアップグレードしておくのをおすすめする。

500:nobodyさん
12/01/17 15:19:00.74
2.1ってそんなに変わるのか?
リリースによれば2.0と完全後方互換があるらしいけど

501:nobodyさん
12/01/17 16:07:54.57
1.3で開発してるけど、後々問題になりますか?

502:nobodyさん
12/01/17 17:59:13.26
>>501
1.3→2系の移行は結構な手間になるから
新しく作るなら2にしといた方がいいんじゃないすかね。

503:nobodyさん
12/01/17 20:03:02.72
フレームワークのほうが面倒になるとか本末転倒だな

504:nobodyさん
12/01/17 20:24:27.94
Phalanger 3.0 (2012年1月) をリリースしました。
スレリンク(poverty板)


505:nobodyさん
12/01/17 20:36:02.54
>>501
ディレクトリ階層がかなり変わったので、別物と考えた方がいい。

506:nobodyさん
12/01/17 21:29:13.39
みんなはもう2系で開発してるの?情報少なくないか?

507:nobodyさん
12/01/17 23:25:43.99
ゼロから始める人には入門情報が少なくて厳しい状況かも知れないね
でも1.x系の開発経験あれば、マイグレーションガイドを見つつ書いていけば何とかなる
何とかならなかったときにはこのスレがある

508:nobodyさん
12/01/18 11:54:09.09 1MLy4CWB
v2のメリットは、実行速度の向上につきると思う。
問題は、既存の資産が直接使えなくなったこと。
特にAuthまわりは、完全に変わってしまっている。
これまで、直接 Auth コンポーネントをオーバーライドして機能拡張していたんだけど、すべて書き直して、プラグイン化した。
*機能拡張の内容は、「ユーザ登録確認メールの送信」「オートログイン」「SSL対応」「権限チェック」。
しんどかったけど、今後のプロジェクト間での使い回しと拡張性が確保できた点では、それなりのメリットが見込めそう。
メール送信も大きく変更された部分だが、これはすばらしい出来。

509:nobodyさん
12/01/18 14:59:56.52
Authが異なるのは辛いな・・。
メール送信や画像アップロードはライブラリ作ってるけど、
Authはフレームワーク全体に関わることだからな

510:nobodyさん
12/01/22 17:25:08.97 MxKFDdQF
1.3系での話しですが、日本語メールを送る場合
EmailComponent::templateで指定したファイルの文字コードは
UTF-8もしくはShift-JIS、どちらが正しいのでしょうか?

511:nobodyさん
12/01/22 22:16:15.47
文字コードで迷ったらutf-8がいいですよ。
あとあと楽です。

512:nobodyさん
12/01/23 00:38:44.40
全角含まないで保存すると元に戻るのが煩わしい

513:nobodyさん
12/01/23 06:06:15.69
function add() {} // 保存アクション
function edit() {} // 編集アクション
↑8割方同じ処理をしているアクションがあるときどうしてる?
俺はaddに同一処理かいて、
エラーや編集のときの個別処理だけeditに書いてるんだけど、
アクションのURLが違うからエラーでの書き込みフォームに戻る処理などが難しい
editでreturn;するとeditビューが呼ばれてしまう

514:nobodyさん
12/01/23 11:36:23.68 Vo1w/brb
echo $form->select('Order.prefectures', array(
'北海道' => '北海道',
'青森県' => '青森県',
'岩手県' => '岩手県',
'宮城県' => '宮城県',
'秋田県' => '秋田県',
'山形県' => '山形県',
'福島県' => '福島県',
'茨城県' => '茨城県',
(中略)
'鹿児島県' => '鹿児島県',
'沖縄県' => '沖縄県'
), 1, array('empty' => null, 'class' => 'orderform')) . PHP_EOL;
と書いたんですが、出力をみると一つ目の北海道にselectedがついてなくて、

<option value="福島県">福島県</option>
option value="茨城県">茨城県</option>

と茨城県だけ頭の<が出ないです
茨城の項目を削除すると、次の栃木の頭の<が消えるので福島が原因かと思ったんですが
福島を消しても栃木が消えるので8個目が消えるという感じかも知れないんですが
解消する方法ご存知でしたらお教えくださいますようよろしくお願いいたします



515:nobodyさん
12/01/23 12:43:46.65
日本語文字コードじゃね?

516:nobodyさん
12/01/23 15:21:45.11
>>515
ありがとうございました
google chrome の問題だったみたいです

517:nobodyさん
12/01/23 16:49:13.48
>>513
俺はaddとeditは一緒にaddの中に書いて、idがあるかどうかで条件分岐してるわ
アクション分けたいならfunction _addOrEdit()みたいなのをつくって、共通処理はそこに突っ込めば?

518:nobodyさん
12/01/24 16:24:41.34
cake2.0でdatetimeのフォームから送信した年月日が,配列のままDBに格納されようとしてエラーが出ます。
deconstructが効いていない理由がわかりません…助けて。

view:
echo $this->Form->label('birthday', '生年月日');
$minY = date('Y')-100;
$maxY = date('Y')-18;
echo $this->Form->datetime('birthday', 'YMD', null, array('monthNames' => false, 'minYear' => $minY, 'maxYear' => $maxY, 'separator' => array('年', '月', '日')));

コントローラ:
if(!$this->Hoge->save($this->request->data)) {
$this->Session->setFlash('データの登録に失敗しました。');
}

Formヘルパー(separatorの配列対応):
//$opt = implode($separator, $selects);
$opt = "";
$i = 0;
if (is_array($separator)) {
foreach($selects as $select) {
$opt .= $select.$separator[$i];
$i++;
}
} else {
$opt = implode($separator, $selects);
}

519:nobodyさん
12/01/24 22:58:24.14
>>518

手元で検証してみたら、確かにModel::deconstruct()が仕事しなかった。
んで、最新版落っことしてきて、コアの部分をすげ替えたら動いたよ。
cake2最初期版はなんか問題があったんかもしれんね。

ついでにもうひとつ。
FormHelper::dateTime()だけど、引数の取り方変わってるよ。
その書き方でほんとにプルダウン生成されてるかい?

URLリンク(book.cakephp.org)

520:519
12/01/24 23:16:35.15
連投すまんぬ。もうひとつ捕捉。
DBにdate型とかでbirthdayフィールドが存在しなければ
Model::deconstruct()はきっと何もしてくれない。
Model::deconstruct()のメソッド内にある
$type = $this->getColumnType($field);
で有効な値が取れて初めて機能する模様。

なんともはや。。。


521:nobodyさん
12/01/25 16:31:52.13
2.1でAppControllerとかのファイルが無くなっているんだけど、
これは今後のバージョンで無くすということ?使うなということ?

522:521
12/01/25 16:40:31.53
すまん、libの中から消えただけで、appの下に標準で含まれるようになったのか。


523:nobodyさん
12/01/26 22:25:16.80
2月中に2.1正式版出るかなー
今2.0でリリースすると中途半端な気がして、2.1のリリースを待機している・・・

524:nobodyさん
12/01/27 13:11:04.23
Cakeからの移行先って何か考えてますか?
そろそろPHP5.3仕様のフレームワークに移りたい・・・
あと、データが配列なのももう嫌。

今のところ、正式版でてるのはSymfony2かFuelPHPかな?
Yiiも次期バージョンでは5.3を使うらしい。

525:nobodyさん
12/01/27 13:56:20.77
なんで配列は嫌なの?

526:nobodyさん
12/01/27 14:58:32.50
配列嫌ならRoR行こうぜ

527:nobodyさん
12/01/27 15:19:00.44
>>525
たとえば、ビューがifだらけになっちゃうことなどです。
バーチャルフィールドである程度は対処できますが、
限界がありますし・・・

528:nobodyさん
12/01/27 19:36:57.17
PHPUnit3.6インストールしたら、debug()とか出力されなくて
マニュアルを確認すると
「TipAll output is swallowed when using PHPUnit 3.6+. Add the --debug modifier if using the CLI or add &debug=1 to the url if using the web runner to display output.」
test.phpで走らせてるので、URLに&debug=1をつけたのですが
何も出力されません。わかる人いたら教えてください。

環境
CakePHP 2.0.5
PHPUnit 3.6.9

529:nobodyさん
12/01/27 20:38:59.59
>>527
そんなこと無いけど。
どういう場面でviewがifだらけになるのか、想像つかん

530:nobodyさん
12/01/27 21:51:47.71
1.3.14ですが、webrootの中にフォルダを作り、
同名のコントローラにアクセスすると、そのフォルダを読みに行ってしまいます。


/webroot
└/test
└index.php

の場合、URLリンク(example.com)
でアクセスすると、/webroot/test/フォルダ内のindexファイルを探す

同名のフォルダがあった場合、コントローラーを読み出すようにするには
どうすればいいのでしょうか?

531:nobodyさん
12/01/27 22:30:54.56
>>524
配列が嫌って、PHP全否定じゃないですかw

532:nobodyさん
12/01/27 23:47:52.29
>>530
仕様
別名にするか.htaccessを書き換えるしかない

533:nobodyさん
12/01/28 16:14:55.65
sqliteってすごく便利だったのね

534:nobodyさん
12/01/29 02:29:16.25
ページネーションのソートの際に、対象フィールドのリンクには
<a class="desc" のようなclass名が付くと思うのですが、
1.3.14では付きません。なにか設定方法が変わったのでしょうか?

535:nobodyさん
12/01/29 20:34:45.68
1 -> 2 -> 3
と遷移する画面があるとして、1でPOSTされたdataをそのまま3で使いたい時
どうすればいいかね?
2でinput hiddenで埋め込むしかないの?

536:nobodyさん
12/01/30 01:35:56.87
>>535
これどうだい?
URLリンク(github.com)

537:nobodyさん
12/01/31 20:54:05.78
なんで2.0になってから404 Not Foundもapp/tmp/error.logに記録されるようになったん?
ボットの適当なアクセスでerror.logが更新されまくって困るんだが

538:nobodyさん
12/01/31 21:27:48.91
>>523
今、2.0系で開発してるんだが、2.1系とどれくらい互換性あるのかね
2.1まで待てばよかったかなぁ・・・

539:nobodyさん
12/02/01 14:03:22.66
find("all")で全レコードをviewで一覧出力したあとで,
リンクをクリックすると絞り込み検索して,結果を一覧表示させる方法がわからないです。

全レコードの出力はindexアクションなんだけど,
絞込検索の方は,また別にアクションを書く必要があるの?
それともindexアクションの中で絞り込むことってできるの?

540:nobodyさん
12/02/01 14:31:02.84
最初の一覧表示を「全部が含まれる絞り込み」と考えればコードは一つ。

541:nobodyさん
12/02/01 18:11:27.88
>>538
2.1は2.0完全互換なので問題なく動くはず
ただ2.1でも重要な部分のアップデートがあるから、その辺はどちらにせよそのうち直すことになりそうだけど

542:sage
12/02/03 01:46:58.38
Roadmaを読むと3.0でネームスペースの導入とオブジェクトを返す仕様にするとあるな。

543:sage
12/02/03 01:48:56.31
RoadmaでなくてRoadmapな!


544:nobodyさん
12/02/03 03:11:07.37
× Roadma
○ Readme

スペルは正しく書きましょう

545:nobodyさん
12/02/06 21:53:18.73
CakePHPつかえば彼女できるの

546:nobodyさん
12/02/07 02:09:02.39
ちいたん Yiiつかってまた戻ってきた
やっぱり人口が多いのが一番だね英語知らないから

547:nobodyさん
12/02/07 14:09:10.01
ちいたんもYiiもcodeIgniterも
俺的にはオレオレと変わらないと思ってる。

多少動作が重くても、扱える人口が多いことに意味がある。

548:nobodyさん
12/02/07 19:26:51.77
>>547
明らかにYiiはCakePHPより優れてるよ
日本人の使用者人口が増えれば日本語のリソースも増えてくると思うし
英語がダメな人はもう少し待つほうがいいかもな

549:nobodyさん
12/02/07 19:36:59.22
>>548
本当にYiiが優れてるのなら、もっとブログで情報発信したりスレに書き込んだりしてくれよ
軽く触った感じではCakePHPに次いでいい感じだったけど、ユーザー少なそうで本腰入れる気になれない
ユーザーいないから情報出なくて、情報出ないからユーザー増えないという悪循環にはまってる感じがする

550:nobodyさん
12/02/07 20:08:39.28
で、自分しか使ってないなら=オレオレと変わらないんじゃね?
って考えになるんだよな。

551:nobodyさん
12/02/07 22:20:42.14
>>549
>ユーザーいないから情報出なくて、
日本語で情報探すとそう感じるけど、
英語で探すとけっこう出てくるよ。
てかドキュメントがしっかりしてるからあんま必要ないけどね。

まぁ世界全体でだけど、こんな感じの伸び率
URLリンク(www.google.co.jp)
YiiがCakePHPやCodeigniterと差を縮めていってる
CakePHPに関しては減ってる

日本でもだんだん増えるよ、確実に
ブログはたまに書いてる

552:nobodyさん
12/02/07 22:31:26.34
頑張って俺様のためにドキュメントを増やし給え

553:nobodyさん
12/02/07 23:03:57.00
>>552
おk
お前もせいぜい英語勉強しろよw

554:nobodyさん
12/02/07 23:28:06.02
未だに英語がわからん奴とかいるわけがない
都市伝説だろ

555:nobodyさん
12/02/07 23:37:30.16
明日電車に乗ったら隣の席の人に英語で話しかけてみてください

556:nobodyさん
12/02/08 00:23:47.88
英語が分からんわけではないが、日本語情報が無いと裾野が広がらないと思う

557:nobodyさん
12/02/08 00:28:52.97
はやくして

558:nobodyさん
12/02/08 01:22:28.31
英語わかんねえんだよ
わかればこんなFW使わねえよ

559:nobodyさん
12/02/08 01:28:31.64
こうやって技術者格差って広がっていくんだな

560:nobodyさん
12/02/08 02:25:56.05
cakeが一番わかり易い

561:nobodyさん
12/02/08 02:43:04.37
今の時代、英語と中国語出来れば、どの職業でも食いっぱぐれないだろうな

562:nobodyさん
12/02/08 04:51:19.10
そんなことされたら警察呼ぶわ

563:nobodyさん
12/02/08 10:25:56.72
英語ができればこんなスレにはいない

564:nobodyさん
12/02/08 11:00:04.88
英語できるんだけど、どこに行けばいいの?

565:nobodyさん
12/02/08 11:28:41.60
英語でおk

566:nobodyさん
12/02/08 12:08:44.04
which site is the best discussion forum for cakephp? give me urls.

567:nobodyさん
12/02/08 12:11:29.75
Hi, Guys!

568:nobodyさん
12/02/08 12:14:52.18
what's up?

569:nobodyさん
12/02/08 12:15:51.13
I'm stealth marketing now.

570:nobodyさん
12/02/08 12:18:45.15
Oh really ?

571:nobodyさん
12/02/08 12:19:03.41 FLeGKhAC
a peace of cake!

572:nobodyさん
12/02/08 12:22:28.38
Fack YOU 板違いだにょ

573:nobodyさん
12/02/08 12:40:57.21
lol

574:nobodyさん
12/02/08 15:48:30.68
>>572
oh... miss spell
repeat after me
"Fuck You"

575:nobodyさん
12/02/08 16:25:40.59
thank you,good gay!

576:nobodyさん
12/02/08 16:54:59.72
>>574
Fuck you

577:nobodyさん
12/02/08 17:01:40.67
O mae mo naa

578:nobodyさん
12/02/08 18:10:15.72
your "CakePHP" is common file, on libs or vendors?

579:572
12/02/08 18:39:58.51
小学生かこいつら

580:nobodyさん
12/02/08 21:36:31.59
>>564
日本で専門色翻訳になれば儲かる。

581:nobodyさん
12/02/08 21:44:51.18
>>578
if you use 12.x, on vendors.
if you use 2.0.x on libs.

582:nobodyさん
12/02/09 13:37:44.09
フォームヘルパーの使い方について質問です。

○商品A   ○商品B
■■■    ■■■

○がラジオボタンで、■が商品の画像だとします。
フォームヘルパーのoptionsに配列で選択肢を指定したら
横並びの入力項目が出来るので、
画像付きのこういった表現が出来ません。
どうすればいいのでしょうか?

583:nobodyさん
12/02/09 14:57:42.21
>>582
配列で一気にラジオボタン出すんじゃなくて、別々に出せばいいんじゃないの

584:nobodyさん
12/02/09 16:32:37.53
>>583
いけました。仕様を勘違いしていました。ありがとうございます。

585:nobodyさん
12/02/10 12:20:32.03
質問です
pagenatorのhasNextのような関数を、コントローラー内で呼ぶにはどうすれば良いですか?
ぐぐってもビューでヘルパーを呼び出す方法しか出てきません
コントローラー内で、次のページがあるかどうかで分岐する処理が書きたいです

1.3です

586:nobodyさん
12/02/10 18:01:43.96
質問です

cakephp2.0.6 php5.3.6 apache2.2.17
という環境でcakephpをインストールし接続してみたのですが

Missing Method in AppController

Error: The action webroot is not defined in controller AppController

Error: Create AppController::webroot() in file: app\Controller\AppController.php.

このような文がでて接続がうまくいきません。どなたかご教授お願いします。

(cakephp1.3だとちゃんとRelease Notes for CakePHP 1.3.14に表示されます。)

587:nobodyさん
12/02/10 18:21:21.51
エラーメッセージを良く読め

588:nobodyさん
12/02/10 18:52:31.16
>>587
すみません、いろいろとググったのですがみつからず困ってました。

AppControllerにアクションwebrootがみつからない
ファイルapp\Controller\AppController.php作ってwebroot()を作れ

っと言われてると思うのですが、実際に作るとphpでのエラーがでてしまいます。

Fatal error: Class 'AppController' not found

申し訳ありませんが、ヒント頂ければと思います。

589:nobodyさん
12/02/10 20:19:58.49
>>588
app\Controller\AppController.php
には正確にはどう書いた?

とうか、そもそも、どういうディレクトリにインストールして
どこにアクセスしてる?

590:nobodyさん
12/02/10 20:55:32.66
httpd.confの設定がおかしいと想像。

document rootと、http側のrootが一致してないと見た。

591:nobodyさん
12/02/10 21:02:16.73
webrootが正常に読み込めてないな。
そのあとのエラー的に、>>590の言うとおりパスがおかしいんじゃないかと。
あとhttpd.conf内でmod_rewriteは設定してるよな?
まずはhttpdの設定を見直すよろし。

592:nobodyさん
12/02/10 21:02:49.14
>>589

中には表示されていた
<?php
class AppController extends AppController {
public function webroot() {
}
}

?>←これはなかったので付け足しました

と書きました
ディレクトリはC:\Users\fruit\Desktop\www\sns\cake\2.0\app\Controller\AppController.phpに保存しています
アクセス先はURLリンク(localhost)です

URLリンク(localhost)でのアクセスだとIndex of /php/cake/2.0/app/webrootになってしまいます。

またapacheには
<Directory "C:\Users\fruit\Desktop\www\php\cake">
AllowOverride All
</Directory>
と記述してあります。


どうでしょうか、よろしくお願い致します。

593:nobodyさん
12/02/10 21:04:40.72
>>591

mod_rewriteの設定ですが#ははずしてあります。

594:nobodyさん
12/02/10 21:06:52.99
ごめんさい記述みすしていました

正確には
ディレクトリはC:\Users\fruit\Desktop\www\php\cake\2.0\app\Controller\AppController.phpに保存しています

でした 。wwwをlocalhostとしています。

595:nobodyさん
12/02/10 21:13:17.18
>?>←これはなかったので付け足しました
php.iniで、それの有無に関しての挙動が変更できる。

現在のPHPのデフォルトは、「閉じタグ ?> が無い事が標準」となってる。

初学者なのは分かるけど、いきなりフレームワークに手に入れるとか愚の骨頂。
どれだけの人数がテストしてると思ってるの?

596:nobodyさん
12/02/10 21:26:19.60
>>595
そうだったんですね。初めて知りました!
ありがとうございます。

597:nobodyさん
12/02/10 21:37:46.65
>>589,590,591

一通りhttpd.confをみなおし、ルートも確認し
>>595のとおり?>もはずしてみましたがやはり直りませんでした。

どなたかわかりそうな方いましたら、よろしくお願い致します。

598:nobodyさん
12/02/10 22:18:06.68
>>597
ルートを確認したっていうことだけど、
httpd.conのDocumentRootはどう書いてあるの?

599:nobodyさん
12/02/10 22:22:19.33
>>598
DocumentRoot "C:/Users/fruit/Desktop/www"
<Directory "C:/Users/fruit/Desktop/www">

このように設定してあります。

600:nobodyさん
12/02/10 22:31:07.86
脱線だが、デスクトップにファイル置いて開発するとか、みんなそうしてるの?
アクセス権限とか切り分けが面倒になるから、俺はドライブルートから
浅い所にファイルを置くんだが。


601:nobodyさん
12/02/10 22:40:32.26
>>600
俺はMac使ってるけど
cake本体は /Library/ の中、appは /Users/俺/ウェブ開発/○○アプリ って感じ。
jquery関係とかよく使うアセットはcake本体側に入れとけば複数app作るの楽だし

602:nobodyさん
12/02/10 23:53:22.09
>>599
・http.confにOptions FollowSymLinksの指定がしてあるか
・そもそもmod_rewriteはLoad Moduleされてるのか
・apacheのエラーログ確認
・各.htaccessにrewrite baseの設定が要るかも?

603:nobodyさん
12/02/11 00:17:43.73
>>600
ふつうはしない。
が、初心者はだいたいそうする。

604:nobodyさん
12/02/11 00:55:37.73
どなたか>>585お願いします

605:nobodyさん
12/02/11 02:53:33.10
>>604
ヘルパーはApp::importで読み込んでnewすれば使えるけど、
わざわざ呼ばんでも
debug($this->paginate)とかdebug($this->params)とかやったらなんかヒントあるんじゃね?

606:nobodyさん
12/02/11 08:51:11.48
>>602
Options FollowSymLinksは記述してためしてもAppController.phpのエラーが返ってきます。

Load Moduleはしてあります

apacheのエラーは
[Sat Feb 11 08:43:04 2012] [error] [client 127.0.0.1] PHP Fatal error: Class 'AppController' not found in C:\\Users\\fruit\\Desktop\\www\\php\\cake\\2.0\\app\\Controller\\AppController.php on line 2
となっていてブラウザ上でみるphpエラーと同様になってます

rewrite baseを設定してみたらcssが読み込まれなくなりました

607:nobodyさん
12/02/11 13:31:36.87
>>606
携帯からなんで詳しい設定名わからんけど、
index.phpをインデクスファイルとして読み込む設定になってないんじゃないの

608:nobodyさん
12/02/13 23:59:06.34
1.3でjoinしているカラムをソートするにはどうすればいいのでしょうか?
$paginator->sort('投稿数', 'Post.total_num')

みたいにビューに書いてもソートされません。

609:608
12/02/14 00:16:33.57
自己レスです。virtualFields使えば出来ました。
今まで使い方を理解してませんでしたが、
$this->User->virtualFields = array(
'total_num' => 'COUNT(Post.user_id)'
);

みたいにすればいいんですね。

610:nobodyさん
12/02/14 03:08:29.79
CakePHPかRubyOnRailsを習得するなら
どちらを優先的にすべきですか?

RORのほうはサーバーの構築からが必要だったりでお気軽感覚では出来ず導入のための敷居は高い気がします。
しかし、Deviseというプラグインがあったりするので、いちいちユーザー登録や、ユーザー管理、ログイン管理の機能を作らなくても済んだりします。

一方でCakePHPなら未だに情報交換が活発になされてますし、あまり環境にこだわらずフォルダごと、ぶちこめば大抵うごいてくれます(データベース設定やパーミッション等はありますが)


両方出来る人とかに聞きたいのですが、どちらがオススメですか?

611:nobodyさん
12/02/14 03:20:43.81
趣味か仕事かどっちだ?

612:nobodyさん
12/02/14 03:29:17.24
仕事で使うならこれからはCodeigniterだよねやっぱり

613:nobodyさん
12/02/14 03:51:01.11
今からCake覚えて何かいいことあんの?

614:nobodyさん
12/02/14 10:42:41.43
>>610
好きな方か、仕事で教えてくれる環境にある方。
ぶっちゃけやることは変わらん。

615:nobodyさん
12/02/14 15:53:13.31 XKQCpFOZ
CakePhp2.0初心者で勉強しています。
セッションを使用して、異なるコントローラー間でデータの受け渡しを行いたいのですができません。
使用方法が間違っているのでしょうか?

異なるコントローラー間で以下の2行を実行しています。
$this->Session->write('id','hogehoge');
$hoge = $this->Session->read('id');


core.phpのセッション設定は以下の設定です。

Configure::write('Session', array(
'defaults' => 'php'
));


616:nobodyさん
12/02/14 17:04:00.93
>>615
上の一行をあるコントローラでやって、
下の一行を違うコントローラでやってると言う意味だよね?

まず下の一行を実行する前に

if($this->Session->check('id))
でセッション変数自体が存在しているか確認するのはやってみた?

617:615
12/02/14 17:37:28.16
>>616
返信ありがとうございます。
windows環境で作成をしてて、なぜかPCを再起動したら取得できましたm(_ _)m ナゾです・・ 

618:nobodyさん
12/02/14 23:58:24.06
>>611
趣味ですが
仕事にも将来的には生かせればと思います

619:nobodyさん
12/02/17 14:11:59.26
index.phpからcakeにアクセスするだけじゃなくて、
別名を付けたファイル名からアクセスしたい場合、
ファイル内に $_GET['url'] = '/user/index' みたいに書けば良いだけですかね?
表向きはピュアPHPみたいなURLにしたいです。

620:nobodyさん
12/02/17 14:33:54.66
>>619
意味が分からん。

foobar_controller.php
foobar_index.ctp
foobar_alt_index.ctp

URLとファイル名は必ずしも強固に1体1対応で無くてもいいんだよ。
render('ctpファイル名')でいくらでも描画先変えられるし、redirectでもいい。

特定のURLのみ、URLのファイル名とは異なるctpファイルを読み込みたい場合は、
controller側でfunction URL名(ファイル名)を作ればいくらでも好きなファイルをrender出来る。

621:nobodyさん
12/02/17 14:47:34.93
>>620
そうじゃなくて、基本的にcakeにアクセスするのって
webtoor内のindex.phpと.htaccessを元にしてるじゃないですか?
それを通さないで、単体のファイルで動かしたいって事です。

622:nobodyさん
12/02/17 14:50:28.33
勝手に動かせばいい

623:nobodyさん
12/02/17 22:15:37.39
>>618
cakephp覚えたところで仕事無し
railsならあるぞ

624:nobodyさん
12/02/17 22:18:17.74 /liskI/Y
>>623
あなたはないかもしれないが、こちらは一杯あるよ

625:nobodyさん
12/02/17 23:19:48.84
railsの仕事なんて見たことないな
たまたまだろうけど

626:nobodyさん
12/02/17 23:35:34.41
cakephpにはrailsのdeviseのような
痒いところに手が届くログイン管理プラグインが無いのが痛い

627:nobodyさん
12/02/18 00:41:23.45
無かったら作ればいいじゃない

628:nobodyさん
12/02/18 07:14:15.10
>>621
webroot直下に置いたhtmlファイルとか、好き勝手に動かせるよ。

webroot/phpmyadmin
とかを本番機で動かしてるし。

ここでhtmlなり、ctpなり、好きなファイル置けばいいのでは?

629:nobodyさん
12/02/18 11:05:37.21
今更のcakeの仕事って、メンテばかりでつまらなそうだな。

630:nobodyさん
12/02/18 11:52:58.83
仕事がつまらないのは当たり前だろ
楽しさを求める奴って一定の割合でいるけど何なの?世間ナメてるの?

631:nobodyさん
12/02/18 14:10:48.45
世間w世の中w

632:nobodyさん
12/02/18 14:15:16.70
>>630
俺は楽しいけど
まぁ自営だし

633:nobodyさん
12/02/18 19:32:45.39
仕事がつまらないとか言ってる人って、アルバイトしかした事ない学生か、本気で仕事した事ないダメ人間だけだろ。

634:nobodyさん
12/02/18 19:52:11.24
『整備に当る強兵が しっかりやって 来てくれと 愛機に祈る 親心』

戦闘機とは勝手が違うかもしれんが、職人であり整備士でもあるウェブ開発者が『メンテつまらない』なんて、間違っても言えない言葉だと思うがな。
作品に対する愛着と言うか、親心はないのかと思う。

635:nobodyさん
12/02/18 19:54:15.84
本気だろうが何だろうがつまらんものはつまらん
愛があってもつまらんものはつまらん

636:nobodyさん
12/02/18 19:54:39.40
愛着や親心と楽しさは違うだろ

637:nobodyさん
12/02/18 20:03:42.12
>>636
「自分の子供は糞までかわいい」って話じゃね?
子供の世話とバグ取りや保守作業って同じ感覚でやってたわ
むろんどっちも楽しい。
しかもメンテっつーか仕事なら、やっただけ対価までもらえるんだぞ?
毎日wktkしとるわw

638:nobodyさん
12/02/18 22:23:06.59
1から作ったものなら良いかもしれんが
他人が作ったものの尻拭いはごめんだ

639:nobodyさん
12/02/18 23:12:25.71
別にどの業界だってメンテはメンテナーがいるわけよ。
ビルだって自動車だってそうだろ。
仕事として受けたならメンテのプロとしてやらないと。面白くないべ。

640:nobodyさん
12/02/19 00:03:12.80
普通にバイトでも楽しいけどな。
楽しくいないのは店長や客が嫌な奴だったとか
人間関係の面がほとんどだろ。

641:nobodyさん
12/02/19 00:21:41.04
今スマホ開発やっててWebAPIをCakePHP使ってんだけど楽しいよ。
俺は仕事は楽しくなくちゃ嫌だわ。

642:sage
12/02/19 00:25:24.87
CakeやろうがRailsやろうがDjangoやろうが同じ不満をもらすだろうな

643:nobodyさん
12/02/19 09:24:53.81
CAKEPHP1.3でWEBアプリを作っています。

ブラウザの「戻る」ボタンを押して前の画面に戻る際に、
必ずサーバーに問い合わせるようにしたいのですが、
キャッシュの設定を「session_cache_limiter('nocache')」にしていても
「ページの有効期限切れ」が表示される場合があります。
(具体的には、画面遷移時に一度入力チェックでエラーを表示した後、
次画面に遷移し、ブラウザの戻るボタンを押した場合。)

「ページの有効期限切れ」が表示されず、前画面に戻るには
どのような対応が必要でしょうか。
(ページの有効期限切れは、具体的に何を見て判定しているのでしょうか)

644:nobodyさん
12/02/19 14:32:18.81
URLリンク(mwg.jp)

645:nobodyさん
12/02/19 22:02:58.12
>>642
そういうことだろうな。
仕事でも趣味でも、開発すること自体楽しけりゃ不平不満なんて出ないどころか毎日Happyさね。

>>643
一般的に考えれば、フォーム(hiddenも含む)データじゃね?
単純な話で、なんかページ同士のパラメータの受け渡しに失敗してるんじゃないかな?

646:nobodyさん
12/02/20 07:49:45.77
>>643
cakeのセッション設定
既出

647:nobodyさん
12/02/20 13:39:28.34
みなさんはサイトの一部だけcakeを使う場合、どうしてますか?

例えばサイトのほとんどがHTMLなんだけど、
お問い合わせフォームとか新着情報の表示とかシステム化が
必要な箇所ってありますよね?

648:nobodyさん
12/02/20 16:42:43.00
公式の1.3パッケージをクリックして落ちてくるのって2.0なのかよ
おかげで数時間ムダにしたわ…

649:nobodyさん
12/02/20 17:31:52.64
cakePHPで使うDBにNOT NULL付けるのって非推奨なのでしょうか?
値セットしてないカラムも全部NULLになっちゃって。

650:nobodyさん
12/02/20 18:44:49.57
Model::create(false)でデフォルト値があるカラムを充足しなくなるよ

651:nobodyさん
12/02/20 19:27:11.23
>>650
どうもです。ぐぐったら解説も出てきました。
URLリンク(d.hatena.ne.jp)

$data初期化してるのにヘンテコな値が入るので???になってたんですが、
よく考えたらモデルの方も初期化せなあかんのですね。

652:nobodyさん
12/02/20 19:44:33.38
個人的には「NULL撲滅委員会」にお誘いしたい。
COUNT(column)とかで、面倒な挙動が多い・

653:nobodyさん
12/02/20 20:16:24.86
>>652
実は既にあすこの会員でして・・・
しかし、NULLを避けたいのにcakePHPが勝手に挿入するのを避けられないというー-;

for ($x = 0; $x < 100; $x++) {
$data = null;
$this->cookie->create(false);
$data = $this->cookie->findById($x);
if ($data == FALSE) {
continue;
}
レコードが存在しない時は処理をスキップしたいんですけど、
比較式おかしいですかね?

654:nobodyさん
12/02/21 00:21:24.73
CakePHPを複合主キーに対応させる為のプラグインってありませんか?

655:nobodyさん
12/02/21 13:06:27.12
2.1RC来たね。

RCの後に数字がないってことは、
次がもう正規リリースなのかな?

656:nobodyさん
12/02/21 14:08:16.13
何が変わったの?

657:nobodyさん
12/02/21 19:27:57.09
ビューの継承とか、細かい便利機能が増えてるっぽい

658:nobodyさん
12/02/21 21:15:24.57
参考書が1.3だったのでとりあえず1.3使ってるんだけど、
できれば最新のもの使ったほうがウマイのでしょか?

659:nobodyさん
12/02/21 22:01:38.94
>>658
新規で作るのなら2系で作っておいた方がいいと思うよ
1.3で作ってると下手に1.3のクセがつくだろうし
今勉強中ならRCも出たことだし、サービスリリースまでにはstable出るだろうから2.1使っちゃっていいんじゃない

660:nobodyさん
12/02/21 22:21:52.98
お前ら>>654の回答頼むわ。な?

661:nobodyさん
12/02/21 22:26:00.87
>>659
そうですかー・・

URLリンク(book.cakephp.org)
変更点相当あるみたいですね。

後から変えたくなっても不便だし、
1.3じゃなきゃいけないような理由もないし、
早いとこ乗り換えたほうが良さそうですね。
2.1落としてきます。

662:nobodyさん
12/02/21 22:28:23.70
でも2系の情報はまだまだ少ないよ?
俺の見立てでは後1年は情報や書籍は揃わないと思う

663:nobodyさん
12/02/21 22:45:13.49
>>662
むむむむ・・
まぁやってみようと思います

困るかな
実際移行してる人はどんな感想をお持ちだろうか

664:659
12/02/21 23:19:39.41
>>663
今までのプロジェクトは全部1.xで作ってきたけど、最近全部1.3.14に上げた
とりあえずそれらは2系に上げる予定無し(1.3から2.0への全面書き換えはだるいのでしばらくは放置すると思う)
2.0のstableが出てからは全部2.0で作ってる
>>659にも書いたけど、RC出たからもう2.1に移ろうかと思ってる

個人的には複雑なことをやってないせいもあるのか2.0の情報が少ないという感じはない
昔からcakeは「公式ドキュメント読んで分からなかったらソースを読め」ってスタンスだしね
ああ、でも公式ドキュメントはまだ日本語ないから英語が全く出来ないとちょっときついか

665:nobodyさん
12/02/22 00:24:37.21
お前ら>>654の回答頼むわ。な?

666:nobodyさん
12/02/22 01:12:36.89
ありません。な?

667:nobodyさん
12/02/22 01:34:03.12
このスレに質問書き込んで、回答が得られたことってないな
お前ら頼りなさすぎ

668:nobodyさん
12/02/22 09:23:59.33
Yiiスレとのギャップがすごい。

669:nobodyさん
12/02/22 10:44:07.07
2.0使いです。
updateAllで、
リレーション設定をしている他モデルで使用しているテーブルのデータを
保存することはできませんか?

Bコントローラ内
$condition = array('ModelA.neko' => 'mike');
$updatefield = array('ModelA.tag' => 'hoge');
$this->ModelB->updateAll($updatefield, $condition);

と書いても
General error: 1 near ".": syntax error
が出ます。

670:nobodyさん
12/02/22 13:47:15.70
>>667
と言うより、2.0については使用者も少なく回答できないんじゃないか?
1.3系の質問は回答されてるし。

頼りないなら他行けば良いんだよ。別に質問スレでもないんだから。

671:nobodyさん
12/02/22 18:20:43.51
システムのマイナーバージョンアップってcake以下(2.0だとlib)のコアファイル差し替えるだけでいいの?

672:nobodyさん
12/02/22 20:21:09.89
すみません、質問です

2つの関連性の全くないテーブルA,Bがあります。
ある画面で、その2つのテーブルのデータをまとめて編集し、
1回のPOSTでValidationをかけて保存させたいのですが、
どうすればよいものでしょうか?

A,Bの項目をまとめたCモデルを作って、CモデルにValidationルールを書く。
POSTされたデータはCモデルでValidationを行う。
Validation後にAモデル、Bモデルにデータを分割して、それぞれで保存処理を行う。

こんな感じ?

673:nobodyさん
12/02/22 20:46:24.93
よくわからんが、普通はAモデルはAモデルでバリデーションし、
BモデルはBモデルでバリデーションするだろ?
モデル毎にバリデーションできるんだから。

674:nobodyさん
12/02/22 20:46:51.25
>>672
普通に

Aバリデーション
 ↓
Bバリデーション
 ↓
A保存
 ↓
B保存

ではなんでダメなの?

675:nobodyさん
12/02/22 21:06:14.46
あとはトランザクション処理をかますくらいか。

676:nobodyさん
12/02/22 22:53:27.87
>>671
それでOKだよ

677:nobodyさん
12/02/22 22:58:29.26
>>672
1回のPOSTで2つのモデルをいっぺんに使うって話か?
普通に問題なくできそうなもんだが。

678:nobodyさん
12/02/22 23:12:01.66
>>664
ありがとり
一応一通り移し変えることができました
ガシガシ構築していこうと思います

679:nobodyさん
12/02/22 23:46:18.16
>>676
ありがトン

680:nobodyさん
12/02/23 15:41:37.63
CakePHPの1.2のメンテナンス期限とか、公式な発表ってどこかにありますか?

681:nobodyさん
12/02/23 16:23:25.15
>>655
本家だと数字ついてないけど日本のサイトだと1版って書いてあるから微妙だなw

>>680
公式な発表はないと思うけど、もうリリースがほとんど止まってる感じだからなあ・・・
っていうか1.1はいつのまにか公式から消えてるけどどこかでアナウンスあったっけ?

682:nobodyさん
12/02/23 22:30:09.21
そんなことよりCakePHPを複合主キーに対応させる方法を教えろよ。な?

683:nobodyさん
12/02/23 22:38:03.57
複合キーなんて使うなよw

684:nobodyさん
12/02/23 22:40:40.54 7dkJC+lD
bar_controllerに、foosテーブルの中身をページネイションさせるとき
$this->paginate = array(
'conditions' => array(
"not" => array(
"Foo.bar" => "false"
)
),
'limit' => 2000,
'order' => array('Foo.date DESC')
);
$this->set('foo', $this->paginator());
と書いたら、「barsテーブルにFoo.barなんてない」ってエラーがでました
コントローラ名からモデルを補完してるんでしょうか?
どうしたらfoosテーブルのデータをページネイションできますか?
ご教示くださいますようよろしくお願いいたします

685:nobodyさん
12/02/23 23:41:08.20 7dkJC+lD
$this->set('foo', $this->paginator());

$this->set('foo', $this->paginate('Foo'));
に書き換えたらいけました

686:nobodyさん
12/02/24 04:00:19.56
モデルにprimaryKeyって必ず定義しないと行けないんですね。
プライマリーキーがないモデルにsaveしようとしたけど、エラー出ました。

687:nobodyさん
12/02/24 09:30:06.44
>>686
Excelとデータベースの違いから勉強しようぜ

688:nobodyさん
12/02/24 12:24:37.97
会員→日記
   →写真

のようなアソシエーションで繋がっているテーブルがあったとして、
会員情報を削除した時、その会員が投稿した日記や写真を
削除する必要があります。

その場合、会員情報を削除した後、日記・写真を削除しますか?
それとも全てアソシエーションで繋げてdeleteAllで削除しますか?

689:nobodyさん
12/02/24 13:26:33.24
>>688
好きにすればいいんじゃね
deleteAllがアソシエーション含んだ削除って誤解してる気がするんだけど気のせい?

690:nobodyさん
12/02/24 13:56:47.10
関連データも一括で削除するのはdependentだよね

691:nobodyさん
12/02/24 14:01:26.76
>>689-690
まさに勘違いしてました・・。

アソシエーションの削除が上手く行かないので
自分は個別に削除するやり方をしているのですが、
勘違いだったようです。すみません。


692:nobodyさん
12/02/24 19:09:30.64
XMLデータの出力って、CakePHP 2.0でどのように行えますか?

find('all')で複数県取得したデータを、1.3まではviewで$xml->serialize()に
データを渡していました。
2.0からはxmlHelper自体が廃止となって、代わりにXml::buildを使えとのことですが、
1.3と同様の複数県のデータを渡すと例外となります。

1.3と同様の結果が取得できるように死体のですが・・・

693:nobodyさん
12/02/24 19:10:11.66
すみません、複数県→複数件です。

694:nobodyさん
12/02/25 15:36:54.21
cake1.3を最近使い始めたのですが、
データベースを使うほどじゃない簡単なデータ保存処理のためにtxtファイルを読み書きしたいのですが、どこに置いてもうまくアクセスできません。
自分で用意したファイルにアクセスするにはどうしたらいいのですか?

695:nobodyさん
12/02/25 16:53:26.47
データベースを使うほどじゃなかったら、cake使わない方が良いよ

696:nobodyさん
12/02/25 17:03:08.52
テキストファイルのデータを読み込みたいのがデータベースから情報を持ってきてるページなのでそういうわけにもいかないのです・・・
テキストファイル自体は多くて10個程度のワードを保存&編集したいだけなのですが・・・

697:nobodyさん
12/02/25 17:25:39.89
Cakeが発行する、SELECT COUNT(*) (ページネーションから?)が
ものすごい遅いんですが、解決法はあります?
みなさんどうしてます?

698:nobodyさん
12/02/25 17:33:00.25
COUNTするのはgroup指定したカラムにすれば良いよ

699:nobodyさん
12/02/25 17:52:58.99
>>698
ページネーションするときって自動でCOUNT発行されません?

700:nobodyさん
12/02/25 18:04:29.58
>>694
自分で、model、またはdata sourceを書く。
csvならdata sourceあった希ガス

701:nobodyさん
12/02/25 18:05:54.56
>>700
ありがとうございます
まずはdata sourceにつ

702:nobodyさん
12/02/25 18:06:37.16
途中で送信すみませんorz

>>700
ありがとうございます
まずはdata sourceについて勉強してみます

703:nobodyさん
12/02/25 18:19:28.48
>>702
ベタに書いてもOKな気もすっけど。。
とりあえず、Fileクラスもあるし。

704:nobodyさん
12/02/25 18:21:48.77
>>703
のちのちワードを編集するので、直書きはできないんです
fileクラスについても調べてみます

705:nobodyさん
12/02/25 22:48:10.62
1.3.14を使っています。フォームのバリデーションで質問です。
ラジオボタンの場合、項目を選択せずに送信すると
空データではなく、存在しないものとして扱われます。

ですので、バリデーションルールでnotEmptyを指定しても
正しく機能しないのですが、どうすればいいのでしょうか?

706:nobodyさん
12/02/26 13:38:17.41
hidden

707:nobodyさん
12/02/26 14:15:41.40
156

708:nobodyさん
12/02/26 16:50:00.76
>>706
ありがとうございます。勉強になりました。

709:nobodyさん
12/02/27 01:32:01.91
>>697
Model::paginateCount を 軽い処理で実装するとか


710:nobodyさん
12/02/28 11:46:10.73
>>697
where句に使用しているカラムにインデックスはるとか、
joinしてるなら、その辺も確認したほうがいい。


711:nobodyさん
12/02/28 15:16:02.31 pz8Lp3oa
[動作環境]CakePHP 2.0.6 / PHP 5.1.6 / Apache 2.2

ルーティングで躓いています。
以下のようなコントローラを用意しました。

class EntryController extends AppController {

var $name = "Entry";
var $autoRender = false;

function index(){
die('index');
}

function success(){
die('success');
}
}

URLリンク(example.com)
は正しく実行され、'index'が表示されるのですが、
URLリンク(example.com)
は、Segmentation faultが発生し、Abortします。

routes.php などの設定は、敢えて変更せず使用しています。
同じような現象を経験した方、いらっしゃいますか?(そもそも、2.0.6使っている人いるんだろうか)


712:nobodyさん
12/02/28 15:21:47.73
success以外でも一緒?
また、URLリンク(example.com) は表示される?

713:nobodyさん
12/02/28 15:25:44.20 pz8Lp3oa
>> 712
success以外でも一緒です。
/entry/index もダメです。
/entry/index/abc/def もダメです。

714:nobodyさん
12/02/28 16:50:04.76
>>711 です。

Router::parse($request->url);
の結果を見ると、以下のようにルーティングが間違っているようです。
array(5) { ["controller"]=> string(7) "success" ["named"]=> array(0) { } ["pass"]=> array(0) { } ["action"]=> string(5) "index" ["plugin"]=> NULL }
Routerがちょっと怪しいので、調べてみます。

715:nobodyさん
12/02/28 17:13:46.37
>711 です。
/lib/Cake/Network/CakeRequest.php に、おかしな箇所を見つけました。
下記引用の下から5行目、「$baseUrl」なんですが、どこでも宣言されていないのでif自体に意味がないようです。


protected function _base() {
$dir = $webroot = null;
$config = Configure::read('App');
extract($config);

if (!isset($base)) {
$base = $this->base;
}
if ($base !== false) {
$this->webroot = $base . '/';
return $this->base = $base;
}

if (!$baseUrl) {

//★ここを改編したらうまくいった
//$base = dirname(env('PHP_SELF'));
$base = '';


716:nobodyさん
12/02/28 21:52:15.32
>>715
ソース見てみたけど確かに$baseUrlはどこでも値が入ってないね

717:nobodyさん
12/02/29 02:33:19.83
1.3系でプラグインの作成方法について質問します。

公式のマニュアルを見ているのですが、
/pizza/pizzaOrders/index
でアクセスする方法は分かるのですが、
/pizza/
でアクセスするにはどうしたら良いのでしょうか?

普通に/app/controllers/pizza_controller.phpを作ればいいと思ったのですが、
作ってもアクセスエラーになります。
これってルーティングの設定になるのでしょうか?

718:nobodyさん
12/02/29 08:54:37.66
>>709
1000件しか表示しない!って決めたら、
function paginateCount($conditions = null, $recursive = 0, $extra = array()) {
  return 1000;
}
こうしてもいいんですかね?

719:nobodyさん
12/02/29 15:57:45.32 OuUO3AKR
>>717
プラグイン関係ない
ルーティングの問題

720:nobodyさん
12/02/29 16:49:35.18
>>719
了解しました。ルーティングで調節します。

721:nobodyさん
12/02/29 21:04:59.32
>>717
/app/plugin/pizza/controllers/pizza_controller.php
(要するにプラグイン名と同名のコントローラー)を作って、indexアクションを作れば
ルーター触らなくても/pizza/でアクセス可能だよ。

722:nobodyさん
12/02/29 21:19:59.68
>>721
出来ました!勉強になります。ありがとうございました

723:nobodyさん
12/03/01 05:51:29.65
モデルって別にテーブル名じゃなくても良いんだね
同じのでもサイトのコンテンツによって変えてる

724:nobodyさん
12/03/05 10:09:01.94
2.1 Stableキター
つうかペース早いな

725:nobodyさん
12/03/05 19:23:27.93
うおおおお
公式サイトも変わってCookBookもなんか綺麗になったー

マイグレーションガイドによると.htaccessの変更が必要という、
アップグレード時に見落としがちな変更があるのにリリース文では触れられてないな・・・
URLリンク(book.cakephp.org)
URLリンク(bakery.cakephp.org)

726:nobodyさん
12/03/05 20:11:55.24
まだ開発中なんだけど、バージョアップすべきなのかな?

727:nobodyさん
12/03/05 20:59:06.49
リリースしてないならageた方がいいと思う
2.0.xは今までのバージョン系列で一番寿命が短いし、下手したら1.3.xより今後のアップデートが期待できない気がする

728:nobodyさん
12/03/05 23:06:32.47
>>727
ありがとう。
2.0.x系からならフレームワーク置き換えだけでいいのかな。


729:nobodyさん
12/03/05 23:42:52.00 WIGrArNU
>>728
自分の一つ上のレスも見ようぜ!

730:nobodyさん
12/03/06 01:02:47.42
次の開発案件から2.0系にしようとしてたら、もう2.1・・・。
2.0系は結局書籍も出ずじまいか。

731:nobodyさん
12/03/06 03:40:14.04
互換性をきっちりしてくれないと困るにょ

732:nobodyさん
12/03/06 21:43:10.65
>>727
ありがとう。
出来ました(゚ω゚)

733:nobodyさん
12/03/06 22:01:24.25
2.0リリースが10月半ばだったから5ヶ月経たずに2.1出たのか
2.0は短命だったね・・・
本が出ないのもしょうが無いというか、出してしまっていたらすごい中途半端なタイミングになっていたと思う


1.2 2008/12
1.3 2010/04
2.0 2011/10
2.1 2012/03

734:nobodyさん
12/03/06 23:43:25.94
Cakeにcreate tableする関数はありますか?
普通にqueryでベタSQL投げないと駄目?

735:nobodyさん
12/03/07 18:16:47.78
お前らなんか言えよ

736:nobodyさん
12/03/07 22:24:25.29
お前らがcakeで作ったもので、何を最大どのくらいの期間かかった?
俺はSNSで3ヶ月。

737:nobodyさん
12/03/08 08:15:28.96
官公庁のシステム
2ヶ月3000万円

738:nobodyさん
12/03/08 09:50:17.49
>>737
まじかよ。
あぁいう国の案件はどうやって仕事もらうの?

みんなやりたいよね。

739:nobodyさん
12/03/08 10:16:55.80
てか、2ヶ月って凄いな。
国のシステムだからそんなに凝ったことはしてないだろうけど、
どんな機能があって2ヶ月なんだろ?



740:nobodyさん
12/03/09 11:27:56.60
犯罪の香りがする

741:nobodyさん
12/03/09 11:43:23.36
随意契約くさいな

742:nobodyさん
12/03/09 12:57:11.13
2.0から始めたいのにマニュアルが英語しかないとかwww

743:nobodyさん
12/03/09 13:13:11.92
英語英語うるせーよ、このスレ小卒ばっかりか?

744:nobodyさん
12/03/09 14:27:27.18
お前は英語で書けよ

745:nobodyさん
12/03/09 16:18:01.14
speak english or die

746:nobodyさん
12/03/09 16:24:51.22
shine!

747:nobodyさん
12/03/09 16:51:22.89
dieとかwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
エイリアス使ってるバカってまだいたんだwwwwwwwwwwww

748:nobodyさん
12/03/09 16:54:34.34
fack you!

749:nobodyさん
12/03/09 17:40:19.41
OUTA MY WAY, WTF!!!!!!!!!!

750:nobodyさん
12/03/09 17:54:30.33
アソシエーションするとき、プライマリキー以外とforeignKeyで
繋げるにはどうすればいいのでしょうか?

751:nobodyさん
12/03/11 02:18:22.14
そんなことより誰か複合主キーに対応するためのプラグインを書けよ。な?

752:nobodyさん
12/03/11 10:46:34.94
ビュー内の$this->Paginator->prev()とかnumbers()で吐き出されるリンクに
PHPSESSIDをくっつけたい(?PHPSESSID=hoge)んだけど、どうしたらいいかな

コアの$html->link()を書き換えたりしたらいけそうだけど、
もっとスマートな方法ある?

753:nobodyさん
12/03/11 11:29:49.63
>>752
自己解決
'options' =>
array(
'?' => array(session_name() => $this->Session->id())
)
こうした

754:nobodyさん
12/03/11 16:36:31.78
ソース追ったけどよくわからなかったので質問します。
CakePHPでのCookieを書き込む際に暗号化したデータをJavaScriptで復号するロジックはありますか?


755:nobodyさん
12/03/11 22:15:13.63 +TvrXerP
うるせぇ!
いいからCakePHPで複合主キーに対応する為のプラグインを誰か書けや。
な?

756:nobodyさん
12/03/11 23:31:02.18
>>754
ソース見る限り、Security::$typeで設定した暗号方式でSecurity.salt使って
それをbase64_encodeして暗号化してるっぽいので
それを逆に処理すればJavascriptでも復号化できると思う。
詳しくはcookie componentのソース見て。

だけど、複合に必要なキーのSecurity.saltをJavascriptに
書かないといけないので、そもそもなんで暗号化したんだって
ことになるので設計を見なおしたほうがいい。

757:nobodyさん
12/03/12 00:06:16.05 uEcRtOSh
>>754
老婆心ながら、>>756が言っていることを強調しておく。
設計を見直せ。salt の意味がない。

758:nobodyさん
12/03/12 13:24:30.73
よくある返信不可のメールアドレスって
@以前のユーザ作成してるのかな?noreplyみたいな
存在しないアカウントをreturn-pathに設定してメール送ってるのかな?

759:nobodyさん
12/03/12 16:18:31.39
UI含めて設計について相談です。

複数チェックボックスを使って、チェックした項目をDBに登録し、
後から検索できるようにしたいと思います。疑問は2点。

1:テーブルの1つのカラム内にカンマ区切りで登録するのでしょうか?
2:その場合、conditionsで検索できるのでしょうか?

760:nobodyさん
12/03/12 17:53:27.28
画像のサイズ別のURLって、
テーブルに保存してますか?
afterFindなどで組み立ててますか?
それとも、ビューでその都度組み立ててますか?

761:nobodyさん
12/03/12 18:10:15.80
ビューで変えてます。携帯用の画像とか。

762:nobodyさん
12/03/12 19:45:42.19
>>759
1は好きにしたらいい
2はインデックス当たらなくていいならできる

763:nobodyさん
12/03/12 19:58:56.46
>>762
どうやって検索するのでしょうか?
1カラムにカンマ区切りのレコードがあったとして、
それをCakeのconditionsで検索する方法がわかりません

764:nobodyさん
12/03/12 21:01:20.27
>>763
cakephpに配列をシリアライズして
登録するプラグインあるから、それ使え。

765:nobodyさん
12/03/12 21:33:33.63
わかりました。探してみます

766:nobodyさん
12/03/12 21:53:31.19
>>763
SQLのLIKEはわかってんのかな?

767:nobodyさん
12/03/12 22:27:22.65
小一時間探しましたが、save時にシリアライズできるものの、
find時にconditionsで絞り込むのは無理みたいですね・・。
>>766
はい。それは分かりますが、登録されている値が
「1,10,11」みたいな場合、likeは利かないと思います。

768:nobodyさん
12/03/12 23:32:17.51
>>756
>>757

ありがとうございます。
サーバサイドのJSでの実装を考えているため、種が漏れることはないと考えています。

ご回答/ご指摘ありがとうございました。

769:nobodyさん
12/03/12 23:45:06.08
>>767
ソート順さえあっていれば、1かつ10かつ11なら column LIKE '%1,%10,%11,%' とかでいけるんじゃないの
ソートしてないのなら column LIKE '%1,%' AND column LIKE '%10,%' AND column LIKE '%11,%'

770:nobodyさん
12/03/12 23:58:59.56
>>769
さすがにひどい。

>>767
方法1.「ビット演算 チェックボックス」でぐぐれ。
方法2.項目ごとにカラムを分ける。

771:nobodyさん
12/03/13 02:48:15.55
脆弱性対策は大事だよ
URLリンク(www.1x1.jp)

772:nobodyさん
12/03/13 10:18:36.45
>>767
もっと頭使おうぜ
1,10,11
ではなくて
001,010,011
みたいにすれば、like %001% で検索できるだろ。
あくまで1例だから、データに何がくるかによって
良い実装があると思うので、よく考えて。

773:nobodyさん
12/03/13 12:48:03.37
俺ならHABTMにしちゃうね

774:760
12/03/13 13:20:03.94
>>761
ビューが条件分岐だらけになりませんか?

if (!empty($post['Post']['image_filename']):

....

else:

こんな風に。

$post->getImageUrl(array('mobile' => true));
みたいに書けたらいいんですけどねぇ・・・

775:nobodyさん
12/03/13 13:39:42.66
>>774
Helperつくれば?

776:nobodyさん
12/03/13 13:45:55.38
>>775

そうなんですけど、
モデルの返り値が配列じゃなくてエンティティなら、
もっとスマートに書けるのに、と思いまして・・・

これがCake流なんですかね

777:nobodyさん
12/03/13 13:53:09.13
>>772
その考えはありませんでした。勉強になります!

ビット演算の事を>>770さんから教えていただき勉強しましたが、
数学が苦手な私の頭ではさっぱりで、
単純にテーブルを分ける(Cake的にhasMany)を考えていました。

テーブルを分けて正規化する方法も一般的なようですが、
正直、チェックボックスを使用するカラムが必要な度に
テーブルを生成するのもどうかと思い、悩んでいました。

772さんの方法も視野に入れて設計面を工夫してみます。
みなさん、ありがとうございました。

778:nobodyさん
12/03/13 22:24:16.17
likeなんか使ったらインデックス使えなくて
遅くなるだろw

779:nobodyさん
12/03/13 23:03:53.03
>>776
エンティティが返ってこないのが俺がCakeが嫌いな理由の一つではある。

780:776
12/03/14 03:34:06.02
CakeEntityなんてのもあるみたいですが・・・

今はYiiを調べてる。

781:大便
12/03/15 08:30:03.53 UhuckWxP
ペニー秋田は犯罪です。
早速ペニーオークションで破産しました。

782:nobodyさん
12/03/15 15:50:54.34
>>778
別にLIKE使ったからってインデックス効かなくなるわけじゃないから

783:nobodyさん
12/03/15 16:11:21.14
みなさん、プラグイン作成してます?
お問い合わせフォームとか会員専用ページとか
どのサイトでもよく使うファイルをプラグインにまとめるべきか否か悩みます。

784:nobodyさん
12/03/15 20:50:17.13
>>782
効かなくなるが

785:nobodyさん
12/03/15 21:19:00.56
>>783
どこまで汎用性もたせるか悩んで、
結局いつもコピペで済ませてる


786:nobodyさん
12/03/15 21:56:56.36
ある程度規模でかいサイトで普通のLIKE検索はありえないよね。

787:nobodyさん
12/03/16 00:00:22.47
普通はどうしてるの?

788:nobodyさん
12/03/16 09:41:57.89
>>783
俺はまとめてるよ。
ログイン
リマインダー
新規会員登録
アフィリエイト機能とか。

うまく作れば使いまわし効く。
全部プラグインでやれるから
最近やることなくなった。

789:nobodyさん
12/03/16 10:19:44.39
>>788
それらをプラグイン化して、サイトによってビューを修正する感じ?

790:nobodyさん
12/03/16 10:41:05.32 pS4d35yu
ログイン状態のセッションが数時間で切れて困っています。
ログインすると
$this->Session->write('user',$user_id);
のようにコントローラ内のSessionに情報を保存していますが、これが数時間でread()しても値が取れなくなるようです。


core.php内で
Configure::write('Session.save','cake');
Configure::write('Session.timeout', (24*60*60*7));
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1000);
ini_set('session.cookie_lifetime', (24*60*60*7));
ini_set('session.gc_maxlifetime', (24*60*60*7));

Configure::write('Security.level', 'low');

としているので、1週間持って欲しいのですがダメみたいです。

何か方法はありますでしょうか。







791:nobodyさん
12/03/16 20:57:57.62
>>789
具体的にいうと、
プラグインの中に
ビヘイビアと、コンポーネントを作る。

それをusercontrollerとmodelに読み込ませる感じ。

792:nobodyさん
12/03/16 20:59:06.57
>>790
cookie使えばいいじゃん。
ses切れてても、cookieがあればそれでログインみたい。

793:nobodyさん
12/03/17 00:04:22.68
>>791
なるほど。ビュー周りは特に変更しないんだね。
変更するならCSSをいじるぐらいか。

794:nobodyさん
12/03/17 19:37:12.80
2.x対応のTreeHelperってないですか?
または修正版のサイトとかあれば

795:nobodyさん
12/03/19 15:45:40.35
URLリンク(b.hatena.ne.jp)
これって結局安いの高いの

796:nobodyさん
12/03/19 16:50:34.02
Qdmail(URLリンク(hal456.net))使ってるひといる?
さくらインターネットのメールサーバにQdmail使ってSMTP AUTHでメール送信してるんだけど、
何回か(4,5回が多い)に1回だけメール送れないんだよな

QdSmtp error: No Responce SYSTEM TIME OUT line -> 603
QdSmtp error: getMessage error line -> 543
QdSmtp error: Error From setting line -> 488
QdSmtp error: Send Data Error or Auth Error line -> 415
Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.2.11
Qdmail error: OS WINNT ; PHP Version 5.2.11 ; Qdmail version 1.2.6b
php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS
Qdmail Status debug: 0, log: 3, errorlog: 0
Qdmail error: No send . Because SMTP mail method replied error line -> 2190
Qdmail error: Send Error line -> 2115
Qdmail error: Error happen, see upper line -> 2194
Qdmail error: Send Error line -> 2115

画面にこんなエラーが吐き出されてメール送信されない。
エラー行だって言われてるところを見てもエラー行を出力する処理しか書いてなくて
どういうエラーが起こったのか全然わからない・・・。

同じような事になった人いないかな?

797:nobodyさん
12/03/19 17:26:02.77
スレ違い

798:nobodyさん
12/03/19 17:27:57.85
>>797
すまん、一応CakePHPのコンポーネントとして使ってるし、
Cake使ってる人でメール送信する人はこれ使ってる人多そうだからここで聞いてみた

PHP質問スレで聞いたが、そこでもスレ違いだとさ・・・。
ライブラリの質問できる場所無いみたいなんだよな

799:nobodyさん
12/03/19 19:02:54.22
>>798
そうじゃなくて、ライブラリ自体、公式でサポートしてるんだから
そっち行けってことっでしょ。エラーメッセージすら読めてないし。
フレームワーク以前の問題だ

800:nobodyさん
12/03/20 05:09:01.21
qdmailって、公式もサポートほとんどしてないだろあれ。
エラーメッセージもいいかげんだし。

801:nobodyさん
12/03/20 09:47:42.67
>>800
わかる。

802:nobodyさん
12/03/20 22:24:51.38
じゃ、qdmail使わずに自作しろよ。
メール送信なんて今まで作っていたのあるだろ。


803:nobodyさん
12/03/20 23:14:24.46
・マルチバイト対応
・HTMLメール
・添付ファイル
こういうの対応しようとすると結構自作でやるのはな、、、

804:nobodyさん
12/03/21 12:11:52.99
いやいや、普通に1000行もかからずコード書けるから。
フレームワーク使う前に作っていたものがあるだろ。それ使えよ。

805:nobodyさん
12/03/21 18:27:13.50
cake使っててシェルでURLを組み立てたいときは何を使えばいいですか?

806:nobodyさん
12/03/21 20:09:46.98
シェルでURLを組み立てたいって意味がわからないんだが

807:nobodyさん
12/03/21 21:31:40.83
>>804
オレオレフレームワークつかっとけよw

808:nobodyさん
12/03/21 23:19:44.62 ZAI6cSPi
$this->set('select', $this->Foo->find('list', array(//select要素
'fields' => array(
'Foo.id',
'Foo.firstname'
)))));
とすると、
$form->select("Foo.bar", array($select), 0, array('empty' => null))

select要素の中に
<option value="Fooのid">Fooのfirstnameの中身</option>
というのができるんですが、
これを
<option value="Fooのid">Fooのsecondnameの中身 Fooのfirstnameの中身</option>
としたいんですが、find('list')は一対でしか使えないんでしょうか?
やり方をご教示いただけたら幸いです

809:808
12/03/21 23:27:53.96 ZAI6cSPi
自己解決しました
allで読んで、
foreach ($select as $value) {
$talent_data[$value['Foo']['id']] = $value['Foo']['secondname'] . ' ' . $value['Foo']['firstname'];
}
$this->set('select', $select);
でlistで作ったoption群と同じ形式のリストデータが生成されました

810:nobodyさん
12/03/22 00:13:00.01
modelにrule=>urlを書いたらurl欄が空欄もurlが正しくないになってしまうんですが、
urlが空でもよくて、入っていれば正しいURLか判定する、という風にするやり方がありましたらお教えください

811:nobodyさん
12/03/22 00:20:23.77
allowEmpty

812:nobodyさん
12/03/22 00:35:14.75
>>811
ありがとうございます、解決できました!

813:nobodyさん
12/03/22 02:02:03.59
>>806
URLをTwitterに投稿するときに使おうと…

814:nobodyさん
12/03/22 10:58:28.03
>>807
煽る意味がわからん。他人のライブラリは使えないと言い、
自分でも自作できないとかワガママすぎるだろ。

815:nobodyさん
12/03/22 19:38:50.77
>>814
先に煽ったのは>>804じゃね
フレームワークスレで、自分で書いたもん使えて

816:nobodyさん
12/03/23 00:01:31.13
おかしくないだろ。なんでも他人を頼ろうとするなよ。
自分でコンポーネントやヘルパー作れるようになってるんだから。

817:nobodyさん
12/03/23 10:24:37.19
up

818:nobodyさん
12/03/23 11:50:45.97
自分で簡単に組める人はここで質問しないだろ。自分が見落としてるだけで、他のいいモジュールがあるのかも?って淡い期待で書き込んでるんだとおもうよ。自分で組むしか方法が無い。っていう結論を貰えるだけでも嬉しいのでは?

819:nobodyさん
12/03/23 13:36:50.00
なにかおかしくね?自分でプログラミングせずに、
いきなりフレームワーク使い出したというのか?
大体は参考書やらネットの情報やらで適当なプログラム作って、
慣れた後に効率化を求めてフレームワークを使い出すと思うんだが。

820:nobodyさん
12/03/23 13:42:01.91
mail関数やmb_send_mail関数でメール送信しようとして
文字化けしたり、上手く送れなくてネットで調べながら
自分なりの「メール送信ライブラリ」を作ると思うんだが。

で、その後に添付ファイルやらHTMLメールやらを送信したくなって
qdmailのような他人が作ったライブラリを探すというのなら分かるよ。
でも、いきなり上記の部分すっ飛ばしてCake使って
「上手く動きません><」とか言われても、勉強不足以外の何者でもないだろ。

821:nobodyさん
12/03/23 16:25:24.36
仲良くしようぜ。

822:nobodyさん
12/03/24 15:01:00.43 oSWZUaYy
メール関連の機能が大幅に向上したバージョン2.1を使えばよい。

823:nobodyさん
12/03/24 18:51:05.67
kwsk

824:nobodyさん
12/03/25 01:08:52.69
paginatorでクエリを渡そうと思って
$paginator->options(
array('url' => array('?id=' . $id))
);
とやったんですが、
foo/?id=100/page~1
みたいなurlになってしまってうまく動作できません
foo/page~1?id=100
となるようにしたいんですが、optionsをどう書き換えたらいいんでしょうか?

825:nobodyさん
12/03/25 19:19:28.98
>>824
array( '?' => array( 'id' => $id ))
って感じじゃなかったかな

826:nobodyさん
12/03/25 23:49:03.03
Router::url(array('controller' => 'test', 'action' => 'index', 'id' => $id))

みたいな事をしてURLを生成しているのですが、
パラメータ部分を予め設定しておく事は出来ないのでしょうか?

827:nobodyさん
12/03/26 08:08:50.35
>>826
ヘルパーでも作る

828:nobodyさん
12/03/26 18:44:48.32 +fypSFER
フォームヘルパーを使って同じフォームを1ページの二カ所以上に作ると
formタグのidが重複しちゃうけど、どうやって回避するのがスマートかな
今はform->createでid指定して別名にしてるけど、あまりスマートに思えない

829:nobodyさん
12/03/26 19:11:54.92
フォームヘルパーってぶっちゃけ要らない機能だよね
最初は便利なのかなと思ったけどしばらくいじって思い通りにいかないから
ないものとして普通にformタグ書くようにしたら能率上がったわ

830:nobodyさん
12/03/26 23:14:30.50
>>829
確認の時どうしてるんだ?次のページに推移して「エラーがあります」か?

831:nobodyさん
12/03/27 00:49:24.75
>>829
いや、使った方がいいよ。
俺もベタ書きやってたけど使わないとエラー処理が困る。

832:nobodyさん
12/03/27 01:42:43.77 J3nZuwJg
バリデーションエラー時に普通の方法だと
エラーが出たフォームの上(下だっけ?)にメッセージが表示されるけど
任意の場所に表示したい場合はどうしてる?

833:nobodyさん
12/03/27 03:37:14.44
<?php echo $form->error('Post.name')?>

834:nobodyさん
12/03/27 14:05:24.25
CakePHPで「INSERT~ON DUPLICATE KEY UPDATE」
は使えないのでしょうか?使える場合は書き方を押してください

835:nobodyさん
12/03/27 14:37:07.94
CakePHPの質問を書いたら、ちゃんと答が返ってくる掲示板ないでしょうか

836:nobodyさん
12/03/27 17:57:15.57
>>835
cakephpのコミュニティで質問すれば。
URLリンク(cakephp.jp)

837:nobodyさん
12/03/27 18:30:51.02
>>834
Model -> save()

838:nobodyさん
12/03/28 22:39:25.33
設計って結構迷うよね・・。

編集でidが2つある場合、URLが/post/edit/1/2
みたいになるけど、これってわかりづらいよね。
ピュアPHPの、edit.php?parent_id=1&id=2の方が分かりやすい気がする。
まぁ、Cakeでは/edit/parent_id:1/id:2 というURLにはなるんだけどさ・・・

839:nobodyさん
12/03/28 22:40:41.18
>>838
ID=一意に表すもの
だし1つで表せないとしたらそれはIDじゃない
1つで表せるならURLに含ませる必要ない

840:nobodyさん
12/03/28 23:05:18.11
>>839
別々のものに同じidが割り振られているのはおかしいが、
ひとつのものに二つ以上のidが振られているのは問題なくね?

841:nobodyさん
12/03/28 23:10:52.27
>>840
問題ないけど、2つ持たせる意味がわからないし、
仮に持たせたとしてもそれをURLに含ませる意味もわからない

842:nobodyさん
12/03/28 23:15:51.51
>>841
管理画面があったとして、
ユーザID・1が投稿したお知らせのID2を見たいとする。

ピュアPHPなら、edit.php?user_id=1&id=2だよな?
Cakeなら/edit/1/2か/edit/user_id:1/id:2だな。
セッションに含めて持ち回る方法もあるけど、
毎回セッションに入れるのはおかしくないか?って思うからさ。

843:nobodyさん
12/03/28 23:24:56.61
edit.php?id=2
じゃだめなの?

844:nobodyさん
12/03/28 23:32:10.02
ピュアPHPだとそれで良いんだよ。でもCakeだと迷うだろ?
Cakeの書き方で言えば、
/news/add/1  この1はuser_idの1
/news/edit/2  この2はidの2
URLを見ただけでは混乱する

845:nobodyさん
12/03/28 23:46:26.83
POSTすりゃええやん

846:nobodyさん
12/03/28 23:58:08.70
迷うだろって言われても迷わないよな

847:nobodyさん
12/03/28 23:59:20.33
>>846
ほんとに?自分だけで分かるからOKって考え方なの?
ちなみに、/edit/1/2みたいな書き方はBaserCMSでもやってた

848:nobodyさん
12/03/29 00:03:50.49
自己レスだけど、コーディング時は迷う事はないか。
Router::url('/news/edit/' . $data['Newsr']['userid'] . '/' . $data['News']['id'])
になるわけだし。単なるURL上での事ならこだわる必要ないかな。
外部に公開するわけでもないし。

849:nobodyさん
12/03/29 00:06:24.29
>>847
自分だけわかるもくそも、URLの規則を万民にわかるように書くことなんてそもそも無理じゃね?

850:nobodyさん
12/03/29 00:14:21.30
>>849
そうだな。規約に従おうとこだわりすぎてたわ。
自分が作りやすい方法でやるよ。色々ありがとう

851:nobodyさん
12/03/29 00:19:24.06
>>850
URLでなんのページかわかりやすくしようというのは、ユーザビリティの面からも正しい考え方だけど
この件に関しては>>844の書き方で充分わかりやすいといえる範疇だと思う

852:nobodyさん
12/03/29 04:02:59.81
>ピュアPHPなら、edit.php?user_id=1&id=2だよな?
>Cakeなら/edit/1/2か/edit/user_id:1/id:2だな。

誰がこんなこと決めたの?
Cakeだって/edit?id=1&id=2ってやるだろ。

853:nobodyさん
12/03/29 10:57:51.78
さすがにそれはやらない

854:nobodyさん
12/03/29 22:50:57.56
/edit/parent_id/1/id/2 とか

855:nobodyさん
12/03/29 23:14:23.59
user_idがidから引っ張ってこれるんならURLに含めないな
usernameなら/news/tanaka_ichiro/123みたいな感じで含めてもいいと思うけど
どうしてもuser_idもidも含めたいのならnamedパラメータ使って/news/user_id:1/id:2とかにする

856:nobodyさん
12/04/01 00:45:58.67 OiSFrCKx
ブラウザのエンコードの切替ができないんだけど2.x系って特別な設定あるのかな?

1.x系の場合コントローラに
function beforeFilter(){
//携帯なら
if($this->Ktai->is_ktai()){
Configure::write('App.encoding', 'SJIS');
$this->layout = "mobile_layout"; //charset=shift_jis"
}else{
って書けばブラウザのエンコードが既存の「UTF-8」から「SJIS」に切り替わるのに2.x系だと「UTF-8」のまんまだ。。。
かなり嵌ってるんだけど分かる人いるかな?
てか俺の環境がおかしいのかな??

857:nobodyさん
12/04/01 02:38:57.47
App.encodingってシステム的なエンコードの設定で、出力のエンコードとは関係ないんじゃないの
設定したことないから知らないが
ヘッダーはutf8とsjisどっちなの?

858:nobodyさん
12/04/01 03:16:24.89 OiSFrCKx
>>857
PCと携帯でエンコードを分岐したくて
PC -> UTF-8 携帯 -> shift_jis
core.php自体に記述しているのは
Configure::write('App.encoding', 'UTF-8');
なんだけど、携帯のページを表示するときは
beforeFilterでConfigure::write('App.encoding', 'SJIS'); に変更してます
cakephp1.3だとこの設定でブラウザのエンコードはshift_jisに変更されるんだけど
2.x系だとUTF-8のまま。。。
core.php自体をConfigure::write('App.encoding', 'UTF-8');に書き換えると
ブラウザのエンコードはshift_jisに代わるんだけどcore.phpだと分岐処理書けないから困っています。
2.x系だと別の処理が必要なのかな?


859:nobodyさん
12/04/01 03:18:29.30 OiSFrCKx
>>858
>core.php自体をConfigure::write('App.encoding', 'UTF-8');に書き換えると

上記は
Configure::write('App.encoding', 'SJIS');の間違いです。
誤植すいません。。。


860:nobodyさん
12/04/01 17:58:24.58
軽く調べてみたけどApp.encodingは内部コードの設定だからやっぱり出力のエンコードとは関係ないよ
ケータイ対応したいならこういう感じに書いたら?
URLリンク(webengineerlife.com)

861:nobodyさん
12/04/02 00:51:25.23 ZyijX88y
>860
ありがとう
ちょっと試してみます。
携帯ライブラリとか使って複雑になってるのも原因の1つかもです。。。


862:nobodyさん
12/04/03 18:18:51.92
cakephpでもhavingが使えるんだな。
そしてhavingってめちゃくちゃ便利だな。
これのお陰でDBの設計が楽になった。

863:nobodyさん
12/04/04 18:16:19.49
フォームヘルパーでのサニタイズは何もしなくても自動でしてくれるけど、
表示(コントローラからset)の場合は、個別でサニタイズしなきゃいけないんだな

この点忘れてた・・・

864:nobodyさん
12/04/05 00:28:36.65
1.2経験しかなかったんだけど初めて2.1使ってみたら
ローカルのxampp環境でmodelがbake出来ないんですけど。。
cliのphpが「問題が発生したため・・・」になる

865:nobodyさん
12/04/05 23:35:57.76
findの条件で、
テーブルFoosのflagがonのものだけ取り出したいとき、
'conditions' => array(
'Foo.flag' => 'on'
),
と書いてできたんですが、
Foosのflagがonでかつ、
Foosのlawと同じ値のBarsテーブルのidの、deleteがoffのもの、というのを条件にしたい場合どう書けばいいでしょうか?

具体的には、
Foosのテーブルには商品リスト、Barsには業者データがあり、
取り扱っている商品、でかつ、倒産していない業者、の商品リストだけ取り出したいのです

よろしくお願いします

866:nobodyさん
12/04/06 01:33:16.23
ローカル環境にApach + PHP + MySQLの設定をするのが
面倒なのでレンタルサーバにリモートプロジェクトとしてEclipseでバンドして
作業してるんですが、こういった開発手法ってNGでしょうか?


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