【PHP】フレームワーク CakePHP 8ホール目【1.3】

このエントリーをはてなブックマークに追加
1nobodyさん
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※sage推奨
テンプレは>>1-5くらい

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

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
2nobodyさん:2010/03/18(木) 10:01:29 ID:???
■1.2系
CakePHP1.2系のダウンロード
http://github.com/cakephp/cakephp1x/archives/1.2
CakePHP 1.2.x API
http://api12.cakephp.org/

■1.3系
CakePHP1.3系のダウンロード
http://github.com/cakephp/cakephp1x/archives/1.3
CakePHP 1.3.x API
http://api13.cakephp.org/
1.2から1.3への移行ガイド
http://book.cakephp.org/ja/view/1561/
CakePHP 1.3の新機能
http://book.cakephp.org/ja/view/1572/

■Lithium(li3) PHP5.3+
http://rad-dev.org/lithium/
3nobodyさん:2010/03/18(木) 10:01:49 ID:???
■過去スレ
【PHP】フレームワーク CakePHP 7ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1251789126/
【PHP】フレームワーク CakePHP 6ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1236563737/
【PHP】フレームワーク CakePHP 5ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1229669539/
【PHP】フレームワーク CakePHP 4ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1213892680/
【PHP】フレームワーク CakePHP 3ホール目【本命】
http://pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/


■関連スレ
【PHP】PHPフレームワーク総合スレ14
http://pc11.2ch.net/test/read.cgi/php/1253912143/
【PHP】下らねぇ質問はID出して書き込みやがれ 94
http://pc11.2ch.net/test/read.cgi/php/1268835461/
symfony PHPフレームワークpart2
http://pc11.2ch.net/test/read.cgi/php/1268753684/
[PHP][フレームワーク]CodeIgniterスレ
http://pc11.2ch.net/test/read.cgi/php/1177683436/
【PHP】Ethna part.2【国産フレームワーク】
http://pc11.2ch.net/test/read.cgi/php/1186096518/
【PHP】フレームワークMapleに舌鼓
http://pc11.2ch.net/test/read.cgi/php/1122105465/
4nobodyさん:2010/03/18(木) 10:02:03 ID:???
■その他いろいろ
CakePHPカンファレンス東京(2008)
http://conference.cakephp.jp/
CakeMatsuriTokyo2009
http://matsuri.cakephp.jp/

連載:CakePHPで高速Webアプリ開発|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/cakephp
CakePHP 規約ワードメーカー WordMaker for CakePHP Conventions
ttp://www.cpa-lab.com/tech2/inflects/
Free CakePHP Book (Matt Curry and Mark Story)
http://www.pseudocoder.com/free-cakephp-book/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
CakePHP Note
http://www.garacter.com/notes/CakePHP+Note/ni:5
CakePHPを使ったMVC設計のベストプラクティス - Sooey
ttp://www.sooey.com/journal/2008/03/26/717/
Qdmail(日本語メールコンポーネントとして利用可能なライブラリ)
ttp://hal456.net/qdmail/
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/

■ver1.1用
CakePHP プログラマーズ リファレンスガイド
http://cakephp.jp/doc/
CakePHPフレームワークによる快速WEB開発 |codezine
http://codezine.jp/a/article/aid/670.aspx
5nobodyさん:2010/03/18(木) 10:02:22 ID:???
■関連書籍
・ver1.2系
CakePHP1.2ガイドブック
http://www.amazon.co.jp/dp/4839932468/
CakePHPによる実践Webアプリケーション開発
http://www.amazon.co.jp/dp/4839930651/
オープンソース徹底活用 CakePHPによるWebアプリケーション開発
http://www.amazon.co.jp/dp/4798022225/
CakePHP ポケットリファレンス※ver1.2beta
http://www.amazon.co.jp/dp/4774135038
CakePHP徹底入門
http://www.amazon.co.jp/dp/479811717X
PHPで作る携帯サイトデベロッパーズガイド
http://www.amazon.co.jp/dp/4798024767/
・ver1.1系
CakePHPガイドブック
http://www.amazon.co.jp/dp/4839924317
Fast CakePHP
http://www.amazon.co.jp/dp/4774133418
6nobodyさん:2010/03/18(木) 10:04:01 ID:???
テンプレらしきものは以上
補足があればどうぞ

Have a Nice Cooking !
> cake bake all User
7nobodyさん:2010/03/18(木) 10:06:31 ID:???
>>1
お疲れサマ!
8nobodyさん:2010/03/18(木) 13:31:33 ID:???
>>1

そろそろ1.3への移行を考えなきゃいけない時期かね
1.1→1.2よりかは1.2→1.3の方がやるべきことは少なそうだけど、1.3の新機能のメリットはそこまで大きく感じない・・・
9nobodyさん:2010/03/18(木) 13:55:10 ID:???
>>8
試しに移行を進めてるけど、俺のソースだと結構直すとこいっぱいあったな。
例えばhtmlヘルパーのオプション設定とか、
ちぐはぐだなと思ってた部分はだいぶ合理化されてるから気分的にはすっきりしたけど。
10nobodyさん:2010/03/19(金) 13:48:38 ID:???
core.php を 0 にして
cakephp の debug を
$_SESSION['Auth']['User']['email'] = '[email protected]';
でログインしているときのみ、 2にしたいんだけど、どうすればいいかな。
beforeFilter や beforeRenderでやってもだめみたい。

core.php を 0 にしちゃうと、コントローラーで個別に Configure::write('debug', 2); をやっても
エラーがちゃんと表示されないんだよね。
11nobodyさん:2010/03/19(金) 14:04:16 ID:???
>>10
エラーって何だろ?
ふつうにbeforeFilterやbeforeRenderで変えられるよdebugは

>>10の例ならbootstrap.phpで変えても良いけど
12nobodyさん:2010/03/19(金) 17:10:00 ID:???
>>11
ありがとう。core.php内でIPアドレスでチェックすることにして解決しました。
13nobodyさん:2010/03/19(金) 19:16:46 ID:qSSo5h5k
すごい長いですが失礼します。

まず、やりたいことなのですが。
DBconsultantsのmetroフィールドに01,03,11,22,33,34が入っていたとして
この中のどれかを含んでいたらconsultants全てのデータを取ってきたいのです


view
1~47の都道府県がチェックボックスになっています。
<?php e($form->checkbox('Page.metro.'.$prefectureHashModel['Prefecture']['pre_id']))?>

14nobodyさん:2010/03/19(金) 19:18:17 ID:qSSo5h5k
controller

// チェックが入った物だけを取得し、配列に格納
$metroHash = array();
foreach($this->data['Page']['metro'] as $key => $value){
if($value == 1){
$metroHash[] = 'metro Like ' . "%".$key."% ";
}
}

// 配列を文字列に変換
$metroHash = implode(' or ',$metroHash);

$consultantHashModelArray = $this->Consultant->query('SELECT * FROM `consultants` WHERE ' .$metroHash);
ここでこのSQL文を使えばできるのですが、今回やりたいのは下のpaginatorででして
どのようにすれば上のSQL文と同じ処理をしてくれるかがわかりませんので教えて頂けないでしょうか?


$conditionsHash = array();
$conditionsHash['metoro LIKE ?'] = なんたら?
$this->paginate = array('Consultant' => array('conditions' => $conditionsHash,
'limit' => 10,
'order' => array('consultant_id' => 'DESC'),
'page' => 1));
15nobodyさん:2010/03/19(金) 19:27:50 ID:???
すみませんCakeのバージョンは1.3です。
16nobodyさん:2010/03/19(金) 20:20:26 ID:???
PEARなどを使うとき、Cakeのコアクラスと名前が衝突してしまい、うまく動作しないことがあるのですが、
みなさんはどのように解決されていますか?

http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1153&forum=3&post_id=2359

こちらではPEAR側のソースを書き換える方法が提示されていますが、
できればソースの書き換えはしたくないです。

そもそも、コアクラスとか定数にprefixがついてないのっていろいろと問題あるとおもうのですが・・・どうなんでしょう。
17nobodyさん:2010/03/19(金) 23:42:18 ID:???
>>13
モデル名からなにやりたいのか想像つきにくいよ。
たぶんconsultants_metorosテーブルを作ってHABTMにするのが簡単なんじゃないかなと思うけど。
18nobodyさん:2010/03/20(土) 16:12:27 ID:???
19nobodyさん:2010/03/20(土) 19:57:19 ID:???
cakephp1.2.6+xamppで、http://3d.rokujyou.com/cake/index.htmlを動かそうとしているのですが

Missing Controller
Error: UrllistController could not be found.
Error: Create the class UrllistController below in file: app\controllers\urllist_controller.php

というエラーが出てしまいます。
urllists_controller.phpをurllist_controller.phpに変更しても同じでした。
何か他に設定すべきことがあるのでしょうか?
20nobodyさん:2010/03/20(土) 20:31:58 ID:???
>>19
Class名は変えたの?
21nobodyさん:2010/03/20(土) 22:31:07 ID:???
初歩的な質問で申し訳ございません
チュートリアルで分からない部分があります。

コントローラとビューについて
ビューの画面に遷移しようとするとコントローラのメソッドが呼び出され
その結果、戻り値を反映したビューがブラウザに表示されると解釈していました。

しかし、editファンクション内の処理で行われるPostデータをsaveする命令は
ビューが表示された後にPost送信するときに実行されるように見えます。
この処理の流れがよく分かりません。

恐縮ですが、どなたか分かる方がいればご教授お願いします。
22nobodyさん:2010/03/20(土) 22:50:56 ID:???
>>21
まず基本から。
ひとつのリクエストは、Controllerが(必要に応じてmodelとやりとりしながら)処理し、最終的にviewを表示して終了する

で、addやeditアクションについては、[1]フォームを表示する[2]postデータを保存する、のふたつのリクエストを同じアクションで行っているにすぎない
postされたデータがあるリクエストであれば[2]を、なければ[1]を行っている
それぞれ別のリクエスト
23nobodyさん:2010/03/20(土) 23:02:23 ID:???
>>20
動きました、ありがとうございます。
24nobodyさん:2010/03/20(土) 23:13:50 ID:???
>>22
レスありがとうございます。

empty($this->data) ならば、フォームが表示される処理のみされる
(editの場合はreadされた値が代入され表示される)
ということですね。

丁寧に説明していただき、とても助かりました。
25nobodyさん:2010/03/20(土) 23:42:34 ID:???
公式以外で入門サイトありませんか?
26nobodyさん:2010/03/21(日) 00:20:20 ID:???
>>25
googleってサイトが便利らしいぞ
27nobodyさん:2010/03/21(日) 00:53:04 ID:???
>25
素直に本買った方が早いと思う
28nobodyさん:2010/03/21(日) 10:11:29 ID:???
>>27
本買うことにします

>>26
googleで検索してもたいして有益なサイトはありませんね、国内サイトしか見てませんけど
29nobodyさん:2010/03/21(日) 11:34:14 ID:???
えっ!?
30nobodyさん:2010/03/21(日) 11:52:05 ID:???
初心者向けの開発会の需要はあるかねえ?
前に誰かがやってた気がするんだけど
31nobodyさん:2010/03/21(日) 11:52:20 ID:???
25=28=30
やっぱりcakephpは難しいのでCodeIgniterに移住します
公式のユーザーガイドが分かりやすくてフレームワーク初心者のぼくでもなんなくわかりやすいので
ありがとうございました
32nobodyさん:2010/03/21(日) 12:04:06 ID:???
>>31
cakeもそんなに難しくはないので、また気が向いたら戻ってきてね
33nobodyさん:2010/03/21(日) 13:54:33 ID:???
>>30
プログラマの将来のためにも
初心者向けの入り口は作ってあげたほうが良いよ。
まぁ、ほとんど挫折するだろうけど
34nobodyさん:2010/03/21(日) 14:05:16 ID:???
入門はそんなに難しくないと思うけどな
カンタンでわりと実践的なチュートリアルを増やしたらいいかも
35nobodyさん:2010/03/21(日) 15:09:25 ID:???
初心者向きのサイトはけっこうあると思うけどなぁ。
むしろ本だとbake中心だったりして実用的じゃない
36nobodyさん:2010/03/21(日) 16:25:52 ID:???
常識的に考えてDBっていくつまで hasOne,hasMany,belongsTo していいものなの?
あんまりやりすぎても負荷がかかるんだろうけど。
4,5個つなげる程度なら問題ないのかな。
37nobodyさん:2010/03/21(日) 17:39:14 ID:???
みんな開発環境って何使ってるの?
38nobodyさん:2010/03/21(日) 17:40:46 ID:???
秀丸
39nobodyさん:2010/03/21(日) 17:55:22 ID:???
>>36
実行速度と実行回数によりけりかな

>>37
VirtualBox + CentOS + vim
40nobodyさん:2010/03/21(日) 17:56:15 ID:???
colinux+うぶんちゅ+秀丸
41nobodyさん:2010/03/21(日) 18:41:24 ID:???
待ってろcakephp
俺は貴様を倒しに必ず戻ってくる
42nobodyさん:2010/03/21(日) 19:08:58 ID:???
>>34
symfonyのQ&Aサイトのチュートリアルがあったと思うんだけど、あの程度のボリュームのやつがcakeであると良いと思う
暇と技術があれば俺が作りたいけど、どっちもあまりない
43nobodyさん:2010/03/21(日) 19:19:40 ID:???
>>36
例えば普通のブログみたいなもんでも
記事にコメント、ユーザー、タグ、カテゴリー、トラックバック・・・って
いっぱいくっついてくるわけだしいいんじゃないの?
まあフィールドを選んだりcontainで必要なものだけ絞ったりはするけど。
44nobodyさん:2010/03/21(日) 21:40:38 ID:???
SQLレベルに限って言えば、JOINの数なんてそんなに問題にならないと思うけどな
業務系システムだと3桁とか珍しくないし
45nobodyさん:2010/03/22(月) 07:12:01 ID:???
3桁は珍しいんじゃないか?w
まぁなんにしても適切な結合で適切にインデックスとか
貼ってあれば問題なかろう
46nobodyさん:2010/03/23(火) 01:07:32 ID:???
CakePHPの開発にトライしてみました。PHP自体、かなり初心者。

相当昔、仕事でJavaのStrutsというMVCフレームワークで
ガシガシ開発していたので、何とかなるだろうと思ったら、
意外につまづきました。主にひっかかったのは以下3点。

1点目:MVCのContollerでの設定方法が良く分からない
2点目:Modelの命名とテーブルの命名の関係性にはまる
3点目:ヘッダーのフッターの余分な表示どうにかなんない?

全て解決しましたが、



47nobodyさん:2010/03/23(火) 01:08:59 ID:???
46です。間違ってカキコしてしまいました。

慣れれば快適なフレームワークですが、
ちょっと入り口は敷居が高い気がしました。

>>34 さんの「カンタンでわりと実践的なチュートリアルを増やしたらいいかも」
に同意です。
48nobodyさん:2010/03/23(火) 07:11:46 ID:3JpwvDQY
sessionが使えない環境でsessionぽい使い道として、
Configure::read & writeを利用しようと思うのですが、
セキュリティ上まずい点はありますか?
49nobodyさん:2010/03/23(火) 07:48:44 ID:fJcglhKE
よくわからんが、それってリクエスト毎のパラメータを引き継げるの?
5048:2010/03/23(火) 08:29:31 ID:???
GETでデータが来たら、
Configure::write('aaa', $_GET['nantoka']);
みたいにすれば、いつでもConfigure::read('aaa')で
内容を取り出せます。

Cookieを切っても保存されているのだけど
ちょっとどういう風に動いてる機能なのか、よくわからなくて。
51nobodyさん:2010/03/23(火) 09:10:10 ID:???
てかそれ
あきらかにセッションごとじゃなくて
全員でひとつの設定になるよね
52nobodyさん:2010/03/23(火) 09:11:17 ID:???
>>48
>>50のような使い方でセキュリティ上まずい点なんかないよ
53nobodyさん:2010/03/23(火) 09:55:42 ID:???
CakePHPのドキュメントってなんであんなにわかりずらいの
CodeIgniterみたいな丁寧なドキュメント級のサイト作ってくれたらアフィ毎日踏んであげてもいいですよ
ttp://codeigniter.jp/user_guide_ja/toc.html
54nobodyさん:2010/03/23(火) 10:14:41 ID:???
>>39>>43
>>44>>55

ありがとう!
以前レンタルサーバーで mysql too many connections ってエラーが出たのでSQL恐怖症で。
このエラーって一般的なレンタルサーバーだとめったに出ないものなのかな。

cakephp使ってないときだったので、sqlの組み方がおかしかったのかもしれなけど。
55nobodyさん:2010/03/23(火) 10:31:46 ID:CwgG/vKY
ちょっと悩んでいます。
以下のように[ ] で配列を作りたい場合、cakeではどのように入力したらよいのでしょうか?

<input type="text" name="name[]" />


echo $form->input('name[]');
このようにやっても上手くいかず。。
56nobodyさん:2010/03/23(火) 10:45:51 ID:???
>>55
sageてね

http://book.cakephp.org/ja/view/189/Automagic-Form-Elements
第2引数で指定してください
57nobodyさん:2010/03/23(火) 13:01:17 ID:???
>>56
たしか第2引数で
name => 'hoge[]'

みたいに指定すると、Securityコンポーネントで弾かれるはず・・・
解決策はしらん。
58nobodyさん:2010/03/23(火) 13:24:29 ID:???
>>54
同居人が多いレンタルサーバーだとどこでも接続数が絞られてるからエラー出るよ
チューニングするとか、キャッシュするとかしかない
59nobodyさん:2010/03/23(火) 17:42:20 ID:???
>>58
ありがとうございます。
mysqlとサーバーはほとんど知識無いんですけど、専用サーバーなら出ませんかね?
次エラーがさくらマネージドにしようか考え中です。
6048:2010/03/23(火) 22:07:17 ID:???
>>52
なるほど

>>51
とりあえず、テストしたら全体でひとつの設定にはならないようです
なので、この方法を使ってみます。
6155:2010/03/24(水) 08:07:39 ID:???
ageちゃって申し訳ありません。

>>56
>>57

echo $form->input('Modelname.0.fieldname');
とすると解決しました!

ありがとうございます!
62nobodyさん:2010/03/24(水) 10:07:09 ID:???
誰か初心者講座サイト作ってください
63nobodyさん:2010/03/24(水) 10:08:18 ID:???
>>62
本一冊くらい買えばいいよ
64nobodyさん:2010/03/24(水) 10:39:46 ID:???
cakephp1.3を使用しています
Paginatorでチェックボックス引継ぎって可能ですか?
10件ずつ表示したとして、次の10件に行っても以前の10件でチェック
していたチェックボックスは維持させていたいのですが。
可能でしたらやり方教えてくれませんか
65nobodyさん:2010/03/24(水) 10:41:16 ID:???
>>64
cookieを使えばオケ
66nobodyさん:2010/03/24(水) 16:45:26 ID:???
>>59
専用サーバーだって、mysqlの設定とアクセスの数によっては出る
その辺はcakephpじゃなくてmysqlの話になるのでmysqlスレいって聞いた方がいいよ
67nobodyさん:2010/03/24(水) 17:55:12 ID:???
>>64
それは、Cakeに限らず普通にセッションで持たせれば良いんじゃないのかな?
68nobodyさん:2010/03/24(水) 23:38:26 ID:???
cakephpで作成日時はcreatedですが、作成した人のIPや更新した人のhost、
などどう定義してますでしょうか?

作成した人のIP:created_ip
作成した人のHOST:created_host
更新した人のIP:updated_ip
更新した人のIP:updated_host

最後のdがdateのdであれば、以下のように定義?

作成した人のIP:create_ip
作成した人のHOST:create_host
更新した人のIP:update_ip
更新した人のIP:update_host

守ったほうがよい細かいDBの命令規則のページなどありましたら教えてほしいです。
69nobodyさん:2010/03/25(木) 00:09:57 ID:???
>>68
>最後のdがdateのdであれば、以下のように定義?
-edは過去分詞形なんだが…。

それはさておき、作成した人、更新した人だったら
creator_ip、creator_host、updater_ip、updater_host
でいいんじゃないかと思う。

個人的にupdaterよりeditorのほうがしっくりくるんだけども。
70nobodyさん:2010/03/25(木) 00:36:15 ID:???
>>68
マニュアルのモデルのところに出てる以外は別に決まってないので好きなようにどうぞ。

>>69 のように英語で考えてわかりやすいように・・・というか、
自分でコントローラーとかビューのコード書くときに「えっとフィールド名なんだっけ??」って
いちいち探さなくて済むように作っておけばいいよ。
71nobodyさん:2010/03/25(木) 09:17:02 ID:???
http://www.imagecheese.com/gallery/lil.jpg

上記のページはユーザー情報のedit画面です。
アドレスに指定された$idを元に、データベースから情報を抜き出しています。(例では$Idが43)
この$idの部分を $hashで表示する方法はないでしょうか?

http://localhost/scrap/users/edit/43 (これが今のやり方)
http://localhost/scrap/users/edit/7c02d52cc1be46217793f002640553d7 (これで元データを拾いたい)


下記が現在のスクリプトです。

function edit($id = null) {
if (!empty($this->data)) {
if($this->User->saveall($this->data, array('validate'=>'first'))){
$this->Session->setFlash(__('The Data has been saved.', true));
}
}
if (empty($this->data)) {
$this->data = $this->User->read(null, $id);
$this->set('data', $this->data);
}
}


単純に$idを$hashにすれば上手くいくかなと思いましたが、上手くいかず。。お助けくださいませ。
72nobodyさん:2010/03/25(木) 09:23:01 ID:???
>>71
read()じゃなくてfind()を使いましょう
マニュアル読んで、editアクションで何が行なわれているかを理解するところから始めると良いよ
7371:2010/03/25(木) 09:32:04 ID:???
>>72 
ありがとうございます!

スクリプトを以下のように書くとこうなりました。
http://www.imagecheese.com/gallery/ouo.jpg

function edit($id = null) {
if (!empty($this->data)) {
if($this->User->saveall($this->data, array('validate'=>'first'))){
$this->Session->setFlash(__('The Data has been saved.', true));
}
}
if (empty($this->data)) {
$conditions = array("hash" => $id);
$this->data = $this->User->findAll($conditions);
$this->set('data', $this->data);
}
}


データは取得できたけど、フォームに自動的に挿入されない。。
7471:2010/03/25(木) 09:34:29 ID:???
ちなみに Viewの部分はこちらです。

<?php echo $form->create('User',array("action"=>"show"));?>
<fieldset>
<legend><?php __('Edit Data');?></legend>
<?php
echo $form->input('address');
echo $form->input('Keyword.0.name');
echo $form->input('Keyword.1.name');
echo $form->input('Keyword.2.name');
?>
</fieldset>
<?php echo $form->end('Submit');?>
7571:2010/03/25(木) 09:40:46 ID:???
すいません!
findall じゃなくて findで指定したら上手くいきました!

なんて馬鹿なんだ。。
7672:2010/03/25(木) 09:43:57 ID:???
>>73-75
全部聞こうとしないで、試行錯誤してごらん
いつまでも使いこなせないよ
7771:2010/03/25(木) 09:52:43 ID:???
了解しました。
すぐに聞かずに自分で悩む時間を大切にします!

この試行錯誤する過程が一番身になるんですよね。。
7864:2010/03/25(木) 17:45:28 ID:???
cookieにsessionですか
すみませんがPaginetorでの具体的なやり方教えていただけませんか?
79nobodyさん:2010/03/25(木) 18:04:30 ID:???
>>78
自分で調べろ
80nobodyさん:2010/03/25(木) 22:54:10 ID:???
ヒントだけあげるとpaginator使おうが使わなかろうがフォームに値をセットするには
どうすればいいか考えればいい。
81nobodyさん:2010/03/25(木) 23:49:51 ID:???
甘やかしすぎるのはよくないんじゃねーの。
ただ「教えてくれ」と言ってる奴ってダメだよ。
「ここまで調べたけど、ここが分からない」というのが本来の聞き方でしょ。
ダメ人間に餌を与えすぎると無意味に肥え太るぞ。
82nobodyさん:2010/03/26(金) 07:28:24 ID:???
>>78
とりあえず、それぞれの値を保存、取得するのに
いくつかのやり方があるということ
どういうサイトを作っているのか、晒してくれれば
見にいくよ
8364:2010/03/26(金) 09:23:56 ID:???
POSTで渡すならすぐにわかるのですが
ちなみにチェックボックスは
<?php e($form->checkbox('Model.name.'.$id))?>
という形でこれをforeachで繰り返し出してます。
POSTで来るなら
foreach($this->data['Model']['name'] as $key => $value){
if($value == 1){

}
見たいな感じの処理でいいと思うのですが

もう少しpaginatorを勉強します
すみませんでした
84nobodyさん:2010/03/26(金) 11:40:01 ID:???
>>83
paginatorというブラックボックスを前にして、たぶん本質とは全然関係なさそうなところで
引っかかってるだろうから俺は >>80 を書いたんだけども、
paginatorは一旦頭から切り離す。どのページに推移しようがやることは同じだって。
85nobodyさん:2010/03/26(金) 11:50:37 ID:???
>>83
javascript使ったらどうかな?
8664:2010/03/26(金) 13:12:20 ID:???
すみませんやりたいことを初めから準に書きますね。

まず、検索フォーム(page_contololler)から『アイス』と入力して検索
データベースから『アイス』を含むユーザーを取ってきます。

ここは
// 検索条件
if (env('REQUEST_METHOD') == 'POST' ) {
$this->Session->write('pageHash', $this->data['Page']);
$conditionsHash = $this->getWhereParameters($this->data['Page']);
} elseif (isset($this->passedArgs['Page'])) {
$this->data['Page'] = $this->Session->read('pageHash');
$conditionsHash = $this->getWhereParameters($this->data['Page']);
} else {
$this->Session->delete('pageHash');
$conditionsHash = array();
}
//検索条件

function getWhereParameters($pageHash) {

$conditionsHash = array();

$conditionsHash['name' Like ?] = $pageHash['page']['name'];
}

$this->paginate = array('Model' => array('conditions' => $conditionsHash,
'limit' => 10
'page' => 1));

こういった感じで$conditionsHashをsessionで渡して
paginatorの次へを押した場合検索条件を引き継ぐようにしています。
8764:2010/03/26(金) 13:16:17 ID:???
ここでリスト一覧にさっきのチェックボック(チェックのON,OFF可能)を持ったユーザが一人一人
出てくるわけなのですが。
paginatorの 次へ>> や << 前へを押した場合に
自分でチェックをつけたチェックボックスを維持したままページを移動したいのです。

それで最後にチェックの入ったユーザだけを取り出すというシステムです。

やはり表示上は裏で全部出してjavascriptでの制御が簡単なんですかね
88nobodyさん:2010/03/26(金) 13:29:56 ID:???
>>87
次へ>>をsubmitにすれば、controllerでsessionに保存したりできるよね
しかし、どちらにせよjavascriptは使うのではあるまいか、と思います
89nobodyさん:2010/03/26(金) 13:31:55 ID:???
面倒だから検索条件をserializeしてセッションでわたせば。
90nobodyさん:2010/03/26(金) 13:38:22 ID:???
ページングしてるページ毎のチェックボックスの状態を記憶せにゃらならんのでしょ。
自分だったら

1)チェックボックスにonclickイベントつけて、ユーザーIDとチェック状態を非同期送信
2)1)をサーバー側のアクションで受けて、DBなりセッションなりに溜めとく
3)あとは溜めたステータス情報を持ち回って、煮るなり焼くなりお好みひゃっほー

あ、昼休みおわた
91nobodyさん:2010/03/26(金) 14:55:35 ID:???
SQLのログでさ、
SQLへの負荷 はどれをみればいいのかな。
Nr Query Error Affected Num. rows Took (ms)

おしえてちょんまげ。
92nobodyさん:2010/03/26(金) 15:09:30 ID:???
>>91
そのなかなら Took (ms)
ms = micro seconds
93nobodyさん:2010/03/26(金) 15:45:33 ID:???
>>92
ご親切にありがとう!
ちなみにどれくらいまでが問題無い範囲なんだろ。

合計が 100越えたら重すぎるとか、300までなら余裕とか。
もちろんアクセス数などにもよるだろうけど。
9464:2010/03/26(金) 15:48:19 ID:???
いろいろな意見ありがとうございます。
今後じっくり考えてやってみます。
ただ、今回は時間があまりないのと自分自身のスキルがたりないのもあってで
ttp://css-eblog.com/javascript/javascriptpaging.html
を使ってすることにしました。

ありがとうございました。
95nobodyさん:2010/03/26(金) 16:19:18 ID:???
一画面に全部のデータを読み込むのかな
ありっちゃありだけど
96nobodyさん:2010/03/26(金) 19:09:52 ID:???
yahooや楽天のように、ログインしているとユーザ専用のリンクが見えて、非ログイン時には
その旨をメッセージで表示するにはどうすればよいのでしょう。
(viewで表示分岐するのは分かるんですが、その前のAuthでどうするか)

非ログインユーザはゲストとして自動的に認証させる?という方法しか
思いつかないのですが、スマートな方法はありませんか。
97nobodyさん:2010/03/26(金) 19:14:59 ID:???
??
現状でログインしているかどうかの判断で振り分ければいいのでは?
98nobodyさん:2010/03/27(土) 11:07:00 ID:???
>>94
全データが多くなければそれでもいいと思う
1.3は触ってないからわからないけど
1.2なら、paginatorヘルパーで出力するときに引数でFORMのパラメータ渡せば
検索条件付のURLによるページングも作れる
99nobodyさん:2010/03/27(土) 13:02:02 ID:???
>>96
Auth使ってるなら
$this->Auth->user()
で中身確認できたと思うけど
issetとかで判断すればいいんじゃない?
controllerね
100nobodyさん:2010/03/27(土) 18:21:26 ID:???
最近マニュアル読まないで質問する人増えたなあ
基本的なことは一通り書いてあるけどねえ
101nobodyさん:2010/03/27(土) 18:25:10 ID:???
自由に質問させてあげればいいんじゃないかな
答えるのは俺らの自由なんだし
102nobodyさん:2010/03/27(土) 19:04:05 ID:???
ルビ厨にCakeは欠陥品とか言われてんぞw
http://pc11.2ch.net/test/read.cgi/php/1217883614/447
103nobodyさん:2010/03/27(土) 20:46:53 ID:???
別に気にならない
104nobodyさん:2010/03/27(土) 21:30:03 ID:???
そもそもrails自体最初はPHPで実装しようと思って失敗してRubyに切り替えられたものなので、
railsユーザーから見たら(Cake)PHPがNGなのは当然と言えば当然のような
105nobodyさん:2010/03/27(土) 23:09:29 ID:???
欠陥品じゃない言語・FWなんて歴史上存在したことがない
106nobodyさん:2010/03/28(日) 15:54:08 ID:???
んだね。何使ってたって上手くいかないときには「〇〇はクソ!」とかって吠えたくなるときあるもんね。
107nobodyさん:2010/03/28(日) 17:07:23 ID:???
それ、むしろカチンときてるっぽぃ
108nobodyさん:2010/03/28(日) 17:17:43 ID:???
CakePHPの開発者が離脱したらしいけど
CakePHPに影響あるかね?
109nobodyさん:2010/03/29(月) 09:56:07 ID:???
110nobodyさん:2010/03/29(月) 09:56:40 ID:???
これはstableでるのも近いかも
111nobodyさん:2010/03/29(月) 10:33:52 ID:???
cakephpは delete や save などの機能を使う時にデータテーブルのidを参照するようにみえます。
ということは、下記のようにidなしのkeywordsテーブルを作成するのはNGなのでしょうか?

usersテーブル
id, address,

keywords テーブル
name, user_id (二つ合わせてプライマリーキー)

112nobodyさん:2010/03/29(月) 10:39:50 ID:???
>>111
複合プライマリーキーはNG
idを別途用意しておくべし
113nobodyさん:2010/03/29(月) 10:53:18 ID:???
>>112

やはり。。いろいろやっても上手く動かなくて悩んでました。
ありがとうございます!

実はkeywordsテーブルで name と user_id が重複しないようにしたかったのです。

ローソン(name), 13(user_id)
ローソン(name), 13(user_id)
このように、データが重複しないように。

調べたところ、Cakephpにはそういったデータ用の関数はなさそうです。

直に MySQLの replace を書き込むのが吉でしょうか?
114nobodyさん:2010/03/29(月) 11:08:41 ID:???
>>113
1.3ならvirtualFieldのisUniqueでいけそうな気がするが
1.2なら独自バリデートかな
115nobodyさん:2010/03/29(月) 11:13:39 ID:???
>>114

1.2です。
やっぱり独自バリデートのコードを使用するのがベストっぽいですね。
ありがとうございます。
116nobodyさん:2010/03/30(火) 00:21:02 ID:???
DB側にユニーク制約つければいいんじゃないの?
117nobodyさん:2010/03/30(火) 13:39:29 ID:???
cakeでエラー出るやん
118nobodyさん:2010/03/31(水) 12:25:20 ID:???
さくらレンタルサーバ、cron設定で上手くいかず、、どなたかお助けくださいませ。

http://domainname.sakura.ne.jp/scrap/users/action
上記のアクションをcron設定したいです。


www/scrap/app/webroot/cron.php
「webrootにcron.phpを作成」
<?php
$_GET['url'] = "/scrap/users/action";
require_once ( dirname( dirname( dirname(__FILE__))) . "/index.php" );
?>


さくらのサーバコントロールパネルのcron設定 【実行コマンド】
cd /home/domainname/www/scrap/app/webroot ; /usr/local/bin/php cron.php


このように設定して、3月31日12時10分など、数分後の設定にして試してみても、上手くいきません。。

【参考にしたURL】
http://www.happyquality.com/2009/11/18/1088.htm
http://www.multiburst.net/ElectricBrain/2009/04/how-to-use-cron-on-cakephp
http://memo.mkmin.com/cakephp/?p=8

119nobodyさん:2010/03/31(水) 16:53:41 ID:???
何が上手くいかないのか書けや
120nobodyさん:2010/03/31(水) 21:01:56 ID:???
>>119

users/action がcronでちゃんと実行されないのです。。
121nobodyさん:2010/04/01(木) 04:55:05 ID:???
>>120
「ちゃんと実行されない」????
神様やスーパーマンじゃないんだから、「ちゃんと実行されない」と書かれてもお前が
何に困っているか?原因は何か?わかるわけないだろ!!!

表示されているエラーメッセージさらせ!

さくらレンタルサーバにも色々あるけど、どれ使ってる???
http://www.sakura.ne.jp/index.php
サーバに負荷掛けない為のcron使用時の制約はどうなってんの???
詳しい情報をさらせ!!!

cronがまったく動かないの?
他の物はcron正常に動くの??
122nobodyさん:2010/04/01(木) 06:55:57 ID:???
ちょっと、怖いよw
123nobodyさん:2010/04/01(木) 07:30:37 ID:???
ちゃんと叱ってくれる >>121 はとてもマシだと思うぞ
124nobodyさん:2010/04/01(木) 09:32:30 ID:???
そう思うが、徹夜明けのイライラをぶつけられてもw
125nobodyさん:2010/04/01(木) 09:43:35 ID:???
シカトされるよりは、いいな
優先事項は、問題を解決することだ
126nobodyさん:2010/04/01(木) 09:56:57 ID:???
>>118
みんなの優しさに感動したからマジレスする

そのやり方なら、URL叩くと、アクションが実行されるよね?
動くなら、さくらのcronの設定という問題じゃない?
ほかのcronのスクリプトが動くかどうかを試したかな?
分からなければCakePHP関係無しに調べると良いよ
127nobodyさん:2010/04/01(木) 09:59:56 ID:???
まずは、
cd /home/domainname/www/scrap/app/webroot ; /usr/local/bin/php cron.php
これが動くのか、確認しようぜ

動くならcakeの問題じゃなく、cronの設定不備だと思う
128nobodyさん:2010/04/01(木) 10:34:58 ID:???
まずcronの実行ログ確認しなよ
129118:2010/04/01(木) 11:00:53 ID:???
みなさん、暖かいアドバイスありがとうございます!

まずはcronの実行ログを確認する方法をさくらで調べてみます。

>>121

さくらのスタンダードです。 制約は1時間に一回のみです。
http://www.sakura.ne.jp/index.php

>>126

http://domainname.sakura.ne.jp/scrap/users/action
のURLを叩くと問題なくアクションは実行されます!


>>127.128

cronの実行ログがどこで見るかわからなかったので、先走ってしまいました。
まずは実行ログを探してきます!
130nobodyさん:2010/04/01(木) 11:33:27 ID:???
CakePHPはよくしらんけど、どうしても駄目なら
wget http://domainname.sakura.ne.jp/scrap/users/action
をcronで呼ぶとか
131118:2010/04/01(木) 12:05:53 ID:???
>>130

レスありがとうございます。なんとか、上手く動きました! dirnameの階層が間違っていたようです。
さらに、cronのエラーメールも、さくらの初期パスワード設定を入力していなかったので届かなかったようです。

最終的な設定は以下です。

www/scrap/vendors/cron/scrape.php
<?php
$_GET['url'] = "/users/action";
require_once dirname(dirname(dirname(__FILE__))) . '/index.php';
?>

【さくらのcron設定】
cd /home/domainname/www/scrap/vendors/cron ; /usr/local/bin/php scrape.php

みなさん、暖かいアドバイスどうもありがとうございました。。
132nobodyさん:2010/04/01(木) 20:16:24 ID:???
年度はじめの今日がサイトオープンラッシュだったところが多かったんじゃないでしょうか。
開発者の皆さん、ひとまずお疲れ様です。
皆様は今夜旨い酒が飲めていますように。。。
未だ修羅場の職場より逃避カキコ sage
133nobodyさん:2010/04/01(木) 23:51:38 ID:???
FWが開発効率が数倍良くなるから、ウェブ開発で徹夜したりデスマーチになったりと言うことはなくなる!はずだった…
134nobodyさん:2010/04/02(金) 00:37:40 ID:???
デスマの原因は開発効率じゃないからな
135nobodyさん:2010/04/02(金) 00:41:07 ID:???
自分みたいなデザイナーでもFWのおかげでいろいろいじれるのはありがたい
うけられる仕事の幅も広がった。
でも仕事がどんどん難しくなっていく…勉強ばっかりだ
136nobodyさん:2010/04/02(金) 03:37:20 ID:???
オープン・リフレッシュは3月最終週にした

・・・はずだった
137nobodyさん:2010/04/03(土) 07:39:42 ID:???
>>133
日本人の質を低下させたのは実はゆとり教育などではなく馬鹿でもチョンでも学士様に仕立て上げる悪平等教育なんだよ
今やむしろチョン様大歓迎だろ
昔の日本はドイツ式で大学へ行くのは本当に優秀な人間だけで普通の子は小学校へも行かず奉公へ出たもんだ
戦前世代だとそういう中から優秀な経営者や作家が生まれているだろ
脱ゆとりも結構だけどこの悪平等の是正なくして日本は再生しないよ
138nobodyさん:2010/04/03(土) 22:20:39 ID:???
>>137
小さい時から、目標がある人間は、それで良いが、
やりたい事に気がついて、勉強できる環境が、ないのも微妙だろ。。。

実際、ほんとにやる気がある人間は、30でも40でも勉強出来る環境に行くけど、
全員そんなに意思は固くない。
139nobodyさん:2010/04/05(月) 16:39:35 ID:???
デザイナーというか、HTMLコーダーさんと連携するときどうしてる?
一旦HTMLコーディングしたものを、こっちでVIEWのテンプレートに書き換え?
140nobodyさん:2010/04/05(月) 16:44:30 ID:???
>>139
それが普通でしょ
デザイナーにphpを強要するの?
141nobodyさん:2010/04/05(月) 18:45:04 ID:???
1.2.6ですが、ブログチュートリアルを参考に簡単な
マスタテーブルの表示・追加・削除画面を作っているんですが
Modelのsaveが実行されません。(INSERTされない)

function add(){
if (!empty($this->data)) {
if ($this->JimushoMaster->save($this->data)) {
$this->flash('Your post has been saved.','/jimusho_masters');
}
}
}
こんな感じで行ってるんですがナニが悪いんでしょう?
モデルJimushoMasterはid(int, unsigned, auto_increment)とname(varchar)しか
ない簡単なものです。

add.ctpでは

<h1>事務所追加</h1>
<?php
echo $form->create('jimusho_master');
echo $form->input('name');
echo $form->end('保存');
?>

とだけしています。
142nobodyさん:2010/04/05(月) 18:55:28 ID:???
>>141
これだけじゃ詳しくは分からんけど、validateに失敗しているんじゃない?
debug($this->JimushoMaster->invalidFields());
をsave失敗時に実行してみたら何か入ってるんじゃないかな

saveされないというのはSQLが実行されずにaddのフォームが表示されるんだよね?
143nobodyさん:2010/04/05(月) 18:58:10 ID:???
あとついでだけど、今のうちに規約に沿う癖をつけといた方が良いよ
Office / offices / OfficesController
144nobodyさん:2010/04/05(月) 22:59:55 ID:1CfLL9NS
入力値のバリデーションを行なう前に
半角に変換したいのですが、
そういう処理はどう書けばいいでしょうか?
145nobodyさん:2010/04/05(月) 23:16:53 ID:???
バリデーションに投げる前の段階でPHPで書けばいいと思うよ
146nobodyさん:2010/04/05(月) 23:20:10 ID:???
beforeValidateでいいんじゃないの?

とにかくマニュアルは一通り目を通しておこうよ。
覚えなくてもいいけど、どこでどんな処理ができる・・・ってだいたい見当つくでしょ。
147nobodyさん:2010/04/05(月) 23:23:16 ID:???
コントローラの中でモデルに渡す前にフィルタかけるしかないですね・・
148nobodyさん:2010/04/06(火) 01:21:23 ID:???
146から147の流れになることがよくわからん
149nobodyさん:2010/04/06(火) 04:05:02 ID:???
beforeValidateはモデル内のことなので
中でdataを加工してもviewまで引っ張れないのですよ
150nobodyさん:2010/04/06(火) 09:43:10 ID:???
>>149
何でviewに変換後のデータが必要かは知らないけど、それが書いてなきゃ分からんでしょ

やろうと思えばModel内で加工することもできるし
151nobodyさん:2010/04/06(火) 18:16:24 ID:???
>>142さん

ご助言ありがとうございます。
saveの返値は1でしたので成功しているようです。
が、やはりデータベースにINSERTされていないようです。

念のため、save後、debug($this->JimushoMaster->invalidFields());
してみましたが空っぽなのでバリデートの失敗ではないようです。

レールから脱線しますが、
$this->JimushoMaster->query('INSERT INTO jimusho_masters (name) VALUES (\''.$this->data['jimusho_master']['name'].'\');');
のように無理やりSQLを指定して実行すると問題なくINSERTされました。

うーん、ナニが悪いんでしょう。ケーキ食べ始めなのでわからんす。
152nobodyさん:2010/04/06(火) 21:06:46 ID:???
>>151
期待通りの動きをしないときはとにかくdebug()をあちこちにぶっ差して
どういうデータが来てるか見る。あとdebugモード2の時のSQLダンプをよく読むのがいいです。
153nobodyさん:2010/04/07(水) 02:07:26 ID:???
debug()はよく使うのだけど、boolean型もしっかりとどの値か表示してほしいな
154nobodyさん:2010/04/07(水) 10:12:26 ID:???
>>151
ん?ということは、リダイレクトしているということ?
だったら、発行されたSQLとか見て原因探ればいいんじゃない?debugは2にしてるよね?

Insertされないというのをもうちょっと具体的に書いてみてちょ
155151:2010/04/07(水) 16:13:32 ID:???
すいません、Cake焼き始めなものでよくわかってなく
説明も下手ですね。

if( $this->JimushoMaster->save($this->data) ){
$this->redirect('/jimusho_masters');
}else{
debug($this->JimushoMaster->invalidFields());
}

現在のコードはこんな感じです。
実行すると、レコードが追加されずに/jimusho_mastersにリダイレクトします。

saveは成功したという結果が返っているんですが、
レコードは増えていない画面に戻ります。

Validateが失敗していれば、エラーがでるはずですが
なにも表示されないのでエラーではないようです。

デバッグモードで画面下にクエリが出るんですが
そこにはINSERT文がないので、saveを呼び出しても
INSERTクエリが実行されてないようです。
156nobodyさん:2010/04/07(水) 17:24:09 ID:???
>>155
読み返してみた。
第一引数はモデル名じゃなかったかな?
echo $form->create();
or
echo $form->create('JimushoMaster');
にしてみてどう?
157151:2010/04/07(水) 17:41:43 ID:???
>>156さん

なおりました!ありがとうございます!
なるほど、$formヘルパでcreateするときにモデル名を
指定するんですね。やっと解決できました。

ご助言ありがとうございます!
158nobodyさん:2010/04/07(水) 18:17:38 ID:???
>>157
よかった。今後は英単語で命名するようにねw
159nobodyさん:2010/04/09(金) 01:42:43 ID:???
キーボードの半角/全角漢字の列にある
1〜0までの数字を使ってる人いる?
1を押したときにShift押さなくても!が出るようにしてない人て
頭おかしいよね
160nobodyさん:2010/04/09(金) 04:23:45 ID:???
ファイル(画像とか)のアップロード管理何つかってますか?
追加・更新・削除できるものでお勧めあったら教えてください
MediaPluginは更新が出来なかった
161nobodyさん:2010/04/09(金) 09:54:40 ID:???
>>159
うん。頭おかしいと思う。

>>160
Mediaplugin更新できるでしょ。
ファイルアップロード系は導入するのが面倒で複雑だけど、
がんばってMediapluginを使うようにした方がいい。
自作するよりスピーディーだし、かなりうまく設計されていると思う。

そのレベルの話なら公式で聞いてみたらどうでしょ。
162nobodyさん:2010/04/09(金) 21:11:05 ID:???
>>161 ありがと。もうちょっと試行錯誤してみます。
163nobodyさん:2010/04/10(土) 00:06:40 ID:XPBwMnMW
layoutに変数を渡したいのですが、
どうやればいいですか?
164nobodyさん:2010/04/10(土) 00:09:03 ID:???
$this->hogeに渡すと思い込んでましたが
setするんですね
失礼しました
165nobodyさん:2010/04/10(土) 14:31:33 ID:???
1994年生まれの人集まれ!★3
http://gimpo.2ch.net/test/read.cgi/nendai/1269784099/
166nobodyさん:2010/04/11(日) 21:25:47 ID:???
Authコンポーネントで質問です。

http://www.facebook.com/

このfacebookのindexページのように、ログイン画面と登録画面をindexに置きたいです。

Authだと、Auth用のusersコントローラを独立して作らないといけない? みたいなのですが、
自分の目的にはAuthを使えるでしょうか?

FaceControllers内
function index, functon edit, function add. function login, function logout,
などと、ひとつのコントローラに納めないとできないのではないかと思ったりして悩んでおります。

たぶん大きな勘違いかと思うのですが、どういうイメージでAuthを使えばよいのでしょうか?
167nobodyさん:2010/04/11(日) 21:46:51 ID:???
トップはフォームだけで、フォームからUsersコントローラーのaddアクションを呼べばいいのでは?
168nobodyさん:2010/04/12(月) 09:52:15 ID:???
>>167

ありがとうございます。
いろいろと試してみます。
169nobodyさん:2010/04/12(月) 11:19:42 ID:???
Authコンポーネントを使うと、

Cannot modify header information - headers already sent by

というエラーが出てしまいます。

調べたところ、

<?php ?>の上下の改行をなくす、php.iniでoutput_bufferingをonにする。
などの解決方法がありますが、試しても上手く行きませんでした。

layoutもデフォルトなのでheaderの部分を別個書いた記憶もなく、
ほとほと困り果てました。


なにかほかに解決方法はないものでしょうか?
170nobodyさん:2010/04/12(月) 12:13:51 ID:???
>>169
appコントローラーで何か文字を出力してるんじゃないの?
171nobodyさん:2010/04/13(火) 05:20:46 ID:4rbnTecY
携帯からのアクセスの場合だけ使いたいヘルパーがあるのですが
動的にヘルパーを読むにはどうしたらいいですか?
172nobodyさん:2010/04/13(火) 13:09:50 ID:???
>>171
普通にの場合も読んでおけばいいと思うけど、どうしても携帯の時だけというのなら
app::importとかでいいんじゃない?
173nobodyさん:2010/04/13(火) 13:10:31 ID:???
PC が抜けてた

普通にPCの場合も読んでおけばいいと思うけど、どうしても携帯の時だけというのなら
app::importとかでいいんじゃない?
174nobodyさん:2010/04/13(火) 14:41:15 ID:???
CakePHP 1.3.0-RC4 キタ━━━━━━(゚∀゚)━━━━━━ !!
http://bakery.cakephp.org/articles/view/cakephp-1-3-0-rc4-has-arisen
175nobodyさん:2010/04/13(火) 14:41:46 ID:???
This release marks the last release candidate, before 1.3.0 goes to stable.
とあるので、すたぶるが来る日も近そうです
176nobodyさん:2010/04/13(火) 15:19:57 ID:???
今度のは、どんなバグが待っているのだろう...
177nobodyさん:2010/04/13(火) 16:35:06 ID:???
1.2.0のときバグなんてあったっけか?
178nobodyさん:2010/04/13(火) 16:40:10 ID:???
AuthComponent がバグっていたような
179nobodyさん:2010/04/13(火) 16:55:01 ID:???
ああ、あったねえ。
でも、それって、1.1でも1.2でも穴空いてたような
180nobodyさん:2010/04/14(水) 00:09:32 ID:???
>>174
昨日の夜に見たときは、なかったんだけどな…日付改竄?キャッシュ?

>>175
このペースでいけば4月26日かな?
181180:2010/04/14(水) 00:12:06 ID:???
見たの昨日の夜じゃなくて、一昨日の夜だった
スレ汚しスマン
182169:2010/04/14(水) 09:53:38 ID:???
>>170

どうもありがとうございます。
なぜかmodelフォルダのファイルを作成し直したら直りました。
おそらく、ファイルの文字コード関係が怪しいと思ったのですが、結局原因は特定できず。。


ちなみに、Authコンポーネントを使う時は、

pages_controller, users_controller

などと、別途usersのコントローラを作成しますが、
これはわかりやすくするために分けるだけで、一つのコントローラに統合することも可能
ということでしょうか?
183nobodyさん:2010/04/14(水) 10:08:05 ID:???
>>182
ファイル末尾の ?> を削除するところから始めたら良いことあるかもね

Authについては、まず、Userモデルを使って何か動かしてみれば良いんじゃないかな?
手を動かしたほうが早く身につくよ
184169:2010/04/14(水) 10:18:49 ID:???
>>183
レスありがとうございます!

末尾の ?>も排除したりいろいろしたのですが、結局上手くいきませんでした。。
どうもDOM付エンコードとかそっち系かなとにらんでおります。

Authは実際に動かしているのですが、usersコントローラのものを
pagesコントローラに少しずつ動かしても結構動くので、もしかして
全部移動できるかな? と思ったのです。
185nobodyさん:2010/04/14(水) 10:29:59 ID:???
>>184
そりゃ動く
でも、意味がない

しかもよりによってPagesControllerだと、何のため?ってことになるし、単にメンテがしにくくなるだけのような気が

今後もCakePHPを使っていくつもりなら、CakePHPの思想に従ってみたらどうか
186169:2010/04/14(水) 10:56:37 ID:???
>>185

わかりやすい解説ありがとうございます。
cakeの思想に従うことにして、すっきりするようにします。
187nobodyさん:2010/04/14(水) 12:56:22 ID:???
validateで質問させてください。
入力時にkeywordsテーブルの name フィールドをチェックしたいです。

class Keyword extends AppModel {
public $validate = array(
"name" => VALID_NOT_EMPTY,
);
}


しかし、viewでは 

$form->input('Keyword.0.name');

上記のように配列仕様の入力なので、validateが上手くいきません。
$form->input('Keyword.name'); と書けば動くのですが。

上手い方法はないものでしょうか?

188nobodyさん:2010/04/14(水) 13:18:29 ID:???
>>187
アソシエーションの設定とControllerのsave周りを詳しく
189nobodyさん:2010/04/15(木) 00:04:30 ID:???
みんなviewはphpコード書きまくり?

はるか昔smarty使ってたこととか、デザイナーにphpいじらせたくないこととか考えると
smarty組み込みたいんだけど、ヘルパーの引数に配列が渡せなくて詰んだ。
参考サイトは山ほど見たんだけど、$this->aa('key1','value1') で配列生成できているところまでは確認したけど
ヘルパー引数にほりこんでもヘルパーが動かない。。。
190nobodyさん:2010/04/15(木) 09:53:08 ID:???
>>189
ここは見た?
http://d.hatena.ne.jp/am11op/20070614/1181837256

個人的にはSmartyなぞ必要ないと思っているが、使いたいヤツがいるのでしかたなく...
191nobodyさん:2010/04/15(木) 10:06:32 ID:???
>>190
きめえwwwそこまでせねばらなんものかwww
いやそこまでせねばならんからそうしてるんだろうけど。
192nobodyさん:2010/04/15(木) 10:39:21 ID:???
>>189
view で使う程度のphpなら直接デザイナーに教えた方がいいと思うが。
smarty なんて 今の時代に cgi 使ってプログラムやってるようなもん。
193nobodyさん:2010/04/15(木) 10:40:53 ID:???
>>190
つかそこまでやるやつがなぜbakeにこだわるのかがわからん
194nobodyさん:2010/04/16(金) 16:07:48 ID:???
>>192
きっとデザイナがviewの中で変なphp書くのが嫌なんだろ
195nobodyさん:2010/04/16(金) 16:41:46 ID:???
つーか、下手にデザイナにviewいじられるとバグの温床になる気がするんだけど。
さわらせている人っているのん?
196nobodyさん:2010/04/16(金) 17:00:25 ID:???
システム作ってからデザインさせることになると、デザイナがviewをいじるんじゃないのか
やったことないけど
197nobodyさん:2010/04/16(金) 17:10:39 ID:???
プログラマが「ここにこんなループが来るからその部分のデザインたのむ」って
言えばいいだけでは?

一人で全部まかなってるフリーの立場からしたらプログラマとデザイナがそれぞれ
自分の仕事だけやってればいいなんてうらやましい。だからもっと話して
連携すりゃいいのにと思うなぁ。
198nobodyさん:2010/04/16(金) 17:14:40 ID:???
ありきたりのデザインなら自分でできるが
アーティスティックなのを請け負うと、デザイナ必要になるよね

大抵、ループを説明するより自分でいじったほうが速い
199nobodyさん:2010/04/16(金) 17:23:20 ID:???
ああそうか
見た目だけじゃなくて、機能を考えたら
例えばリストにするよりか、プルダウンにしたほうがいい
なんてことになって、それならAJAXつかっちゃおうとかに
なったりしたら、デザインもプログラムもいろいろ
いじるところが出てくるな
となるとどっちを主導でいくかってところで難しくなるのか
なるほどなるほど。

それならいっそう話し合いをして連携しないといけないと思うけど
そういう仕事ってディレクターとかコーディネーターみたいなのが
間にいるもんなんじゃないの?
自分で勝手にいじったらいろいろややこしくなるような気がする。
200nobodyさん:2010/04/16(金) 19:01:38 ID:???
デザイナー、プログラマー以上にまともなディレクターが少ないのがこの業界の癌だよな
201nobodyさん:2010/04/17(土) 00:35:56 ID:???
ならば貴公がなればよかろうに
202nobodyさん:2010/04/17(土) 00:55:04 ID:???
政治家の文句も言うが、じゃあ政治家になれと言われたことはなかった
203nobodyさん:2010/04/17(土) 12:57:20 ID:???
なるほど!
そういうことか。
本心では「政治なんて誰がやっても同じ」と思ってるから、
政治家になれとは言わない。
それと同じようにWebのディレクティングも誰がやっても同じだから・・・。
204189:2010/04/17(土) 13:52:28 ID:???
皆様コメントありがとうございます

>>190 さんの紹介してくれてる記事はもちろん試していて、
$this->aa()でview内でarray生成はできるけど(自作関数内var_dumpで確認)、helper内だとうまく渡せないんです


議論がされてますが、デザイナーにPHP触らせたくないというのが理由です。
こちらデザインは素人レベルでシステムのみ対応しているため、発注元にデザイナーを別途雇ってもらうケースが多いのですが
そのときにコードぐちゃぐちゃにされて「動かないからなんとかしてくれ」となるのが面倒なんですよ
(自作の各種パッケージをちょっとカスタマイズして売る、というやり方を副業でやっているので・・・)
あとはクライアントがsmarty指定するケースも多いです

もう少し軌道に乗ったら、提携デザイナーさんを何人か探して、
その人達を紹介するやり方にかえようと思います。

そんなわけで、1.3からはPHPコードべた書きでいこうと思います。
205nobodyさん:2010/04/19(月) 16:55:28 ID:WgJ57/BK
cakeインストールしたところです
Cake is NOT able to connect to the database.
と言われましたが、当面はDBを使いません。
このメッセージが出ないようにするにはどうすればいいのでしょうか?
206nobodyさん:2010/04/19(月) 19:56:16 ID:???
207nobodyさん:2010/04/19(月) 22:23:19 ID:faTvhF7k
以下の処理を実現させたいのですが、CakePHPを初めて2週間の初心者ですので、どのようにすべきか分かりません。ご教授頂きたい。

1.あるテーブルの内容を一覧で表示。(各行にはチェックボックスがある)
2.一覧のチェックボックスにチェックが付いているものを、submitした時、別画面の一覧に表示させたい。

2番の処理をどのようにしたら良いでしょうか?
208151:2010/04/19(月) 22:37:03 ID:???
チェックされたIDをfindでひっぱってきて表示すればいいんでないの?
209nobodyさん:2010/04/19(月) 23:48:06 ID:faTvhF7k
>>208
返信ありがとうございます。

具体的なコードを書いてくれるとありがたいです。
質問内容が抽象的で申し訳ないのですが…
初心者ということで勘弁してください。
210nobodyさん:2010/04/20(火) 01:53:35 ID:???
ざけんなボケ
211nobodyさん:2010/04/20(火) 03:02:03 ID:???
cake以前じゃね?
212nobodyさん:2010/04/20(火) 11:21:01 ID:???
春ですね
213nobodyさん:2010/04/20(火) 23:34:34 ID:???
初心者を免罪符にするとフルボッコになる
これテストにデルから覚えておくように
214nobodyさん:2010/04/21(水) 01:33:25 ID:???
>>207
優しい俺が優しく解説致します。
2番の処理を、CakePHPとは関係なくあなたのお使いの言語環境(おそらくPHP)を使って
どのように実現するのか、考えてみれば自ずと分かります。
Cakeで楽になる部分はあっても、素のPHPで(自分のスキル的に)いかんともしがたい部分を
Cakeが良きに計らってくれるというわけでは、必ずしもありません。
季節の変わり目、まだまだ寒い日もあるかと思いますので、ご自愛下さい。
215nobodyさん:2010/04/21(水) 14:44:22 ID:???
自分で初心者と言うような人でさえさわるようになったってことはcakeもずいぶんメジャーになったんだな
216nobodyさん:2010/04/21(水) 14:49:53 ID:???
初心者なら素直にステップ1から順に踏んで行くほうがいいよね
いきなりcakeから入るより結果的にはそのほうがはやく覚えられると思うし
っていうかPHPなんかちゃんと勉強すれば2日か3日ぐらいでだいたい把握
できるんだからそれを省略すんなよと…
217nobodyさん:2010/04/21(水) 21:06:23 ID:???
PHPが原付免許で、cakeはオートマみたいなもんだなレベル的に
PHP学習しても理解できないとか知的障害レベル
218nobodyさん:2010/04/21(水) 21:14:37 ID:???
PC触って3日目の子が頑張れば構築できるのがcakeなのに
知的障害とかアホか
219nobodyさん:2010/04/21(水) 21:34:45 ID:???
誰か218を日本語に翻訳してくだしあ
220nobodyさん:2010/04/21(水) 21:42:26 ID:???
英語が出来ないと辛いぞ
221nobodyさん:2010/04/22(木) 12:04:30 ID:???
知的障害は言い過ぎ。
222nobodyさん:2010/04/22(木) 18:04:46 ID:???
>>207
もう見てないだろうけど
DBから一覧を取得したと時に各ユーザー(例えばね)のIDも取得してると思うけど
多分、find('all')で取得でforeachだよね?
<? e($form->checkbox('Model.name.id'))?>
submitで来たあとは1が入ってる人を一覧費だけじゃないかな

223nobodyさん:2010/04/23(金) 04:16:55 ID:???
人それぞれ成長の度合いって物がある。
自己満足のためだけに発言する自分の卑しさを省みてみなよ。

ひとまずPHPの基本的な本を読んだほうがいい感じだけどね。
他の言語も含めて経験が無ければいきなりフレームワークはやめたほうがいい。
224nobodyさん:2010/04/23(金) 14:42:23 ID:???
225nobodyさん:2010/04/23(金) 15:32:11 ID:IhQ26v2D
動的にモデルの構造やビューのフォームが切り替わるようなアプリを製作予定なんですが、
こういったアプリにはCakePHPは向かないですか?

簡単に言うと、CMSのカスタムフィールドを拡張したようなイメージで、
データの入力タイプ(フォームの種類、バリデーションのルール)を用意しておいて、
ユーザーの入力に応じて、動的に表示するフォーム・バリデーションやアプリの挙動を切り変えます。

素で作るとすると、データ用の基底クラスを作って、入力タイプごとに派生クラスを作っていく感じになると思います。

こういった独自のクラスをCakePHPのMVCに組み込むのが難しそうな感じがしているのですが、
CakePHPの場合、どうやるのがいいんでしょう?

それとも他のフレームワークを使ったほうがいいですかね?
226nobodyさん:2010/04/23(金) 15:58:17 ID:???
>>225
モデルの構造が変わるっていうのはテーブルを作の?
227nobodyさん:2010/04/23(金) 16:18:29 ID:???
>.226

モデルのバリデーション機能を利用しようと思っていますが、使い切りのジェネレーターのようなものなので、
今の所、フォームから入力されたデータはセッションに保存する予定です。
ですので、テーブルも作りません。

ただ、後々ユーザーの設定(フォームの組み合わせ)をDBに保存する予定があります。
が、これは動的なフォームを生成・切り替えさえできれば、設定だけ保存しておけば済むのであまり問題ないかと思ってます。

問題はデータ構造の切り替えをどうするか、です…。
例をあげると、

1) ユーザーがドロップダウンリストから「データパターン1」「データパターン2」などを1つ選んでサブミット
2) 画面遷移後、選択したタイプによって、フォームを表示。ユーザーが入力してサブミット。
 「データパターン1」の場合は「ドロップダウンリスト」を表示
 「データパターン2」の場合は「テキストフィールド」を表示
 など
3) データパターンの種類に応じたバリデーションを行う。

バリデショーンは動的に切り替えられそうなので問題ないのですが、
データ構造をもたせたクラスをどう組み込むかで、CakePHPでどうやるのがよいのか悩んでます…。
228nobodyさん:2010/04/23(金) 16:25:09 ID:???
>>227の例では項目が1つですが、実際には複数の入力タイプの組み合わせになり、
各項目を操作していく感じになります。

パターン1 = テキスト + ドロップダウンリスト
パターン2 = テキスト + ラジオボタン
など

DataModel(extends AppModel)などを作り、TextDataModel(extends DataModel)などを作ればよいのかな、
(その他、DataModelの組み合わせを扱うモデルクラスなど)
と思いつつ、CakePHPではかえって複雑になってしまう気がして悩んでます。
229nobodyさん:2010/04/23(金) 16:28:36 ID:???
>>228
うーん。イメージがいまいち掴めない
最終的に保存する例を教えてくれ
あと、セッションに保存したデータはどうするの?そのあと
230nobodyさん:2010/04/23(金) 16:29:11 ID:???
保存されるデータの例 だった
231nobodyさん:2010/04/23(金) 16:41:57 ID:???
>>229

フォームに入力したデータそのものは保存しないです。
入力されたデータを計算し、最終的に結果を画面に表示(またファイルにしてダウンロードしてもらう)だけですので。
後々データを保存する場合も、セッションをハッシュ化してそのまま保存しようと考えてます。

計算を行う際(と後々データからフォームを復元する際)に、フォームの種類を「走査」する部分をどうするか、が悩んでいる部分です。

極端な話、モデルを一つだけ作って、その中で

switch($form_type) {
case 'text':
...
case 'checkbox':
...
}

などとし、バリデーションなどだけ動的に切り替えてもいいのですが、
やはり、柔軟性を高めるためにもデータの種類ごとにクラス化したいと思ってます。

似たようなアプリがあれば説明しやすいのですが、なかなか見つからないもので、、、すみません・・・
232nobodyさん:2010/04/23(金) 16:46:50 ID:???
イメージとしては、メールフォームの作成アプリが近いかもしれません。

ttp://onlineform.jp/gen/form?template=inquiry&type=1&color=black
233nobodyさん:2010/04/23(金) 16:51:23 ID:???
>>231
外してるかもしれんが自分なら

モデルはひとつ
データに応じてバリデーションを切り替える
種類の識別は、種類を格納したデータを持っておいても良いし、フィールド名(擬似的なフィールド名)で識別しても良い

って感じ。
柔軟性を高めるというのが何を意味しているのかはちょっと分かんなかった
234nobodyさん:2010/04/23(金) 17:01:52 ID:???
>>233

なるほど。
データの種類ごとにクラス化すれば、処理を委譲できるのでそちらのほうが楽かな、と思ったのですが、
やはり、CakePHPを使う場合はベタな書き方のほうがいいのかな。

もうちょっと色々調べてみます m__m
235nobodyさん:2010/04/23(金) 17:19:44 ID:???
>>234
クラスにしてもモデルにしてもいいんだけど、
結局データの種類に応じて読み込むんだろうから、一緒かと
あと、バリデーションだけなら、外出しするほどではないんじゃないかと想像
236nobodyさん:2010/04/23(金) 17:22:17 ID:???
Single Table Inheritanceというのが近そうだということがわかりました

ttp://bakery.cakephp.org/articles/view/inheritable-behavior-missing-link-of-cake-model

ただ、やはりCakePHPで想定されている使い方ではないようですね…

モデル自体を自力で実装という手もありますが、少し凝ったことをしようとすると難易度が極端にあがる、
ということだけはわかりました…。
237nobodyさん:2010/04/23(金) 17:42:54 ID:???
パターンとバリデーションをセットにして記録したモデルを作っておけばいいだけじゃないすかね。
238nobodyさん:2010/04/23(金) 18:27:26 ID:aAazCR87
version 1.2.3でキャッシュを使っているんですが、下のような書き方でキャッシュされません。
どこが間違っているのでしょうか?

if( !$list = Cache::read('user_list') ) {
$list = $this->Index->getUserList();
Cache::set(array('duration'=> '+5 minutes'));
Cache::write('user_list',$list);
}
キャッシュ時間は
Cache::setで設定しろといろいろなサイトには書いてあるのですが、ここを記載しているとまったくキャッシュされていません。(正確にはキャッシュはされているが、Cache::readがfalseを返す)
ここをコメントアウトするとキャッシュされています。
ご教示お願いいたします。
239nobodyさん:2010/04/24(土) 10:57:06 ID:???
>>238
sageてね

Cache::readの前にもCache::setが必要だと思う
が、解決するかは分からない
240nobodyさん:2010/04/24(土) 11:13:01 ID:???
CakePHP製のソースを色々見てまわってるんだけど、
OOPを活かした書き方をしているものは皆無ですね

Javaちっくな書き方をするには、
やはり、フレームワークの縛りが強すぎるのだろうか

もし、なにかよいサンプルがあれば教えてください
241nobodyさん:2010/04/24(土) 12:04:17 ID:???
Javaちっくな書き方したいならsymfonyとかの方が向いてるんじゃない?
CakePHPはphp4対応だから無理がある
242nobodyさん:2010/04/24(土) 12:43:41 ID:???
てか、なんでもかんでもオブジェクト指向にしなくていいじゃん。
継承しすぎて無意味に複雑になってしまうこともあるし。
自分1人でやってるならいいんだけど、多人数でやるなら分かりやすさを優先すべし。
243nobodyさん:2010/04/24(土) 13:31:06 ID:???
しょうがないのかな
まぁもうしばらく使ってみます

それとは別に、
へぇ、これもCakePHP製なの?というものがあったら紹介してもらえるとうれしいかも

製作例はいろいろ探してみたけど、全て同じようなものばかりですね…
244nobodyさん:2010/04/24(土) 15:22:02 ID:???
Numberのサイトとかかな?
でも>>243くんが何を持ってCakePHPっぽいと思っているか知らんから何とも言えないけど
245nobodyさん:2010/04/24(土) 15:54:11 ID:???
>>244

それはどこでしょう?

色々参考になるかと思ってソース見てるんだけど、どれも似たような感じなので…
フレームワークなんで、当然といえば当然かもしれないけど、ちょっとおもしろみがないなと
246nobodyさん:2010/04/24(土) 17:20:13 ID:???
オブジェクト指向的な記述にこだわる理由をしりたい
俺ならそういうときはJAVAかrubyでやる
PHPのOOPはいろいろアレすぎて面倒
247nobodyさん:2010/04/24(土) 18:08:57 ID:???
サーバーの負荷を考えると cache 使った方がいいんだろうけど、
みんな最初っから cache 使ってプログラム組んでる?

サーバーに負荷がかかりまくってやべーなと思ったら cache を使うって方が効率がいいと思うけど。
248nobodyさん:2010/04/24(土) 19:52:17 ID:???
つーかOOPを活かした書き方ってなんだ?
249nobodyさん:2010/04/25(日) 05:28:46 ID:???
>>246

ユーザー入力に応じて柔軟に機能を切り替えたいから。拡張も楽だし。
LimuSurveyというのがCakePHPが使われてるらしいと思って見たけど、
中身はCakePHPではなかった。

ttp://www.limesurvey.org/en/demo

デモを見たら、これがCakePHPならすげえや、と思ったけど、
やはりこういうのは難しいんだろうね。というか、ソースがごちゃごちゃになりそう。
250nobodyさん:2010/04/25(日) 09:49:57 ID:???
>>249
難しいこともないしソースがごちゃごちゃになることもないが、きみがCakePHPをdisってるつもりがないなら、比較スレにいった方が良い
symfonyやRuby on Rails やDjangoなど、他にも優秀なFWはいっぱいあるから
あったものを選べば良いんじゃないかな
251nobodyさん:2010/04/25(日) 15:27:11 ID:???
DBを設計するとき、SQLで外部キーを設定しないでもhasOneとかで設定すれば良いのですか?
ガイドブック(1.1)にはMyISAMで作られてたし、SQL文見ても外部キーのことは書いてなかったし・・・

激しく即出な気が・・・
252nobodyさん:2010/04/25(日) 15:35:18 ID:???
Announcing CakePHP 1.3.0 Stable
http://bakery.cakephp.org/articles/view/announcing-cakephp-1-3-0-stable

すたぶるキタ━━━━━━(゚∀゚)━━━━━━ !!
253nobodyさん:2010/04/25(日) 15:38:43 ID:???
各バージョンの機能比較してるサイトってどこかにないですか?
わかりやすく表形式とかで。
254nobodyさん:2010/04/25(日) 16:22:54 ID:???
1.3.0使ってみるかな
255nobodyさん:2010/04/25(日) 16:34:18 ID:???
>>254
みるかなじゃねーよw
使ってみて感想なり批評なりしろよ。
256nobodyさん:2010/04/25(日) 18:26:09 ID:???
とうとう1.3.0きたか
257nobodyさん:2010/04/25(日) 19:22:32 ID:???
>>255
使ってみた
気持ちよかった
258nobodyさん:2010/04/26(月) 03:52:40 ID:???
sql_dumpはエレメンツになってるんかな
259nobodyさん:2010/04/26(月) 04:34:23 ID:???
インターフェースや継承を駆使したガチガチな感じなんだろうけど
AOP的なのの使い所や命名なんかにルールを持たせとけば
ゆるくても品質はそんな下がったりせんけどな。
むしろPHPは言語サポートが少なすぎて厳密にやろうとすると疲れる。
260nobodyさん:2010/04/26(月) 04:42:12 ID:???
言語サポートってmb系のこと?
261nobodyさん:2010/04/26(月) 10:33:00 ID:???
>>238
キーにアンダースコアを入れるとうまくいかなかった記憶が。。。
262nobodyさん:2010/04/26(月) 12:20:51 ID:???
cakephpのコーディング規約について質問です

1 $writedata
2 $write_data
3 $WriteData
4 $writeData

どれがcakephp流の規約でしょうか。
263nobodyさん:2010/04/26(月) 12:27:17 ID:???
>>262
変数名が使われるケースはFormHelper::input()くらいかもだけど
$write_data
だね

もっと一般的な例で言うと
$admin_users
264nobodyさん:2010/04/26(月) 16:04:48 ID:???
>>263
先生、ありがとうございました!
265nobodyさん:2010/04/27(火) 09:35:18 ID:???
超亀だけど、前スレの質問
--
993 nobodyさん sage 2010/03/18(木) 08:05:51
1.3になってlibsってフォルダが増えたけど、
ここには何をいれるの?
vendorsとの違いは何??
--
ttp://mark-story.com/posts/view/using-custom-route-classes-in-cakephp
で、CakeRoute クラスを上書きする記事が出てるけど、そのなかに
App::import('Lib', 'routes/SlugRoute');
ってあったから、こんな感じの使い方じゃないかな?
(vendorsはCakePHP関係ないファイルを入れるところ)
266Beginner:2010/04/27(火) 23:53:24 ID:M6fZ8Sga
Routesを使用して開発をしていますが、
以下の場合、逆ルーティングが出来ません。

処理の流れとしては、一覧画面→編集画面→確認画面→(登録完了)→一覧画面
という画面遷移になります。


routes.php
Router::connect(
 '/systemFaqCategories/:faq_category_id/edit/*',
  array(
  'controller' => 'faq_categories',
  'action' => 'systemFaqCategoryEdit'
  ),
 array(
   'faq_category_id' => '[0-9]+'
  )
);
267Beginner:2010/04/27(火) 23:54:09 ID:M6fZ8Sga
xxx_controller.php
//編集画面
function systemFaqCategoryEdit(){
debug('Called systemFaqCategoryEdit');

pr($this->params);

$this->editFaqCategory('systemFaqCategoryEdit',
array(
'class_information_id' => FAQ_CATEGORY_TYPE_SYSTEM,
'faq_category_id' => $this->params['faq_category_id']
)
);

}
268Beginner:2010/04/27(火) 23:55:19 ID:M6fZ8Sga
//編集画面or確認画面or登録 を分岐
private function editFaqCategory($actionName, $condition) {

if ($condition['class_information_id'] == FAQ_CATEGORY_TYPE_SYSTEM) {
// 編集画面 確認ボタン
if (!empty($_POST['confirmation']) && $_POST['confirmation']) {
$this->editConfirmation();
return;
}

// 確認画面 戻るボタン
if (!empty($_POST['return']) && $_POST['return']) {
$this->editReturn();
return;
}

// 確認画面 登録ボタン
if (!empty($_POST['save']) && $_POST['save']) {
$this->editSave();
return;
}

if($sId <> '') {
$getFields = array('id', 'class_information_id', 'category_title', 'regist_id', 'update_id', 'created' ,'modified');
$this->data = $this->FaqCategory->read($getFields, $sId);
$this->render('edit');

}
}
}
269Beginner:2010/04/27(火) 23:57:37 ID:M6fZ8Sga
edit.ctp
<?php
$confirmButton = array(
'controller' => 'faq_categories',
'action' => 'systemFaqCategoryEdit',
'faq_category_id' => $this->params['faq_category_id']
);



e($form->create('FaqCategory',
array('url'=>$confirmButton)));

e($form->submit('確認', array('name' => 'confirmation', 'div' => false, 'tabindex'=>1)));

?>

以下
入力inputのHTML

確認画面へ遷移した時に、ルーティングがきいていない。
URLがコントローラ名+アクション名になってしまう。

解決策をお持ちの方は教えてください。

長い文章になってしまったのはご了承ください。
270nobodyさん:2010/04/28(水) 06:20:11 ID:???
sageてね
あとバージョンを書いて

んでRouter::URL()でリバースルーティングできるかを教えて
271nobodyさん:2010/04/28(水) 16:53:38 ID:???
CakePHP1.2.6使用です。

モデルのsaveでNULLを入れたいときはどうしたらよいでしょうか?
OrderというモデルのpriceをNULLにしたかったので

$this->data['Order']['price'] = null;
とか
$this->data['Order']['price'] = '';
してから

$this->Order->save($this->data);
したのですが、DBには0という値が入ってしまいます。

もちろん、DB側ではNULL化というテーブル定義にしています。
272nobodyさん:2010/04/28(水) 17:02:58 ID:???
最近さわりはじめてちょっと疑問に思ったことがあるので質問です。
今、適当な練習用サンプルを作っています。

利用するデータの編集をscaffoldを利用して作成しました。(Viewのみ多少修正)

しかし、削除のパスもリンクで表現されているので、(/hoge/delete/1 のように)
クローラーが巡回してきたらすべてのデータが消える気がします。

このデータは特に秘密にしたいようなものではなく、むしろ利用者で好き勝手に編集して問題がないので、セッション管理は行っていません。
セッション管理などしてない場所でscaffoldを利用するというのは想定外なのでしょうか。


現在はセッションを利用して対策する方向で修正していこうと考えていますが、
「何らかの対応方法がcakephpに用意されている」もしくは「もっと単純な対応策がある」
といった情報がありましたらぜひ教えてください。
273272:2010/04/28(水) 17:04:13 ID:???
Cakeのバージョンを書き忘れました。
1.3を利用していますが、他のバージョンに変更も可能です。
274nobodyさん:2010/04/28(水) 17:57:45 ID:???
>>271

普通に保存できると思う。少なくとも自分はできてる。
DB側のデフォルト値をNULLにしとけば間違いないはず。

CakePHPはNULL使わないほうがよいみたい。
バリデーションもnullの扱いがおかしすぎる。
275nobodyさん:2010/04/28(水) 18:00:09 ID:???
バリデーションでnullって何か不具合あったっけ?
276nobodyさん:2010/04/28(水) 18:19:37 ID:???
>>274さん

返答ありがとうございます。
既存のレコードに大して実行すると、
ななんと「0000-00-00 00:00:00」という値が入ってしまいます。
これってバグ?なんですかねー。
明示的にNULLにUPDATEするためにはSQL書かないとだめなのかなぁ。
277Beginner:2010/04/28(水) 21:54:40 ID:???
>>270
返事遅くなりまして申し訳ないです。

バージョンは、1.2.6です。
Router::URL()で逆ルーティングできました。

$url = Router::url(array(
'controller' => 'faq_categories',
'action' => 'systemFaqCategoryEdit',
'faq_category_id' => $this->params['faq_category_id']
)
)

e($form->create('FaqCategory',
array('url'=>$url)));

にすると、

<form id="FaqCategoryEditForm" method="post" action="/xxxx/xxxx/xxxx/xxxxx/systemFaqCategories/1/edit/">

変なURLが生成(先頭の/xxxx/xxxx/が余計)されてしまう。
278nobodyさん:2010/04/29(木) 03:12:33 ID:???
>>275

nullはバリデーションのrequiredではじかれるが、allowEmptyではすり抜ける。


>>276

一部だけ更新したい場合は、事前に関係ないフィールドをunsetなどしておいたほうが安心。
特にループ中で保存する場合は思わぬデータが更新される場合がある。

コントローラーからなら、$dataに更新データが入っているとしたら、

$this->Model->create(null);
$this->Model->set($data);

if ($this->validate()) {
}
279nobodyさん:2010/04/29(木) 03:17:58 ID:???
間違えて送信してしまった。
$dataに更新用のデータが入っているとしたら、下のようにするくせをつけておいたほうが安心。

// 更新する場合はキーを指定
// $data[$this->Model->alias][$this->Model->primaryKey] = 更新するレコードのID;
// $dataにフォームから受け取ったデータなどを設定。

$this->Model->create(null); // モデルのデータを初期化。 nullにしないとDBのデフォルト値が入る。
$this->Model->set($data); // モデルにデータをセット。create()しておかないと、前回のデータとマージされる。

if ($this->validate()) {
$this->Model->save($this->data, false);
}
280nobodyさん:2010/04/29(木) 03:24:05 ID:???
>>if ($this->validate()) {

f ($this->Model->validate()) {

だった。上記のようにしたらnullもいけないかな?

だめならDB側のデフォルト値をnullにしておいて、

unset($data[$this->Model->alias]['created']);

$this->create($data); // データがないフィールドはデフォルト値を使うようにする。
$this->set($data);
...以下同じ...

とかしてみたらどうだろう?
281nobodyさん:2010/04/29(木) 03:27:26 ID:???
何度もすまん。

$this->Model->create($data); // データがないフィールドはデフォルト値を使うようにする。
$this->Model->set($data);

だ。
create()の中でset()と同じことされるからset()はいらないかもしれない。
282nobodyさん:2010/04/29(木) 04:17:14 ID:???
>>281

create()は主キーもリセットされてしまいます
ですから、この場合のset()は必須です

NULLを使わない設計ができるのであれば、それに越したことはないです
283nobodyさん:2010/04/29(木) 09:41:42 ID:???
>>277
解決方法は↓いずれか

1. Router::url($url ,true) をformのurlに指定する(第2引数でフルURL)
2. (アクセスしたURLと同じ場合)$this->here
3. $form->createに渡すURL配列に 'id' => "" を含める

3.は前スレだかに書いてあったやつだが試してない。ぜひ試してもらって結果教えて欲しい
284nobodyさん:2010/04/29(木) 09:45:53 ID:???
>>276
NULLはbeforeSaveでセットする
↓を参考に工夫すると良い
http://bakery.cakephp.org/articles/view/null-behavior
ttp://d.hatena.ne.jp/kusakari/20070730/1185765186
285nobodyさん:2010/04/29(木) 10:55:21 ID:???
CakePHPではNULLを使わないのが正解
どうしてもNULLを使いたいなら、ここまでに出た方法のどれかで凌ぐしかない
286nobodyさん:2010/04/29(木) 11:12:30 ID:???
ま、そういう造りだよね。はじめは気持ち悪かったけど慣れれば無問題
287nobodyさん:2010/04/29(木) 18:11:37 ID:???
cake 1.3 DBはmysqlの5.1.41 です。(xampp最新版を利用)

ランダムに1件レコードを取り出そうとして
$this->hoge->find('first', array(order'=> 'rand()')); はうまくいったのですが、

$this->hoge->find('first', array(order'=> 'rand(100)')); のようなシードを指定しての取り出しができません。

発行されているクエリは
SELECT …… ORDER BY rand(`100`) ASC LIMIT 1
のようになっており、エスケープされてしまっているようです。
エスケープさせない方法、または、シードを固定してのランダム取り出しの方法はないでしょうか?
288287:2010/04/29(木) 22:54:24 ID:???
とりあえずの応急処置(バッドノウハウ的な)

$this->hoge->find('first', array(order'=> 'rand((100))'));

としてrandにカッコを二つ続けて入れることで、置換対象から外しました。
queryのプレースホルダ的な感じでやりたいので、正当なやり方があったらぜひお教え願います。
289nobodyさん:2010/04/30(金) 06:43:52 ID:???
>>288

$this->hoge->fing('first', array(
'order by rand(?)' => 100
));

でできない?
conditionsではプレースホルダ使えるけど、orderはできないかな?
試してないのでわからんが
290nobodyさん:2010/04/30(金) 09:04:17 ID:???
>>272-273
以前議論あったがscaffoldはそういうものっていう結論に落ち着いてた
bakeして、それを書き換えてあげるしかない
291nobodyさん:2010/04/30(金) 12:13:53 ID:???
>>290
ありがとうございます。 
scaffoldはそういうものということで納得します。

bakeして書き換えも試してみようと思います。
292nobodyさん:2010/04/30(金) 15:27:09 ID:???
scaffold使うより自分で書いたほうが早くないか?
293nobodyさん:2010/04/30(金) 15:39:48 ID:???
やばい、わかり始めるとホントに楽しい。
294nobodyさん:2010/04/30(金) 16:13:16 ID:???
でもそのうち単調な処理を書くのが嫌になってくる
295nobodyさん:2010/04/30(金) 16:19:20 ID:???
分かり始めたと思ったらHABTMでわからなくなった。
cakebookのHABTMを保存の項がリンクおかしくなってるし。
296nobodyさん:2010/04/30(金) 16:46:22 ID:???
>>295
タグ機能の実装解説してるブログなどを参考にするとわかりやすい
297nobodyさん:2010/04/30(金) 17:47:47 ID:???
フォームにテキスト入力した時、半角英数入力に自動的になるような
viewの書き方はあるでしょうか?

validateでalphanumericをすると、事後的にチェックはできるのですが、
そもそも入力した時点で半角しか入力できないようにしたいのです。

formのtypeをpasswordにしたらそのような設定になるようですが、
textで見えている状態で強制的に半角入力にする方法を探しています。
298nobodyさん:2010/04/30(金) 18:22:22 ID:???
>textで見えている状態で強制的に半角入力にする方法
ってことはアプリ側のロジックでなくて、ブラウザ側の話になるんでは?
スレ違いだけど、CSSのime-modeとかある、
299nobodyさん:2010/04/30(金) 18:33:13 ID:???
>>294

なんとなくわかるわw

それに同じようなコードを書くことになるんだよな・・・
300nobodyさん:2010/04/30(金) 19:23:09 ID:???
>>298

ありがとうございます!
ブラウザ側から処理するcakeの機能がないかなと調べていました。

ぐぐって調べてみます!
301nobodyさん:2010/05/01(土) 00:30:06 ID:???
これだけ機能があるのにアップロードの機能は乏しいんだな・・・。
Media プラグインはなんか扱いにくそうだし。

画像のURLとアクション呼び出すURLの仕組みの違いもわからんし…
302nobodyさん:2010/05/01(土) 03:01:43 ID:???
>>299
横レスだが、俺は今更ながら本家RoRに浮気してみてるところ。
Cakeに対して理解をもってから望んだら、おもしろいくらいRoRがさっくり理解出来そうだったので。

で、CakeにあったDRYじゃない感やなんかがRoR(というかRuby)で解消されるならあっちに旅立つ予定。
やっぱCakeがいいやってなったらしれっと戻って来るw
303nobodyさん:2010/05/01(土) 10:00:05 ID:???
>>302
興味深いからその後どうなったか教えてほしい
俺はRoRを使えるような場に恵まれないため今のとこ利用しないが。
304nobodyさん:2010/05/01(土) 12:19:40 ID:???
1.2から1.3の移行が結構大変・・・
305nobodyさん:2010/05/01(土) 12:23:27 ID:???
1.2から1.3で変わったことまとめとか探し中
306nobodyさん:2010/05/01(土) 12:32:45 ID:???
そんなに困るほどはかわってないきが
307nobodyさん:2010/05/01(土) 12:33:01 ID:???
$sessionが使えなくて迷った
308nobodyさん:2010/05/01(土) 17:27:41 ID:???
307の補足ね。

layoutのdefault.ctpとか、1.2だと
$session->flash
になってるんだけど、1.3だと
$this->Session->flash
になってる。レイアウトを移行する時は要注意。
309nobodyさん:2010/05/01(土) 17:43:56 ID:???
公式にあるまとめでいいじゃん
310nobodyさん:2010/05/01(土) 18:05:55 ID:???
>>308
違う、$this-> は推奨だけど無しでも動く
echoが必要になった

echo $this->Session->flush();
311nobodyさん:2010/05/01(土) 18:06:28 ID:???
あと移行ガイドのリンクがテンプレ>>1-5にあるからね
312nobodyさん:2010/05/01(土) 18:13:00 ID:???
>>310
本当だ。移行ガイドにも書いてあった。ありがとう。
移行ガイド、斜め読み程度で良いと思ってたけど、しっかり読もう。。。
313nobodyさん:2010/05/02(日) 20:40:40 ID:???
漢もすなるフレームワークといふものをしてみむと思ってるんですけど、
CakePHPっていうのが人気なんでしょうか。
NetBeansのプラグインにSymphonyっていうのとZendっていうのしかないんですけど
それでもCakePHPがいいですかねぇ?
314nobodyさん:2010/05/02(日) 20:45:19 ID:???
しらん
315nobodyさん:2010/05/03(月) 01:09:54 ID:???
>>313
プラグイン?なんだそれ、喰えるのか?
俺はPHPエディタの延長のつもりでNetBeansでCake焼いてるよ。
316nobodyさん:2010/05/03(月) 01:28:15 ID:???
動的言語にIDEなど不要
317nobodyさん:2010/05/03(月) 12:10:40 ID:???
>>315
プラグインのことは気にせずやってみます。

>>316
IDEは便利ですよ。
使わないのは損です。
318nobodyさん:2010/05/03(月) 13:05:07 ID:???
動的言語にも使えるIDEの機能は大抵テキストエディタでも実現できる
319nobodyさん:2010/05/03(月) 13:17:52 ID:???
NetBeansと同等のことができるテキストエディタ教えてちょ♥
320nobodyさん:2010/05/03(月) 13:43:59 ID:???
vimもIDEになりますか><
CakeOnVimを使ってるけれど、そこまで重要なファクターではないなあ
321nobodyさん:2010/05/03(月) 13:53:06 ID:???
vimって使ったことないけど
自動補完とか文法チェックもできるんだね

でも見た目がアレだから、慣れないとストレスたまりそう…
322nobodyさん:2010/05/03(月) 14:15:21 ID:???
MacのTextMateでCakePHPのBundleを入れてる。
Railsのスクリーンキャストでよく見かけるTextMate的な補完や操作が出来る。
昔はEclipseとかZDEとか使ってたけど、PHPに限って言えばIDE不要。
手になじむエディタ(それが人によってemacsかvimか秀丸かEmEditorかTextMateかBBEditか変わるが)
があればむしろ小回りが効いて良い。動的言語で手練れになるなら絶対コッチ。
323nobodyさん:2010/05/03(月) 22:42:04 ID:???
補完だけならね

FTPやらバージョン管理やらしようと思えばIDEのほうが断然便利だな
関数の定義元も一瞬で表示されるし
324nobodyさん:2010/05/03(月) 22:58:23 ID:???
ここはrsyncコマンドやscpコマンドやsvnコマンドやgitコマンドが使えないインターネッツですね
325nobodyさん:2010/05/03(月) 23:16:54 ID:???
IDEのほうが断然便利だな
326nobodyさん:2010/05/04(火) 01:18:42 ID:???
じゃぁちょっと使って見るかな
327nobodyさん:2010/05/04(火) 01:30:32 ID:???
IDEは便利。
一発で整形が出来るのが便利。
エディタでも出来るかもしれんがw

Xdebugとか要求してきてメンドイが
328nobodyさん:2010/05/04(火) 18:50:23 ID:???

1.3使っているのですが、
Shellから
静的HTML吐きだしたいのです。
ctpとViewのrender使ってレンダリング結果を保存しようとしたのですが、
ViewTaskも使えず、
Controllerをnewしてrenderしてもエラーがでてしまいます。

どなたか対処法ご存じないでしょうか?
上記方法はぐぐってでてきたので試したのですがダメでした……。
329nobodyさん:2010/05/04(火) 19:31:04 ID:???
>>328
html_cacheというafterRenderでhtmlファイルを生成するplugin を使ったほうが早いかも
shellじゃないとだめなの?その場合は必要なファイルをimportしてnewしてって面倒くさいと思うが、今どう書いているのか教えれ
330nobodyさん:2010/05/04(火) 19:46:53 ID:???
>>329
おお、そんなプラグインが……。
調べてみます。ありがとうございます。
shellでやりたいのは定期実行で、
古い記事を静的ファイルに落とす処理なのです。
URL叩くのでも良いのですが、その他の処理はTaskになっているので出来れば一度にやりたいと……。
以下、全てShell内部でやってます。

1. 既存コントローラ new
// DebugKit がどうとかでてエラー
App::import('Controller', array('Posts'));
...
$controller = new PostsController();
$controller->components = array('Auth');
$controller->constructClasses();
$posts = $controller->__createStaticHtml();

2. 只のコントローラ new
// エラー
App::import('Core', 'Controller');
...
$this->controller = new Controller();
$content = $this->controller->render('archive' , '' , $filepath );

3. ViewTask
// エラーorz...
var $tasks = array('View');
...
$this->View->getContent('archive', $params);
331nobodyさん:2010/05/05(水) 22:23:38 ID:???
Paginatorを使ってみたんだがURLが汚すぎて使い物にならないな…
せめてGET方式に簡単に切り替えられないもんかね?

paginatorヘルパーのオプションでクエリを指定すればそれっぽくはなるんだが、
ソート(order)指定していると、ページリンクでコロン付きのリンクが生成さえれてしまう…
332nobodyさん:2010/05/05(水) 22:49:52 ID:???
pagitorのオプションで 'url' => array('order' => null) でいけたわ
ほんと、モデル名がURLに出る仕様はどうかと思うわ

自前でクエリのパラメータ名とModel::paginate()のオプションを相互変換する処理書いたが、
もうちょいうまいやり方はないものなのかねえ
333nobodyさん:2010/05/06(木) 12:38:02 ID:???
ルータ使うのは?
334nobodyさん:2010/05/06(木) 21:56:38 ID:???
>>333

ルータ使っても名前付きのパラメータついちゃうねえ
page:2 とか

ルータで細かく指定すれば逆ルーティングしてくれるの?
335nobodyさん:2010/05/06(木) 22:07:24 ID:???
ちなみに、ルーティングしてない状態だと

/sort:Table.created/direction:desc

とかなってる。
ルーティングだけで

/date/desc

みたいにできるもんなの?
できなくて自前で書いちゃったんだけど、細かく指定してできるんならそっち使うわ
336nobodyさん:2010/05/06(木) 22:37:56 ID:???
ちょい試したら

Router::connect('/search/:page',
array('controller' => 'Product', 'action' => 'search')
);

とか書いたらいけたわ…
ソートのほうは、表示名変えるには一個づつ全部かかないと駄目そうだけど

(逆)ルーティングもだいぶ賢くなったんだなあ
337nobodyさん:2010/05/06(木) 22:51:27 ID:???
ソートもこれでいけた

Router::connect('/product/search/date/:direction/:page',
array('controller' => 'Product', 'action' => 'search', 'sort' => 'Product.created')
);

ソートキー分だけ全部書かないとだめそうだが、いけた
第3引数で数字のチェックとかすれば、これでいけそう

あなどってたわ・・・w
338nobodyさん:2010/05/06(木) 23:20:16 ID:???
virtualFields使ってる場合に問題があるみたい

Router::connect('/product/search/price/:direction/:page',
array('controller' => 'Products', 'action' => 'search', 'sort' => 'Product.price')
);

こんな感じのルーティングで、Product.price がvirtualFieldsの場合、
ソートの方は $paginator->sort(...) で逆ルーティングしてくれるが、
$paginator->next(...) なんかは逆ルーティングできない

Router::connect('/product/search/price/:direction/:page',
array('controller' => 'Products', 'action' => 'search', 'sort' => 'price')
);

とか書いたら $paginator->next(...) のほうはうまくいったが、今度はソートのほうが逆ルーティングできない

両方書いてみたらぱっと見はうまくいくけど、ソートの昇降が切り替えられなくなった

バグだよね
339nobodyさん:2010/05/06(木) 23:25:18 ID:???
ルーティング関係なかったわ
virtualFieldsのsort()自体にバグがあるみたい
昇降切り替えができない
340Beginner:2010/05/07(金) 00:00:52 ID:???
>>283
レス遅くなりました。

1,2の方法ではうまく行きました。
3の方法ではうまく動かなかったです。

絶対URLになってしまったのですが、問題ないのでしょうか?
<form id="FaqCategoryEditForm" method="post" action="http://xxxxx/systemFaqCategories/1/edit/">

今までは、相対URLでしたけど・・・
341nobodyさん:2010/05/07(金) 02:13:33 ID:???
>>339

virtualFieldsだと、Controller::paginates()で$paging['options']['order']のモデル名が消えてしまう模様
そのせいかわからないがPaginator::sort()が切り替えられない(逆ルーティングはできる)

Paginator::prev()で逆ルーティングできないのもそのせいかもしれない

原因探してもよくわからないから、paginatorヘルパーのオプション['url']['sort']を明示的に指定するようにしたよ…
342nobodyさん:2010/05/08(土) 01:28:35 ID:???
hasManyのモデルのバリデーションってどうすればいいんでしょ?

$this->A->B->create($this->data);
if ($this->A->B->validates()) {....


って感じでバリデーションを調べようとしていて
hasMany関連だから$this->date['B'][0]['field']の形式なんだけど
$this->date['B']{'field']っていうフォーマットってじゃなきゃ、バリデートしてくれないみたい

英語、日本語でググってみたけど、なかなか解決できない…
誰か知ってたら教えてくだせえ
343nobodyさん:2010/05/08(土) 14:35:38 ID:???
model内でSessionコンポーネントを使う方法はあるでしょうか?

下記のように書いてみましたが、Session->writeでエラーが出てしまいました。
コントローラに書いた場合、 authByHashは上手く機能するのですが。。

class User extends AppModel {

public $components = array("Session");

function authByHash($id = null){

$conditions = array("hash" => $id);
$user = $this->find($conditions);
$this->Session->write('Auth',$user);
if(!empty($user) ){
return true;
} else {
return false;
}
}

344nobodyさん:2010/05/08(土) 18:06:51 ID:???
そもそもmodel内でSessionを使わなければいけないという設計が変だと思う
345nobodyさん:2010/05/08(土) 19:58:36 ID:???
>>342
saveAll で、validation => false or only
でいけると思う
346nobodyさん:2010/05/08(土) 19:58:55 ID:???
>>345
first or only だった
347nobodyさん:2010/05/08(土) 20:13:26 ID:???
Virtual fieldsは、1.3以降の機能?
348nobodyさん:2010/05/08(土) 20:42:38 ID:???
>>347
そう
349nobodyさん:2010/05/09(日) 03:09:31 ID:???
Auth ログイン情報をブラウザ閉じても保存したいのですが、
オススメの方法はあるでしょうか?

コンポーネントとか使わずに、クッキー処理が正解なのかな。
350nobodyさん:2010/05/09(日) 11:14:42 ID:???
cookieコンポーネント。
351nobodyさん:2010/05/09(日) 11:16:11 ID:???
thx!
352nobodyさん:2010/05/09(日) 12:38:20 ID:???
ググればたくさん出てくるよ
公式のフォーラムにもあったはず
353nobodyさん:2010/05/09(日) 20:37:17 ID:???
1.2で開発してるんだが、コンソールで管理するためにシェル書いたんだけど、
Class 'Model' not found in /path/to/app_model.php on line 39
ってなって動かないんだけどこれってバグ?しかも、毎回なるってわけでもなく、たまには動くんだよな。謎。
354347:2010/05/10(月) 02:18:33 ID:???
>>348
サンクス。そっかー、1.2じゃ使えないのか。。。
面白そうな機能なので、1.3に上げたら使ってみます。

http://d.hatena.ne.jp/hiromi2424/20100204/1265274976
355nobodyさん:2010/05/10(月) 11:32:48 ID:???
356nobodyさん:2010/05/10(月) 13:03:35 ID:???
cakephp便る杉ワロタ
無知の俺でもデータベース使いまくリングw
357nobodyさん:2010/05/10(月) 17:40:26 ID:???
>>345
いけた!ありがとう!たすかったw



てかsaveメソッドなのにsaveしないならvalidatesに引数渡して判断さしたほうが
わかりやすいような気がするぜこれw
358nobodyさん:2010/05/11(火) 15:29:46 ID:7YcJ1BHK
皆さんに2点質問です。
cakephp1.3使ってます。
sanitizeについてなんですけど、
mysqlにtext,textareaでデータを格納するとき、

■Sanitize::clean($this->data)か
 Sanitize::html($this->data['User']['・・・'];
どっちつかってますか?

■sanitizeしたデータを取り出すとき、(例えばaddしたデータをeditするときなど)
おおおおおお\n&lt;a href=ageorgja&gt;あぞあおb&lt;/a&gt;\n&lt;?pjfeowjfo&gt;fewjfoewjoewjfoewdj&lt;?&gt;\n&lt;?php fjaeof

こんな風になってしまうんですけど、いい回避方法教えて下さい。
359nobodyさん:2010/05/11(火) 22:45:09 ID:???
>>358
>こんな風になってしまうんですけど、いい回避方法教えて下さい。

Sanitizeを使わない
360nobodyさん:2010/05/12(水) 00:13:03 ID:???
CakePHP1.2とmysql5.1を使っています。

みなさんに質問なんですが、編集、削除時の楽観排他はどうやって実現されてますか?

1.データ取得時に、更新日時を持っておく。
2.編集(削除)実行前に、対象データを検索して、更新日時を取得
3. 1と2の更新日時を比較
4. 同じなら編集(削除)実行、違ったら何もしない。

こんな感じでしょうか?

CakePHPでSELECT FOR UPDATEってどうやって実現するのでしょうか?
普通にSQL文を投げる?なんとなくCakeぽっくないですが・・・
361nobodyさん:2010/05/12(水) 09:59:39 ID:???
>>360
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1500&forum=6&post_id=3400
やったことないけど、公式フォーラムにあったよ
見てないけどbehavior作った人もいるみたい
362358:2010/05/12(水) 13:42:37 ID:ISVrEn/n
スレ違いかもですが、サイト運営したことないんですけど、やっぱ
sanitizeしないと危険ですよね?
皆さんどーしてはるんですか?
363nobodyさん:2010/05/12(水) 14:33:07 ID:???
>>362
DBには素のデータを保存し書き出すときにエスケープが基本やで

あとsageてな
364nobodyさん:2010/05/12(水) 14:41:27 ID:???
>>362
サニタイズは必要だよ。
359の方法は試したのか?CakePHPのソースあるんだから、人に頼る前に自分でコード追ったり、
どんなSQL文が発行しているのか、確認した方がいいんじゃないか?


ここ、質問スレ?
365nobodyさん:2010/05/12(水) 14:46:52 ID:???
×SQL文が
○SQL文を
366nobodyさん:2010/05/12(水) 15:42:41 ID:???
勉強会1時間で埋まったね。
367nobodyさん:2010/05/12(水) 15:47:50 ID:???
実質30分足らずだった。いったん埋まった後、重複申込みとか消して、その分が埋まったのがその30分後くらい?
あしたまたあるってのは運営GJだと思う
368sage:2010/05/13(木) 22:02:44 ID:DXEWzNfV
358です。
>>363
ありがとうございます。
2ちゃん素人なもんでsageは初めて知りました。

>>364
ありがとうございます。
あと、最初にスレ違いかもって断ったし、近くに質問する人いないんで、
勘弁してくださいよ。
369nobodyさん:2010/05/13(木) 22:05:53 ID:???
勉強会、今日はペース悪いな
1時間で半分も埋まってない
370nobodyさん:2010/05/13(木) 22:10:10 ID:???
質問する人いないので勘弁しろとは傲慢すぎクソワロタ

http://kmaebashi.com/zakki/zakki0042.html
読んでないけど。

つかここCakeのスレだったね
371nobodyさん:2010/05/14(金) 08:33:55 ID:???
サニタイズはやっちゃだめだよ
372sage:2010/05/14(金) 13:28:20 ID:UVik1blM
>>371
その心は何ですか?
たしかにcleanすると、<記号とか全部変換されちゃってちゃんと
取り出せないから使えないかなとは思ってますが。
373nobodyさん:2010/05/14(金) 13:58:58 ID:???
サニタイズってもSQLインジェクション対策の部分とXSS対策の部分があるから
なんでもかんでもエスケープだのタグを無効化だのしとけばいいってわけじゃない。
データをDBに出し入れする時とビューで表示させる時で分けて考えれば良いよ。
374nobodyさん:2010/05/14(金) 16:21:59 ID:???
>>372
sageはメール欄にな
375nobodyさん:2010/05/14(金) 16:28:01 ID:???
つか1.3はどんな機能が拡張されていくんだろうかな…

出て早々だが、バージョンアップが楽しみだ
376nobodyさん:2010/05/14(金) 18:08:01 ID:???
1.3の中では正直機能追加してほしくない・・・
377nobodyさん:2010/05/15(土) 07:54:07 ID:???
>>375
え?
378nobodyさん:2010/05/16(日) 05:54:58 ID:???
下記サイトの記述に従って、PaginateをModel中で上書きしたところ、Viewで、
”Undefined variable: paginator”と出るようになってしまいました。

どうすれば、View中で$paginatorを取得する事ができるでしょうか。

http://book.cakephp.org/ja/compare/249/Custom-Query-Pagination


model/group.php:
 class Group extends AppModel
 {
    function paginate($conditions=null, $fields=NULL, $order=NULL, $limit=20, $page = 1, $recursive = null, $extra = array()) {
       $conditions = array("Group.id" => "1");
       
       return $this->find('all', compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive'));
    }   

    (以下略)
 }


views/group/index.ctp:
 <?php echo $paginator->prev('< 戻る', array('class'=>'effectived'), null, array('class'=>'disabled')); ?>
 (以下略)


エラーメッセージ: ”Undefined variable: paginator [APP/views/group/index.ctp, line **”
379nobodyさん:2010/05/16(日) 07:57:11 ID:???
コントローラーでPagenatorHelper読み込んでないとかじゃないよな
380nobodyさん:2010/05/16(日) 11:43:49 ID:???
あと paginate メソッドもいろいろと間違っていると思う
が、modelの中で上書きは関係ないから、まずは>>379あたりからひとつひとつチェックしていくべし
381nobodyさん:2010/05/17(月) 23:13:07 ID:???
ひとつのビューに複数ボタンを設置して、押されたボタンによって処理を分けたいのですが、
押されたボタンの名前が入る変数はdataで良いのでしょうか?

<input type="submit" value="登録" name="toroku" />
を押した場合、どの変数にどの様に格納されるのか教えてください。
382nobodyさん:2010/05/18(火) 01:58:05 ID:???
>>381
var_dump()なり、pr()なり、debug()なりする。
そんなもん、いちいち聞くな。

自分で実行したもんは、血となり肉と成る。
383nobodyさん:2010/05/20(木) 12:42:48 ID:???
http://pc11.2ch.net/test/read.cgi/php/1240977569/
381の様なのが多いからだよな
384nobodyさん:2010/05/21(金) 09:47:01 ID:???
突然、あるコントローラのアクションが2回呼ばれるようになっちゃった
今は問題の切り分けのために、アクションの中身はfile_get_contentsで文字列書き込んでるだけのシンプルな形。
なぜかわかる人、教えてください・・・
385nobodyさん:2010/05/21(金) 10:01:20 ID:???
>>384
バージョンは?
386nobodyさん:2010/05/21(金) 10:12:08 ID:???
>>384
2回呼ばれるというのは何をもって言ってるの?
アクションの先頭でdebug()おいて二回表示されるとか?
たんにfile_get_contents()が二回されてるだけ?
387nobodyさん:2010/05/21(金) 10:32:14 ID:2DyunNSv
>>385
1.2.6です

>>386
$text = file_get_contents('test.txt');
$text .= 'a';
file_put_contents('test.txt', $text);

アクションの中身はこうなってて、1回叩くだけでtest.txtの中身が「aa」になっちゃいます・・・
388nobodyさん:2010/05/21(金) 10:52:26 ID:???
>>387
debug( file_get_contents('test.txt') );
file_put_contents('test.txt', date() ,FILE_APPEND);

で、問題を切り分けてみたら?
389387:2010/05/21(金) 12:42:28 ID:2DyunNSv
>>388
今出先なので後で試してみます
390nobodyさん:2010/05/21(金) 19:30:09 ID:???
必要なのはまずdebuggerの環境だとおもうけど。
391nobodyさん:2010/05/21(金) 22:22:23 ID:dGPdEg+u
LLのフレームワークは使用するのに
どうしても多量のバッドノウハウが必要になるからな・・・
392nobodyさん:2010/05/22(土) 00:43:25 ID:???
バッドノウハウが必要ないFWって?
393nobodyさん:2010/05/22(土) 02:23:34 ID:???
>392
皆が理想としてるFWじゃ?
394nobodyさん:2010/05/22(土) 10:58:36 ID:???
あぁ、宗教の話か。
395nobodyさん:2010/05/22(土) 12:01:59 ID:???
>>387
test.txtに"a"が入ってるなら

$text .= 'a';が .= になってるから結果が"aa"になるに決まってんじゃん
396nobodyさん:2010/05/22(土) 14:31:49 ID:???
ひねくれ過ぎワロタw

バッドノウハウの総量の話だろw
397nobodyさん:2010/05/22(土) 15:08:38 ID:???
cakeで普通に書いててバッドノウハウが必要なことなんかあるっけ?
398nobodyさん:2010/05/22(土) 15:38:56 ID:???
うん、あり過ぎるね
しかも基本的な所にわんさと
慣れると不感症になるけどね
俺もそうだけどさ
399nobodyさん:2010/05/22(土) 16:13:48 ID:???
>>398
例えば?
400nobodyさん:2010/05/22(土) 16:52:58 ID:???
多過ぎていちいち列挙すんのめんどくせ
誰でも分かるほんの一例としては
バリデーション周りやらAuth周りやら
挿入周りにすらあるし
挙げ始めたらキリないって
401nobodyさん:2010/05/22(土) 18:45:35 ID:???
>>400
例えばってんだから、ひとつ例を挙げればいいだろ。
それとも挙げられないのに、さもあるように言うnoobさんですか。
402nobodyさん:2010/05/22(土) 19:07:46 ID:???
挙げた一例から
何がバッドノウハウに該当するか
自分で判断出来ないだけでしょw
403nobodyさん:2010/05/22(土) 19:11:39 ID:???
まぁ、例えば?って聞いてる人に対する答えにはなってないわな
404nobodyさん:2010/05/22(土) 19:21:24 ID:???
>誰でも分かるほんの一例としては
>バリデーション周りやらAuth周りやら
>挿入周りにすらあるし

これでピンとこない分からないレベルの奴に
いちいち手取り足取り指導なんてしませんよw
405nobodyさん:2010/05/22(土) 19:31:42 ID:???
406nobodyさん:2010/05/22(土) 19:39:37 ID:hO+yRnh4
bakeのおまじないとかあったしなw
407nobodyさん:2010/05/22(土) 20:16:03 ID:???
>>404
手取り足取りとかピンと来る、という表現がnoobなんだよ。
408nobodyさん:2010/05/23(日) 00:17:55 ID:???
あたしのためにケンカはやめて!
409nobodyさん:2010/05/23(日) 01:11:22 ID:???
意味ないこと書きこむ暇があったらバッドノウハウの一例でも書きこめよ
410nobodyさん:2010/05/23(日) 01:21:00 ID:???
必要なバッドノウハウって意味分からないんだが。
411nobodyさん:2010/05/23(日) 01:42:35 ID:???
security componentとかかな。
412nobodyさん:2010/05/23(日) 02:39:02 ID:???
うるせぇな。
空気嫁よ。
多すぎるって言ってるだろ。
413nobodyさん:2010/05/23(日) 09:03:16 ID:???
ま、どんな言語、FWにもバッドノウハウはつきものだと思うよw
414nobodyさん:2010/05/23(日) 18:07:02 ID:???
Cakeは実装部ソース見ないといけないとかごくごく普通だしね
阿藤快もなんだかなあって言ってたよw
415nobodyさん:2010/05/23(日) 20:33:53 ID:???
バッドノウハウの定義って何だっけ?
ORマッパーのGROUP BYとか、そのへんも含まれる?
416nobodyさん:2010/05/24(月) 00:37:05 ID:???
つーか、オフコン、クラサバVB、java 黎明期、struts+spring全盛、RoR & Cakeと
渡り歩いてきた爺さんとしてはCakeのソースが一番汚なくて、パッと見判別がつかねぇな。

クラサバはなんちゃってPGが溢れた時期でソース自体が汚くて見る気が起きなかったし、
javaも似たようなもんだが、Cakeはなんつーか、ほんとにこんな方向に発展したかったん
だろうか、と素朴に思うよ。

まぁspringのxml見たいに、書いてるxmlが本当に意味があるんだろうか、という異次元の
悩みよりはマシだが、ちょっとそのproject離れるとCakeは一から追わんとワカランな。
417nobodyさん:2010/05/24(月) 00:39:55 ID:???
つか単にPHPが一番汚く書けるってだけじゃねえのオッサン
418nobodyさん:2010/05/24(月) 00:40:28 ID:???
汚いってのはお前らのコードが汚いってわけじゃなくて、コードパターンが
なんつーかとにかく汚い、arrayと->の洪水ってか、xml hellに似てるよ。
419nobodyさん:2010/05/24(月) 00:44:43 ID:???
おっさんからみてRoRはどう?

配列地獄を使わないPHP FWとかはどう?(これでも->からは逃れられないか)
そうなってくるとCakeっつうよりPHPの言語仕様の問題になってくるな
420nobodyさん:2010/05/24(月) 01:03:14 ID:???
Quercusとかあるし
フレームワークもJavaVMで書く方向になればいいのに。
PHP以外の好きな言語で書けるし、
ライブラリやエンタープライズ向けの環境も自動的についてくる。
421nobodyさん:2010/05/25(火) 08:40:56 ID:???
言語が使えるってだけで、その言語のライブラリが全て動作するかっていったら
結構動かないからな。

独特の挙動も多いし厄介。

422nobodyさん:2010/05/25(火) 18:49:36 ID:kFSX6Hgc
formヘルパーで
メールアドレス[ ] (name属性はemail)
メールアドレス(確認)[   ](name属性はemail_confirm)
みたいなのを作ったんですが
email_confirmのバリデーションで
'rule' => array('equalTo', $email )としたいのですが可能ですか?
マニュアル見ても本見ても変数使ってるところがなくて悩んでます。
バージョンは1.3です。

423nobodyさん:2010/05/25(火) 19:18:13 ID:???
>>422
sageてー

その位置に変数使えないでしょ?
独自バリデーションを作ればOK

便利系validationをみつくろってプラグイン化してくれている人がいるから、探すもよしだな
424nobodyさん:2010/05/25(火) 19:21:50 ID:???
お、すいません。
了解です!ありがとうございます。
425nobodyさん:2010/05/25(火) 19:30:13 ID:???
結局コントローラでバリデーションの定義しました。
汚いですが…
426nobodyさん:2010/05/25(火) 20:51:59 ID:???
今からCakePHP始めるなら1.3がいいですかね?
427nobodyさん:2010/05/25(火) 20:57:46 ID:???
なんで?
428nobodyさん:2010/05/25(火) 21:03:08 ID:???
便利な機能がありそうだからって感じじゃないかな
でも不具合も多そうだし、これから触るのであれば安定版使うほうがいいだろJK
429426:2010/05/25(火) 21:41:26 ID:???
1.3.0も安定版って書いてあったんで^^
430nobodyさん:2010/05/25(火) 21:49:24 ID:???
マジで
431nobodyさん:2010/05/25(火) 22:19:42 ID:???
俺は語尾が好きな数字のモノを使ってるよ
432nobodyさん:2010/05/25(火) 22:33:17 ID:???
す スイーツきた!
433nobodyさん:2010/05/26(水) 15:07:53 ID:3pytNVWj
Var.1.3で、"app/plugins/プラグイン名/views/layouts"内の、
レイアウト使うにはどうすれば良いですか?
Ver.1.2なら、"app/views/layouts"内のレイアウトより優先的に使えてたのですが。
434nobodyさん:2010/05/26(水) 15:51:21 ID:???
>>433
1.2と同じようにプラグインの中のレイアウトを読んでくれてるけど、うまくいかない?
435433:2010/05/26(水) 16:02:21 ID:???
>>434
すいません勘違いしておりました。
ありがとうございました。
436nobodyさん:2010/05/27(木) 03:36:15 ID:cH14ywiE
Cake初心者でbake使ったことないけど、
Bakeって使えるの??
437nobodyさん:2010/05/27(木) 03:37:34 ID:cH14ywiE
あ、あとCake使えるようになったら、他のPHPフレームワークもスグ理解できる
ようになるかな?
438nobodyさん:2010/05/27(木) 13:07:13 ID:???
あなた次第だね
439nobodyさん:2010/05/27(木) 18:36:08 ID:???
Cakeの勉強会楽しそうだなぁ
440nobodyさん:2010/05/28(金) 00:34:38 ID:???
Cakeの.htaccess設定って本買って勉強するような技術?
公開鯖に上げられないんだけど。
441nobodyさん:2010/05/28(金) 01:16:27 ID:???
>>440
いいえ。
442nobodyさん:2010/05/28(金) 01:36:12 ID:???
勉強会行く人いる?
このスレの住人と会えたらいいなーと思ってるけど。
443nobodyさん:2010/05/28(金) 08:59:16 ID:???
>>442
行くよ
444nobodyさん:2010/05/28(金) 11:24:16 ID:???
いくら?
445nobodyさん:2010/05/28(金) 13:17:03 ID:???
cssファイル内で画像を設定するとき、例えば

background-image: url("/(アプリ名)/img/aaa.png");

などとしますが、上記のアプリ名の部分が変更された場合に自動で追従するには
どうすればいいものでしょうか?
446445:2010/05/28(金) 13:43:33 ID:???
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1776&forum=7

こんな感じのが一般ですかね??
447nobodyさん:2010/05/28(金) 14:15:22 ID:???
>>445
1.2ならvendors、1.3ならpluginsに入れてしまう。という手もあると思う。
448nobodyさん:2010/05/28(金) 14:18:04 ID:???
app::importしてviewに表示ってことですか?
449nobodyさん:2010/05/28(金) 17:04:27 ID:???
>>445
background-image: url("/app/webroot/img/aaa.png");

でいいじゃないの
450nobodyさん:2010/05/28(金) 22:05:07 ID:???
オープンになっているプラグインの一覧ってどっかない?
451nobodyさん:2010/05/29(土) 14:01:50 ID:???
>>449
CakePHPってこんなことまでできるんですか??
452nobodyさん:2010/05/29(土) 14:14:23 ID:???
> 445
俺だったらシンボリックリンク使うかな。
453nobodyさん:2010/05/29(土) 14:34:13 ID:???
>>542 ftpのみの環境だと無理だろ
454nobodyさん:2010/05/29(土) 18:00:38 ID:???
>>542に期待
455nobodyさん:2010/05/30(日) 08:02:11 ID:???
>>542 モデルに書いた方が後でごちゃごちゃしないのでオヌヌメ
456nobodyさん:2010/05/30(日) 15:07:32 ID:???
質問です。
CAKEの本でなにか初めての人向けのお勧めの本ってありますか?
リファレンス的な本はCakePHP ポケットリファレンス買おうと思ってるのですが
探してみたんですがあまり評価のよろしくないものが多いので・・
おねがいーします。
457nobodyさん:2010/05/30(日) 15:27:57 ID:???
>>456
CakePHP1.2ガイドブック
http://www.amazon.co.jp/dp/4839932468/
458nobodyさん:2010/05/30(日) 16:30:06 ID:???
>>457

この本ってアマゾンの評価みてもわかりにくそうな印象が・・
大丈夫でしたか?
またサンプルもCDも付属なし、ダウンロードもできないっぽいですが・・
459nobodyさん:2010/05/30(日) 16:31:49 ID:???
CakePHPは1.3がでてしまったからなー。
どの本も時代遅れさー。
460nobodyさん:2010/05/30(日) 16:33:16 ID:???
俺はいろいろ本を買ったが、一番役に立ったのは「CakePHP ポケットリファレンス」だった
461nobodyさん:2010/05/30(日) 16:44:35 ID:???
>>459
>>460

そうなんですよねー、1.3って1.2と比べて機能とかけっこう違いあります?

CakePHP ポケットリファレンスはamaの評価もよいしリファレンス本は必要なんで
買う予定なんですけど、他の本ってどれもイマイチ評価悪いんですよねー。。
457さんの本は値段も微妙に高いしちょっと買うのに躊躇が・・。
462nobodyさん:2010/05/30(日) 18:34:09 ID:???
>>458
尼のコメには
>ソースコードは
http://github.com/yandod/cakephp-guidebook
http://cakephp.cba-japan.com/
>からどうぞ。
って書いてあるけど
463nobodyさん:2010/05/30(日) 20:53:48 ID:???
ガイドブックは読みにくいけど内容は一番まともだと思う
さわりの部分をひととおりさらうにはいい
でもそんな目的のためにあの値段は高過ぎる・・・
半分の薄さで簡潔に書いてくれて半額のほうがいい本になって売れると思うけどなぁ
464nobodyさん:2010/05/30(日) 21:50:27 ID:???
465nobodyさん:2010/05/30(日) 22:49:56 ID:???
ガイドブックはざっくり目を通すには悪い本ではないと思う
ただ誤植が多くて、サンプルがどのコードに対応するのか分かりにくい
手を動かして練習するには不向きな気がする
466nobodyさん:2010/05/30(日) 22:55:03 ID:aCIlDOev
ショッピングカートの
注文部分みたいなのどうやって作ればいい?
カートの中身→住所入力→支払い方法入力→確認画面→完了みたいなの。

希望としては、URL直接入力でいきなり途中のページ、たとえば支払い方法入力
ページにいけたりしてほしくなく、決めたとおりの順序でしか
表示されないようにしたい。
だからURLは全部同じになるのかな?

でも可能なら、戻るや進むは理想どおりに動いてほしい。
これはURL同じじゃ実現は難しいのかな?

どうするのが一番いいんだろう。
別にCakePHP以外の話でもいいんだけど、
こういうところ、みんなどうやって作っているのか気になる
467nobodyさん:2010/05/30(日) 22:59:54 ID:???
>>466
cakeに関係なく普通はセッション使うのでは。
468nobodyさん:2010/05/30(日) 23:03:25 ID:???
フラグを立てればいいかも
469nobodyさん:2010/05/30(日) 23:08:21 ID:???
>>466
セッションに前の画面から来たという証を入れといて
次の画面で照合する。
これをやらないとCSRF脆弱性に繋がるよ。
470nobodyさん:2010/05/30(日) 23:12:42 ID:???
session_regenerate_id(true)とかは?
471nobodyさん:2010/05/30(日) 23:14:58 ID:???
CAKE本についてありがとうございました。
参考にしてみます。

近所の図書館にガイドブック1.2あったんでとりあえずそれでしのいで
1.3の本でてから買うことにしました。
472nobodyさん:2010/05/31(月) 00:07:26 ID:???
>>469
そういうこまごまな雑用を
やらなくてすむのがフレームワークじゃないんですか?
473nobodyさん:2010/05/31(月) 02:22:36 ID:UmKeQ4JH
ヘルパーの中読んでるんだが
なんか実装するつもりだったんだろうけど動作してない機能とか変な引数突っ込んだらバグるメソッドとかぽろぽろ見つかるな

あとオーバーロードを無理矢理実装するのはやめてくれ
HtmlHelper::tableCellsとか酷すぎ
474nobodyさん:2010/05/31(月) 07:41:00 ID:???
>>472
security component使うのがcake流では?
475nobodyさん:2010/05/31(月) 11:48:32 ID:???
cakephpって有名な企業とかで使われてる?
476nobodyさん:2010/05/31(月) 12:53:33 ID:???
Firefoxアドオンサイト
477nobodyさん:2010/05/31(月) 16:46:23 ID:SYZ/fufa
hogehoge.comへアクセスした時
www.hogehoge.comへ変更するのは.htaccessを弄るしか方法ないでしょうか?
478nobodyさん:2010/05/31(月) 18:42:48 ID:???
もしCakeでやるのだったら、
AppController の beforeFilter で、ホストを取得して、それを元にリダイレクトかければいいんじゃない。

上記方法でやるよりも、.htaccessでやるのが全然いいと思うが。
479nobodyさん:2010/05/31(月) 18:50:29 ID:???
1.3.0さわってみた記念
ところでsqlite3を使いたくてgithubのDBOを入れて使えるようにしたのだが
bakeでmodelを作成できないのは仕様?
480nobodyさん:2010/06/01(火) 11:47:04 ID:???
form->radioで、未選択時の値を選択なしにする方法はありますか?

$options に値「0」のデータが含まれていると、未選択時にこの値が選択されてしまうのです。
form->selectの第3引数に$selected = nullを指定したときと同様の動作を望んでいるのですが。
481nobodyさん:2010/06/01(火) 17:56:45 ID:???
1.3使ってます。
Formヘルパーで、checkboxを以下のように出力したとき、divが消せないんですけど
これってどうやれば良いんでしょうか?
<?php
echo $form->input(
'search3',
array(
'type'=>'select',
'multiple'=>'checkbox',
'div'=>false,
'label'=>false,
'options'=>$lists
)
);
?>
482nobodyさん:2010/06/03(木) 11:12:40 ID:mt7KSN2e
つい先ごろからCakePHPを利用したアプリ作ってます。ver1.3です。
質問ですが、よくある検索条件&一覧の画面で、paginate使う場合にソートや
ページング後に検索条件を保存する方法はフレームワークで用意されてない
のでしょうか。
ない場合、定石的にはどうするのでしょうか。sessionに入れるというのは一つ
思いつきますが、できればやりたくありません。

よろしくお願いいたします。
483nobodyさん:2010/06/03(木) 11:33:09 ID:???
>>482
ない
あと同じ質問以前にあったから検索すること
484nobodyさん:2010/06/03(木) 14:10:48 ID:???
>>482
Search Plugin 使うとよい
485nobodyさん:2010/06/04(金) 03:35:38 ID:NZTGzHeO
MediaPluginって、モデルごとにサムネイルサイズ指定できない?
Configure::write()での指定をモデルごとに入れてやろうかとも思ったけど、
viewで表示する際ソースのheight/widthに数値入るから不具合起こりそう
なんかいい解決方法ないですか?

複数のモデルでmediaファイルアップされるってのは想定されてないところ見ると普通じゃないのかな
486482:2010/06/04(金) 06:54:54 ID:???
ありがとうございます。プラグイン調べて見たいと思います。
487nobodyさん:2010/06/04(金) 10:09:17 ID:???
cakeにプラグインがあるなんて知らなかった。
情報thx!!

488nobodyさん:2010/06/04(金) 14:09:11 ID:???
>>485
>複数のモデルでmediaファイルアップされるってのは想定されてないところ見ると普通じゃないのかな

Attachement モデルで group とかで指定できるでしょ。
これができるから、mediapluginってつえーんだよね。
489nobodyさん:2010/06/04(金) 15:29:41 ID:???
>>488
それはそうなんだけど
サイズ指定ね。
モデルによって必要なサムネイルサイズが違うって普通にあることだと思うんだけど、
サイズ指定はConfigure::write()のMedia.filter.imageでAppで共通の設定でしょ
ビヘイビアの引数とか、Attachmentモデルとからへんで指定できてよさそうなのにってはなし
490nobodyさん:2010/06/05(土) 09:45:21 ID:xxd6/1g9
CAKEPHPのチュートリアルとか見て勉強中なんですがECLIPSE
でデバッグできると知り、なんとか設定してみました。

が、CAKEで動かそうとするとデバッグできません。
最初の一行で止まるOPTIONでデバッグすると、CAKE内部で止まるのですが
sample_controller.phpとかの行でブレークポイントをつけても無視されてしまいます。

デバッグの構成は

XDebug、Default PHP Server使用で
ファイルは /cakephp/samples
URLは   http://Localhost/cakephp/samples

としています。
なにが原因でしょうか? わかるかた教えてください
491nobodyさん:2010/06/05(土) 18:22:49 ID:???
入門書でも買って一から勉強したら?
492nobodyさん:2010/06/07(月) 09:14:03 ID:???
493nobodyさん:2010/06/07(月) 09:16:39 ID:???
CakePHP1.3.1のキャッシュ関係のバグが直ってるぽい

あと質問時にあげなくても良いからね。って見てないからあげるんだろうが
494nobodyさん:2010/06/07(月) 10:03:53 ID:???
IDださなきゃ騙りが出るだろーが
IDだせ
495nobodyさん:2010/06/07(月) 10:12:48 ID:nY/RardB

告知させて。
現在のところあまり盛んに動いてるオンライン勉強会がないので
あたらしくグループつくりました。
オンラインでチャット・生中などいろいろ(未定)で
できれば毎晩だらだら勉強やる予定です。
熱意のある人いたらたまーに課題だしてってアプリ作るなんてのも
ありかなと思ってます。

初心者の人はもちろん、おれが仕切って教えてやるわって人も大歓迎です。
496nobodyさん:2010/06/07(月) 10:13:55 ID:nY/RardB
グーぐるグループ
「初心者歓迎 PHP勉強会 2ch発」
ttp://groups.google.co.jp/group/2ch-php
[email protected]

参加希望の人いたら、メールくださいな。
497nobodyさん:2010/06/07(月) 10:17:38 ID:???
平日やんの?
498nobodyさん:2010/06/07(月) 10:36:57 ID:???
cakeなんて勉強会するほどのものじゃないだろ
499nobodyさん:2010/06/07(月) 10:39:58 ID:???
あちこちのスレで宣伝してるしPHPの勉強会ということだろう
まぁそんなボランティア精神あふれる社会人はいないけどな
学生か初心者同士が教えあう趣旨ならいいかもしれんが
狭いコミュがいやだから2chにいるわけでわざわざ登録してまでここからいくやつはいるのだろうか・・・
引き抜くならmixiとか教えてgooとかからのほうがいいぞ
500nobodyさん:2010/06/07(月) 10:45:21 ID:???
あcakeじゃなくてphpか
学びたいなら2chなんかから一歩外に出たほうがいっぱいあるだろうに
なぜあえて2chとかつけたがるのか甚だ疑問だ
501nobodyさん:2010/06/07(月) 11:17:18 ID:nY/RardB
>>497

平日というか、とりあえず毎日でもチャットかスカイプとかで何人か雑談的に
あーだ、こーだ最近のネタとかPHPについて話す場を作って、たまーに課題でアプリでも作って
やってければなってかんじです。
マジメに教えるための素材作ってオフの勉強会みたいにやるのは、たぶんこれまでの
グループとかみても運営に負担かかって衰退するだけなんで気楽にやれればなーってかんじです。

>>498-500

なんとなくやってみるかんじだよー。
mixiとかも考えてみる。
502nobodyさん:2010/06/07(月) 12:11:08 ID:???
>>494
変なのが、きちゃったじゃないかよ。。。
503495:2010/06/07(月) 14:10:32 ID:???
     *      *
  *     +  うそです
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
504nobodyさん:2010/06/07(月) 17:51:30 ID:BTwl7tPr
505nobodyさん:2010/06/08(火) 11:06:13 ID:???
1.3系の次は2.0になるみたいだね
506nobodyさん:2010/06/08(火) 11:15:15 ID:???
>>505
そだよ。
ちなみに2.0はPHP5のみ
507nobodyさん:2010/06/08(火) 11:24:51 ID:???
すっきりする
508nobodyさん:2010/06/08(火) 21:32:11 ID:???
今まで4が切られていなかったのが奇跡
つーか、PHP4+CakePHPのプロジェクトなんて、片手で数えられるくらいしかないんじゃないか?
509nobodyさん:2010/06/08(火) 22:00:39 ID:???
1.3.0入れてBlogのチュートリアルやったんだけど、
記事個別のviewやdeleteのリンクの最後が"/id:1"のようになってしまっていて、動きません
"id:"が余計で"/1"に変えてみたら動くのですが、こうなるのはソースのどこが間違っているのでしょうか?
公式が堂々と間違えているのにぐぐっても特に何も出ない
510nobodyさん:2010/06/08(火) 22:10:19 ID:???
>>509
1.3英語版のマニュアルの方を見ると良いです。
'id'=> が余計だね。
511nobodyさん:2010/06/08(火) 22:13:04 ID:???
>>510
日本語版はテキスト古いとか出てたので英語版見ながらやったんですが…
もいちどチェックしてみます
512nobodyさん:2010/06/08(火) 22:22:57 ID:???
どうやら1.3じゃない版を見ていたっぽい
ctp内の'id'=>を消したらいけました
513nobodyさん:2010/06/08(火) 23:06:25 ID:???
1.2以上でセキュリティコンポーネントのrequireAuthを使えてる人いる?
514nobodyさん:2010/06/10(木) 05:07:20 ID:???
>>506
どーせなら5.3のみにしてもらってもいいくらいだな。
5でもそれぞれ地味に挙動違うし
515nobodyさん:2010/06/10(木) 06:23:37 ID:???
hasOneとbelongToて何が違うの?
機能的には同じものを提供しているように思うんですが
516nobodyさん:2010/06/10(木) 07:04:46 ID:???
>>514
それLithium
517nobodyさん:2010/06/10(木) 08:37:39 ID:???
>>515
バカだな

ニートなお前は
親に依存してるだろ?→belongsTo
でも逆に親から見ると
親はお前を養ってるだろ?→hasOne

お前兄弟いる?いるなら
親はお前(ら)を養ってるだろ?→hasMany
518nobodyさん:2010/06/10(木) 08:52:47 ID:???
>>515
ちがうよ!全然違うよ!
User hasOne Profile だけど、 User belongsTo Country になる。
この場合、Country hasMany User が成り立つ。(別に設定する必要はないが)

相手側から見てhasManyが成り立てばbelongsToだよ
519nobodyさん:2010/06/10(木) 08:55:02 ID:???
なぜ使い分けるかは、それぞれ提供されてる機能が違ってくるから。
慣れるまでは>>518を参考に区別しておくと良いよ
520nobodyさん:2010/06/11(金) 09:02:47 ID:iUDx5l1B
GoogleブックにCake本が。

オープンソース徹底活用 CakePHPによるWebアプリケーション開発
http://books.google.co.jp/books?id=_6uO_tNQRTUC&printsec=frontcover#v=onepage&q&f=false
521nobodyさん:2010/06/11(金) 16:49:02 ID:???
>>520
これ一番わかりやすい本だと思うんだけど絶版なんだよね
全ページを見せてくれてもいいのになあ
522nobodyさん:2010/06/11(金) 19:58:24 ID:???
data[0][aaa]
data[0][bbb]
data[0][ccc]
data[1][aaa]
data[2][bbb]
data[3][ccc]
のような配列のバリデーションって出来ますか?
523nobodyさん:2010/06/11(金) 20:14:27 ID:???
>>520
本屋にまだ置いてあるでしょ
524nobodyさん:2010/06/12(土) 00:17:39 ID:???
CakePHP: the rapid development php framework
Not Found
Error: The requested address '/' was not found on this server.

でハマっています。
Configure::write('debug', 0); を0以外にするとエラーにならなくなります。
どこから調べていけばいいでしょうか…。
525nobodyさん:2010/06/12(土) 03:08:55 ID:???
routes.phpとかテンプレートあるかどうかとか。
526nobodyさん:2010/06/12(土) 07:58:43 ID:???
>>524
ん?debug 1だとエラーが出ないってこと?
そしたら、layoutsファイル内にecho $content_for_layoutが無いとか?
527nobodyさん:2010/06/12(土) 12:55:30 ID:???
debug時になにかしらエラーが出てると思うんだけど
528nobodyさん:2010/06/12(土) 21:20:41 ID:???
cakeインスコで聞きたいんですけど(1.3入れました。)
mod_rewriteが効いてない?みたいで
cakeのディレクトリにあるindex.phpが404で開きません。

apacheのhttpd.confと
cakeの3つの.htaccessのRewriteBaseも解説本通り修正したんですが
ほかに何か問題になりそうなところってありますか?
529528:2010/06/12(土) 21:40:47 ID:???
自己解決しました。
.htaccessのRewriteBase外したらおkでした。
530nobodyさん:2010/06/13(日) 18:44:53 ID:???
>>524
それDB接続に失敗しててもなるよ。
531nobodyさん:2010/06/15(火) 12:18:42 ID:???
共有SSLを使おうと思ったら、 https://レンタルサーバ/ドメイン名/ と、
サブディレクトリがくっついてきて、そのままだとCakePHPの吐き出す絶対パスが
合わなくなってしまいます。

mod_rewriteのrewritebaseで設定すればいけると思いますが、ホスト名によって
rewritebaseを複数設定することは可能でしょうか?
532nobodyさん:2010/06/17(木) 13:15:31 ID:???
cake/libs/session.php
を改造したいんですが、
直接ファイルに手を入れずに別の場所において修正する事は可能でしょうか
ヘルパーを改造したいときに
cake/libs/view/helpers/*.php

app/views/helpers/

置くのと同じイメージでできればと思ってるんですが
533nobodyさん:2010/06/17(木) 13:39:37 ID:???
views以下のテンプレートにctpじゃなくてPEARのHTML_Template_Sigmaを使いたいんですが
そういう改造を施した例とかどこかにないでしょうか
HTMLとPHPをなるべく分離したいのです
よろしくお願いします
534nobodyさん:2010/06/17(木) 14:22:14 ID:bowe+bRa
>>531
できるんじゃない?

>>532
app/session.phpにコピーすれば、そっちが優先して動くんじゃない?

>>533
Smarty使う方法はたくさん解説されてるから、それを参考にすればよいんでない?
535nobodyさん:2010/06/17(木) 14:37:47 ID:???
直訳:ググレカス
536nobodyさん:2010/06/17(木) 16:08:10 ID:???
1.3.2のPagenatorで、$pagenator->counter(array('format' => '%count%件'));
とかやって表示件すとか色々出力しているのだけど
Notice (8): Undefined index: limit [CORE/cake/libs/view/helpers/paginator.php, line 543]
Notice (8): Undefined index: limit [CORE/cake/libs/view/helpers/paginator.php, line 545]
ってエラーがでる。
controller側で
$this->paginate = array(
'fields' => 'hoge',
'conditions' => array(...),
'limit' => 10,
'order' => 'id asc',
);
$this->paginate('model');
って、limitの指定をしているのになぜ?
537nobodyさん:2010/06/17(木) 16:44:56 ID:???
そのエラーの原因を追えないとか終わってるだろ
もうやめとけ
538nobodyさん:2010/06/17(木) 17:02:15 ID:???
わかったlimitが無いんだ!
539nobodyさん:2010/06/17(木) 17:12:17 ID:???
そういう理不尽なエラーはしょうもないスペルミスだったりすることが多いな。
540nobodyさん:2010/06/17(木) 17:34:38 ID:???
疲れてるとハマるんだよな
541nobodyさん:2010/06/17(木) 18:28:29 ID:???
データが来ない。おかしい!ってさんざんモデルだの何だのひっくり返してみて
conditionsがconditonsだったのを発見した時の脱力感・・・
542nobodyさん:2010/06/17(木) 18:29:48 ID:???
あるあるw
543nobodyさん:2010/06/17(木) 20:17:00 ID:???
そういうのってEclipseとかが教えてくれないの?
544nobodyさん:2010/06/17(木) 20:36:01 ID:???
スペルチェックオンにすれば教えてくれそう
545nobodyさん:2010/06/18(金) 09:40:58 ID:???
だからCakeはエラー発生箇所が異次元なんだよ。
Strutsの黎明期そっくりだ。
546nobodyさん:2010/06/18(金) 12:07:08 ID:???
>>545
他のFW使ったことないけど
PHP系FWのマニュアル見てるとどれも辞書で設定してるし
どっこいな気がする
547nobodyさん:2010/06/18(金) 17:17:03 ID:???
ページの先頭にどうしても空行が入ってしまうのですが、
回避する方法はあるのでしょうか?

dispatche.phpのechoしている部分の前に、
「ob_clean();」を追加しても解消しませんでした。
548nobodyさん:2010/06/18(金) 17:42:07 ID:???
>>547
回避すること考えるより、どうやって該当箇所を発見するかを考えたほうが遙かに前向きだと思うんだが
549nobodyさん:2010/06/18(金) 18:21:07 ID:???
>>547
ソースを全部さらしたら、探してあげてもいい
550nobodyさん:2010/06/18(金) 18:55:36 ID:???
>>547
どうせどっかのコードの最後の?>の後に改行が入っているのだと思われる
551nobodyさん:2010/06/19(土) 04:33:18 ID:iks7bUVl
1.2なんですけど

viewとかcontrollerとかで、その場でHelper使いたいとき
App::import('Helper', 'Form');とか例えばやったとして
new Formして $form->input();とか使うと、
Undefined property: FormHelper::$Html って怒られます。
自動で FormHelperクラスの $helpersを読み込むのをやってくれないんだと思うんですけど
どうにかして正常に動作させられないですかね?
調べると英語で同様の症状を訴える投稿はありますけど明確な回答が見つからんです。
552nobodyさん:2010/06/19(土) 04:45:21 ID:???
Undefined property: FormHelper::$Html

そのまんまなのだがw

HTMLヘルパーも読み込んでみれ
553nobodyさん:2010/06/19(土) 11:10:38 ID:???
>>546
知らないなら黙ってた方がいいよ。
554nobodyさん:2010/06/19(土) 11:39:47 ID:???
>>553
というと?
555nobodyさん:2010/06/19(土) 15:47:58 ID:???
formヘルパーでラジオボタンとかセレクトボックスを生成したときに、
「デフォではxを選択した状態だけど、バリデーションエラー時とかにはユーザーが選択した状態」
にするにはどうしたらいいの?
optionでselected設定しちゃうと、バリデーションエラー時にその設定が優先されちゃって
ユーザーの選択じゃなくなっちゃうんだけども
556nobodyさん:2010/06/19(土) 16:10:46 ID:???
$form->うんちゃら('hoge',array('value' => $value));
で普通にいけない?
ユーザからのデータがない場合は、$valueに初期値を設定するようにして、
ユーザからのデー座がある場合は、それを上書きして view に渡す。
557nobodyさん:2010/06/19(土) 16:40:56 ID:???
>>556
>ユーザからのデータがない場合は、$valueに初期値を設定するようにして、
やっぱりそれしかないのかな
フォームヘルパー自体でそういう機能を備えてくれてるといいんだけど、
コントローラー側で一手間かかるのを、出来れば省略したい
558nobodyさん:2010/06/19(土) 17:08:19 ID:???
>>557
つ array('default' => 'x')

あんまり使ったことないけどね
初期値与えるならcontroller(model)のほうがいいと思うなあ
559nobodyさん:2010/06/19(土) 17:34:03 ID:???
>>558
まさにそれ!ありがとう!
確かにモデルと関連させてデフォを決める場合には、ヘルパーで決めちゃわない方がいいかもしれないけど、
とりあえずこれで行くわ
560nobodyさん:2010/06/19(土) 17:40:13 ID:???
>>559
あ、最後のはひとりごとだから気にしないで

あと、データが0のときは、デフォルトの値に上書きされるかも。要注意
561nobodyさん:2010/06/19(土) 17:44:38 ID:???
1.3から$this->set(compact('foo_bar'))したときにキャメルケースに強制変換されなくなった?
562nobodyさん:2010/06/19(土) 18:02:08 ID:???
このスレレベルたけぇな
563nobodyさん:2010/06/19(土) 18:30:07 ID:???
>>561
されなくなった
564nobodyさん:2010/06/19(土) 20:21:15 ID:???
>>562
それ皮肉だってことが分からない人がいるから、はっきり言ってあげた方がいいよ
565nobodyさん:2010/06/19(土) 20:24:22 ID:???
皮肉なんか言ってやるなよ
かわいそうだろ
566nobodyさん:2010/06/19(土) 21:06:08 ID:???
まあこのような、わけのわからんこと言い出す連中が
一番低脳だというのは言うまでもない話。
567nobodyさん:2010/06/19(土) 21:50:44 ID:???
page以外のnamedパラメータを使ってpaginationすると、URLの最初にpage:xが来てしまいます

例えば
/status:active/page:2 にアクセスすると
nextのリンクは /page:3/status:active になる
といった感じです

コードを追ってみたところ、pagination helperの中でnamedパラメーターを配列として扱って、
array_margeを何度か行っている関係で、pageが配列の一番最初に来てしまって、結果、
URLの一番最初のnamedパラメーターとして表示されてしまっているようです
pagination helper自体をいじって、最終的にpageを配列の一番最後に持ってくれば
正しく動きそうですが、他にもう少しスマートな方法はないでしょうか・・・
568567:2010/06/19(土) 22:20:31 ID:???
一応、pagination helperの362行目に
if(isset($url['page'])) {
$page = $url['page'];
unset($url['page']);
$url = array_merge($url, array('page'=>$page));
}
を追加したら、page:xが一番最後に来るのを確認できました
569551:2010/06/19(土) 23:15:37 ID:iks7bUVl
>>552
そりゃわかるんですけど
そもそも読み込まれないのがなんとかならないかという話です。

App::import('Helper', 'Form');
App::import('Helper', 'Html');
$form = FormHelper;
$form->Html = HtmlHelper;

ここまでやればHtmlがないとは怒られないですが、$form->webrootがセットされていなかったりと、
そもそもApp::import('Helper' が用意されているのにも関わらず、
ちゃんと使える状態にならないってのもおかしいのではないかと思い質問させていただきました。
570nobodyさん:2010/06/20(日) 01:15:11 ID:???
>>569
controllerで同じ亊してsetで渡しなよ
571nobodyさん:2010/06/21(月) 13:51:06 ID:???
>亊
572nobodyさん:2010/06/21(月) 17:40:58 ID:???
http://xxxx/(アプリ名)/test.php
で、適切なデバッグレベルの場合はテストが実行されますが、これを無効にする方法はありますか?
本番リリース時などでデバッグレベルを0にした場合、テスト自体は行われませんが
「Debug setting does not allow access to this url.」
などというメッセージが出てきます。

こういう場合はwebroot直下のtest.phpを削除するのが正しいですか??
573nobodyさん:2010/06/21(月) 18:32:34 ID:???
>>572
htaccess に404でリダイレクト知るように書けば
574nobodyさん:2010/06/22(火) 20:20:10 ID:???
validationって、使うコントローラーによって切り替えたりとかできないですかね?
575nobodyさん:2010/06/22(火) 20:47:10 ID:???
ビューの中でfunctionを作って、
その中でヘルパーを使いたいときは
引数で渡す以外にどうすれば上手くできるでしょうか
576nobodyさん:2010/06/22(火) 21:09:04 ID:???
>>575
素直に独自Helperに書きましょう
577nobodyさん:2010/06/23(水) 02:28:29 ID:???
Authで会員ログイン機能を実装して例えば写真を見せるサイトを作ったとして、
退会すると当然Authによりはじかれてログインはできないけど、
写真に直接アクセスされたとき、はじかれませんよね?
写真一枚表示するのにCakeのコア動かしてAuthログイン判断してってのは負荷が心配だし
なにかいい方法ないですかね?

ファイル名をランダムにしててもメモされたら意味ない
でもメモする位ならファイル保存しない?じゃあよくね??みたいな永久ループしてます。
578nobodyさん:2010/06/23(水) 02:41:17 ID:???
まぁほんとに見せたくないならauthかますしかないわな
コストと実利を天秤にかけろ
579nobodyさん:2010/06/23(水) 09:38:51 ID:???
>>577
ttp://neta.ywcafe.net/000774.html
この考え方で出力すればよい
(キャッシュは定期的に削除する)

が、どのみちURL叩かれたら退会前でも会員以外の人に見られるのは一緒
mixiが以前そうだったね
580nobodyさん:2010/06/23(水) 12:39:45 ID:hpuIM/fT
DBのクエリ実行自体は 20ms ぐらいなのに、HTMLの出力に1〜5秒ほどかかってしまう場合
どこが原因かチェックする方法ってありますか?
Controller自体は、find() を2回使って、出力するHTML自体も20Kb程度です。
581nobodyさん:2010/06/23(水) 12:44:17 ID:???
クライアントのCPUが弱い
582nobodyさん:2010/06/23(水) 13:06:06 ID:???
>>580
DebugKitつかってる?どこで何ミリ秒かかってるかとか詳細がみれるよ
583nobodyさん:2010/06/23(水) 13:58:09 ID:???
独自のグローバル関数を追加する方法は
cake\basics.phpに追加する以外に
何か方法はありますか?
584nobodyさん:2010/06/23(水) 14:11:23 ID:???
ヘルパー化する
585nobodyさん:2010/06/23(水) 15:24:39 ID:???
>>583
app/config/bootstrap.php
586nobodyさん:2010/06/23(水) 18:19:33 ID:???
1.3を使っています。
Authコンポーネントを使い基本的なログイン機能を作っていたのですが
core.phpを書き換えてセッションをDB管理したら
ログイン出来なくなりました。
エラーメッセージも出ず、auth.phpを上から見ていってるのですが
どこでつまづいてるのかわかりません。
セッションをDB管理し、authを使うには何か設定が必要でしょうか
587nobodyさん:2010/06/23(水) 18:20:11 ID:???
cakePHPにはDB接続をサポートする機能が搭載されていますが、
それを使わずmysql_connectやpear::DBを使ってDB接続することはありますか?
588nobodyさん:2010/06/23(水) 18:26:15 ID:???
>>582
ありがとうございます。DebugKit導入しました。
これで少しは原因が分かりそうです。
589nobodyさん:2010/06/23(水) 18:53:01 ID:???
>>587
ない
590nobodyさん:2010/06/23(水) 23:04:49 ID:???
一部を除いた全ソースから?>を削除した
こんなもんいらね
591nobodyさん:2010/06/23(水) 23:10:47 ID:???
あぁ?>いらないんだよね
ていうか開発者から、取るのを推奨されているんだっけ?

何のためかは良く知らないけど
改行が入ったりの予防くらい?
592nobodyさん:2010/06/23(水) 23:24:38 ID:???
俺は?>は書かないし、viewで極力セミコロンを付けない
でも最初からあるコードは基本的に放置だな
むしろ手を加えることで何か不具合出してしまいそう
593nobodyさん:2010/06/23(水) 23:54:21 ID:???
>>592
>viewで極力セミコロンを付けない

<? echo $hoge ?>
こういうこと?
594nobodyさん:2010/06/24(木) 00:20:59 ID:???
>>593
うん、<?php echo $hoge ?>だけど
595nobodyさん:2010/06/24(木) 00:29:11 ID:???
どうでもいいよ
596nobodyさん:2010/06/24(木) 01:10:16 ID:???
まぁプログラムって運だからな
597nobodyさん:2010/06/24(木) 02:10:58 ID:???
は?書いたようにしか動かないよ
何いってんの?
598nobodyさん:2010/06/24(木) 08:28:24 ID:???
>596
ちげぇよ愛だよ
599nobodyさん:2010/06/24(木) 13:44:40 ID:???
>586

coreに記述されているハッシュの種が変わったから、
違うパスワードが生成されているんじゃないの?
照会SQLを確認してみな。
600nobodyさん:2010/06/24(木) 23:26:58 ID:???
まるでIEのHTML勝手解釈だな。
そのうちPHPの仕様が変わって絶滅するだろうな。

ガハハハハハハハハ
601nobodyさん:2010/06/24(木) 23:45:45 ID:SNEZsqXV
<?php e(date(__('F j,Y'),$times)); ?>

とcakePHPによる実践アプリケーション開発 という本に
例があり一部抜粋したのですが、この先頭のeとは何なんでしょうか?
602nobodyさん:2010/06/25(金) 00:06:12 ID:???
>>601
echoの短縮表記
603nobodyさん:2010/06/25(金) 08:04:32 ID:???
debugが1以上だと、HTMLの最後に<!-- 0.00sec -->みたいな出力にかかる秒数書いてあるけど
Ajaxで使うときはエラーになって邪魔です。Ajaxで使うときは出力しないようにできませんか?
604nobodyさん:2010/06/25(金) 08:55:39 ID:???
>>603
beforeRenderとかで
if ($this->RequestHandler->isAjax()) Configure::write('debug',0);
って感じ
605nobodyさん:2010/06/25(金) 10:22:11 ID:???
>599
照会SQL確認して、
セッションテーブルのIDをintにしていたのが間違っていました
ばーちゃーにしたらうまく動きました。
ありがとうございます!
606603:2010/06/25(金) 10:24:39 ID:???
>>604
なるほど!RequestHandlerがあったんですね。ありがとうございます。
607nobodyさん:2010/06/25(金) 18:49:37 ID:0V5oobxv
>602
ありがとうございました。

608nobodyさん:2010/06/25(金) 20:47:40 ID:???
普通RequestHandlerを使うとLayoutがajaxになると思うが、みんなはajax.ctp使ってないの
609nobodyさん:2010/06/25(金) 20:55:23 ID:???
なにがだ
610nobodyさん:2010/06/28(月) 01:42:58 ID:???
CakePHPって新規開発にしか使えないよね。
611nobodyさん:2010/06/28(月) 04:10:11 ID:???
何を期待してるんだ?
何ができれば”既存案件で使える”になるんだ?
612nobodyさん:2010/06/28(月) 10:41:06 ID:???
session管理ってcookie使ってますか?

情報の引き渡しにsessionを多用してたら、複数のブラウザを立ち上げて
並行してオペレーションを行うと動作がおかしくなりました。
同じsessionを複数のオペレーションから参照してるので当たり前といえば
当たり前なのですが。

こんな場合はURIにsession idを含めるとか、そういう対処が一番ですかね?
613nobodyさん:2010/06/28(月) 11:07:09 ID:???
何を期待してて
でもどうなった
だからおかしいと思ってる

ってのが分らなけりゃ答えようがないと思わないかい?
はいかいいえで答えてくれ
614nobodyさん:2010/06/28(月) 11:30:46 ID:???
いいえ
615612:2010/06/28(月) 11:56:53 ID:???
>>613
はい、その通りです。例をあげると
http://sample.sakushima.net/Cake/sessions/
ブラウザを2つ立ち上げて、このページをそれぞれ開きます。
2つのブラウザを順番にリロードすると、リロードした順に1,2,…と回数が上がります。
2つのブラウザで同じSessionを共有しているので、この動作は正しいと思います。

やりたいことは、上記の動作を行った際、2つのブラウザそれぞれで1,2,…と回数を上げたいのです。
実現方法ご存じの方お教えください。
616nobodyさん:2010/06/28(月) 12:06:27 ID:???
>>615
認証済みのユーザーということじゃないんだよね?
そうすると、2つのブラウザのアクセスが同一人物だと判定しなきゃいけない

URLに埋め込むとセッションハイジャックされるリスクを負うんじゃまいか?
617nobodyさん:2010/06/28(月) 12:13:19 ID:???
>>610は名称可変のコピペだろ
618nobodyさん:2010/06/28(月) 15:17:05 ID:???
User.id User.name
Diary.id Diary.user_id Diary.body
Comment.id Comment.diary_id Comment.body
というDB構成で作っているときに、
「最新のコメント10件がが誰の日記に向けて書かれたか」を表示させるとき、
$this->Comment->findで、recursiveを2にしてデータを取ってきてるんだけど、
CommentとDiaryがJOINされるんだけど、それとは別にUserのデータを
取ってくるのに10回もSQLを投げてしまうのはしょうがないものなの?
CakePHPが副問い合わせに対応していないせい?

表示させたいのは
>最新のコメント10件
> こんにちは → Aさんの日記
> お久しぶりです → Bさんの日記
> 面白いですね → Aさんの日記
> ...
という感じなんだけど
619nobodyさん:2010/06/28(月) 19:53:05 ID:qHDwmPz9
VIEWのCTPファイル内で、TABLEの幅を400pxに固定したいんですが。

<TABLE width="400px"> として表にしてもブラウザの幅に
あわせて伸び縮みしてしまいます。
デフォルトのCSSファイルより、優先されると思うのですが何故でしょうか?

CSKEPHPはver1.2です。
620nobodyさん:2010/06/28(月) 20:02:50 ID:???
<TABLE width="400">
htmlはpxいらねーよ
てか悪いことは言わん。この業界あきらめろお前は
621nobodyさん:2010/06/28(月) 20:26:44 ID:???
仕事とは限らないとおもた
622nobodyさん:2010/06/28(月) 20:27:47 ID:qHDwmPz9
>620
なるほど、うまくいきました。
ありがとうございました。
623nobodyさん:2010/06/28(月) 20:36:54 ID:???
仕事だろうと趣味だろうとなんでもいいやめろ
HTML/CSS/PHP/CakePHPこれらを切り分けもできずに
こんなところで糞な質問しちゃう奴なんざやめろ今すぐ。
624nobodyさん:2010/06/28(月) 20:44:55 ID:???
まあスレ違いではあるね
今後は気をつけるだろう
625nobodyさん:2010/06/28(月) 23:42:04 ID:???
こええよw
626nobodyさん:2010/06/28(月) 23:52:38 ID:???
みんな、メモリはどれくらい使っているのか知りたい。
1セッション当たり、10MBくらいは普通かな?
627nobodyさん:2010/06/28(月) 23:54:20 ID:???
>623
優しい奴だな。ちょっともえ
628nobodyさん:2010/06/29(火) 07:25:59 ID:???
HTMLで悩むならまずとほほを読んで来い。
あそこは世紀を超えての名サイトだ。
629nobodyさん:2010/06/29(火) 08:46:43 ID:???
〉〉623
これをリアルで言われて
言われたヤツやめちゃって
やめたヤツの仕事が俺に回ってきて
言ったヤツ知らん顔
俺涙目
630612:2010/06/29(火) 12:04:06 ID:???
>>615
結局やりたいことというのは
「同時にブラウザを複数立ち上げたときに、それぞれ別々に状態を保持しておきたい」
ということです。極端な話、ブラウザ1・ブラウザ2でそれぞれユーザー1・ユーザー2
で認証をしたら、それぞれのユーザーで独立して動作するイメージです。

実際に作っているアプリでは、認証情報・画面遷移情報・入力データなど、結構な量の
データを画面間で保持する必要があります。実現方法として考えているのは下記です。
1.URLにSession IDを埋め込み、それを基にServer側で使うべきSessionを切り替える
→携帯サイト向けのサンプルは見つかった。いまいち良いサンプルが見つからない
2.引き継ぐ情報をまとめてシリアライズ・暗号化してURL・POSTで渡す(極力Sessionは使わない)
→通信データサイズが結構な量になるかも・・・

こうしたほうが良い等ご意見ありましたらお教えください。。
631nobodyさん:2010/06/29(火) 12:16:19 ID:???
>>630
ん?>>616だけど完全に逆だと思ってた。
っていうか、違うブラウザなら、別のセッションだと認識されるのが普通だが、どんな環境でチェックしてるの?
FFとChromeでやってみたが、ふつうにそれぞれ独立してインクリメントされるよ??
632612:2010/06/29(火) 12:47:04 ID:???
>>631
こちらではIE8、FF、Chromeともに下記の動作となります。
時系列で書きます。

ブラウザ1を起動
ブラウザ2を起動
ブラウザ1で「http://sample.sakushima.net/Cake/sessions/」を表示→表示回数:1
ブラウザ2で「http://sample.sakushima.net/Cake/sessions/」を表示→表示回数:2
ブラウザ1でF5(リロード)→表示回数:3
ブラウザ2でF5(リロード)→表示回数:4
633612:2010/06/29(火) 12:55:56 ID:???
>>632
補足で、ブラウザ1・2ともに同じ種類のブラウザです。
もしかしたら616さん、ブラウザ1:FF・ブラウザ2:Chormeとか、
別のブラウザを立ち上げてるんじゃないかと。
634nobodyさん:2010/06/29(火) 16:46:35 ID:???
クライアント側でUAを変えるなどの小細工が許されないのなら、
サーバ側で何らかの識別データをGET/POSTで埋め込むのしか思いつかない。。
635nobodyさん:2010/06/29(火) 17:07:06 ID:???
>>633
うん。そうだよ。別のブラウザでやった。
同じブラウザのタブ別で別ユーザーだと認識させたいの?
そりゃまた無茶なことを、、、
636nobodyさん:2010/06/29(火) 17:11:36 ID:???
なにがしたいのかわかりません。
637nobodyさん:2010/06/29(火) 17:35:04 ID:???
Macで開発中にwebkitを使ってプレビューするソフト(codaとかCSSEditとか)を同時に使うと
セッションが切れちゃって確かに鬱陶しいけど、まあ開発中の一時的なもんだしなあ。
638nobodyさん:2010/06/29(火) 23:52:30 ID:???
CakePHPって新規案件でしか使えないよね。
639nobodyさん:2010/06/30(水) 00:49:39 ID:???
俺なんて5年くらい前に作ったデータ管理がファイルベースのシステムをcakeに移行中だ
データをmysqlに移行する以外は意外とめんどくさくない
640nobodyさん:2010/06/30(水) 15:36:49 ID:???
>>638>>617でFA
641nobodyさん:2010/06/30(水) 19:52:27 ID:???
modelを新しく作るたびに、毎回データベースにテーブルを作らないといけないのでしょうか?

Fatなコントローラーをmodelに集約しようと思い、
新しく scrape というモデルを作って、動かしてました。

ローカルでは普通に上手く行くのですが、
いざWEB上で動かすと、

Database table scrapes for model Scrape was not found.

というエラーメッセージが。。
642nobodyさん:2010/06/30(水) 20:10:45 ID:???
>>641
データベース 使わない model cakephp
でググるんだ
643nobodyさん:2010/06/30(水) 20:11:23 ID:???
あほっぽいのの相手はしたくないけど
modelで
var $useTable = false;
だったかをするとテーブルなくても怒られないけど?
644nobodyさん:2010/06/30(水) 20:13:05 ID:???
書く前にリロードすればよかった
すまそ
645nobodyさん:2010/06/30(水) 20:24:17 ID:???
>>642
>>643

解決しました!

初歩的すぎる質問どうもすみませんでした。。
646nobodyさん:2010/07/01(木) 04:37:27 ID:???
>>645
一応チュートリアルにもあるが、Cakeで始めにはまる落とし穴。
あと>>643とか使えないヤツだから気にするな。
647nobodyさん:2010/07/01(木) 10:24:02 ID:???
paginate()をカスタマイズしたいのですが、ソートが機能しなくて困っています。

モデルAのpaginate()の中で
SELECT * FROM a, b, c WHERE a.b_id = b.id AND b.c_id = c.id;
という形のSQLを発行しているのですが、
<th><?php echo $paginator->sort('c.name');?></th>
のリンクをクリックしてもソートされないのです。
モデルAとCはリレーションがないため、
paginate()の$order引数に 'c.name' => 'asc' が入ってこないようです。
どうすればいいでしょうか?
648nobodyさん:2010/07/01(木) 13:01:04 ID:???
チューとリアルとかマニュアルに書いてあることを人に質問するとか終わってるだろ
二度と来るな
649nobodyさん:2010/07/01(木) 16:03:56 ID:???
ionCube PHP Encoder等のソース暗号化ツールを適用させて
cakeを動かした例はあるでしょうか。

同業者からの依頼でcakeを使う予定なんですが、再利用される恐れがあるため
なんとかできたらと考えてます。
650nobodyさん:2010/07/01(木) 16:57:28 ID:???
>>649
ionCube Japan アシアル株式会社に電話して聞けばいいじゃん。
ただの商品じゃないんだし。
651nobodyさん:2010/07/01(木) 17:10:35 ID:???
>>649
使ってみたことあるよ
652nobodyさん:2010/07/01(木) 18:58:02 ID:???
\app\views\layoutsの中にベースデザインが入ってるctpファイルがあるんだけど
そのファイルのソース中にリンク、例えばhote.htmlがあると出力したときに

hoge.html?CAKEPHP=681a529c456e8da3f6a2e39219c8f4ca

と言う文字列が必ず付くのですがこれはどうすれば消せますか?
と言うか何のためにリンクに文字列が付いて出力されてるんでしょうか?
653nobodyさん:2010/07/01(木) 20:23:40 ID:???
>>652
それセッションIDだろ
session.use_trans_sid = 0にするか、セッション使わない設定にしたら?
654nobodyさん:2010/07/01(木) 21:58:57 ID:???
>>649
アプリの挙動が変わることもあるみたいだね。
655647:2010/07/01(木) 22:49:41 ID:???
$this->A->bindModel(array('belongsTo' => array('B', 'C')));
で動的に関連をセットすることでできました。
656nobodyさん:2010/07/03(土) 02:07:02 ID:???
MediaPluginでvideoファイル扱ってる人いる?
ffmpegもインストールしてやってるんだけど
初期から入ってるvideoのサムネイル設定なのに
Medium::make - Invalid instruction `VideoMedium::fitCrop()`.
とかなって死ぬ
なんか設定が足りないのかサポートされてないのか
というかMediaPluginと動画の話題が全然ぐぐってもヒットしないんだけどみんな使わないのかな
657nobodyさん:2010/07/03(土) 02:44:20 ID:???
ありゃ??でけた
一応書いておくと

filterの指定を↓見たいにしてたんだけど
array('fitCrop'=>array(100, 100), 'convert'=>'image/jpeg')
するとvideoのClassをよむからメソッドがなくて怒られる

まさかとは思ったけど順番変えて最初にconvertおくと
array('convert'=>'image/jpeg', 'fitCrop'=>array(100, 100))

ちゃんと変換してくれました。
スレ汚しすまんです。
658nobodyさん:2010/07/03(土) 04:16:09 ID:???
みんな動画扱わないのかな

ついでに汚します。寝たかったのにはまって一応解決?したんで

wmvをアップして画像とかflvとかに変換したかったけどできない。
mpgならできたのに・・・ってなって四苦八苦

で、MediaPluginのソースいじることになるんだけど
vendors/......../ffmpeg_video.php
で最初に定義されてるrequire['mimeTypes']の
mswmv
ってのを
ms-wmv
に変更したら動いた。

同じ階層にあるgetid3_video.phpでも同じように定義されてあるんだけど、
そこではms-wmvになってるんだよね。揃えてみたら動きました。
なんかよくわからんが一応解決です。
659nobodyさん:2010/07/03(土) 07:41:45 ID:???
最近CakePHPを学習しはじめた者です。
PHP自体は理解しており、MVCも理解しているつもりです。

とりあえず学習の定番と言えそうな本家(日本語)のチュートリアルをやってみました。
でもこれだけでは、その後独力でCakePHPの学習を推進していくチカラが得られませんでした。

チュートリアルのつぎのステップとしてお勧めな学習方法を教えてください。
(マニュアルを理解するには、チュートリだけでは知識が浅すぎると感じました)

よろしくおねがいします。
660nobodyさん:2010/07/03(土) 07:55:26 ID:???
>>659
何かアプリ作りましょう
実践して、詰まって、解決策を自分で見つけてるうちに使えるようになるよ
661nobodyさん:2010/07/03(土) 09:36:37 ID:???
テストプロジェクトとかじゃなしに、
実際の開発プロジェクトで、みんなadmin routingとか使う?
662nobodyさん:2010/07/03(土) 09:49:14 ID:???
>>660
チュートリアルをやれば、あとは独力ということですね。

でも、チュートリアルを一通りやっただけで、独力で解決策を見出しながら開発を
進めていくチカラが付いたとは思えないんですけど・・・

CakePHPは習得が簡単だと思っていましたけど、実はかなり敷居が高いのでは
ないかと思ってしまいます。
663nobodyさん:2010/07/03(土) 10:13:10 ID:???
>>662
それ、そもそもPHPの習得を一通りこなせていないのでは?
664nobodyさん:2010/07/03(土) 10:33:21 ID:???
>662
何でひっかかってるんだい?
チュートリアル+入門書だけでスタートアップは十分だと思うけどな・・・
665nobodyさん:2010/07/03(土) 12:03:57 ID:???
作成したテキストなどのファイルを一時的に保存しておくには
app/tmp/
の中に適当なディレクトリを作って保存する方法で構わないんでしょうか。

他に適切な配置場所があれば教えていただきたいです。
666nobodyさん:2010/07/03(土) 16:09:42 ID:???
1.3の$js->linkなりで、updateの複数指定って出来なくなりましたよね?
代替の書き方ってあるんでしょうか?
667nobodyさん:2010/07/03(土) 16:49:44 ID:???
>>659
cakeの実践アプリケーションの本でも買ったら?
あとはcakeの開発陣の人たちはgitとかで他人のコードを読みまくるのが大切と言ってたと思う

>>665
app/tmp/の中は基本的に消えちゃってもかまわないキャッシュファイルとかの置き場なので
作成したテキスト(がどんなものなのか知らないけど)がそういうたぐいのデータならそこでいいと思う

誰か>>618答えてくれー・・・
668nobodyさん:2010/07/03(土) 17:39:44 ID:???
>>659
PHPのサンプル本とかで「○○の作り方」ってのを一個一個おさらいしていったらいい
それができれば、あとはcakeの中でそれらをくっつけていくだけでしょ
669nobodyさん:2010/07/03(土) 21:12:12 ID:???
>>662
チュートリアルをそのまま殆ど写しただけで「終わりました」とか言ってないか?
そりゃ身に付いてるはずがない。
コピペすれば動くんだから、エラーの時の問題解決なんか出来るようになるわけないわな。

1から作るのがまだ辛いなら、チュートリアルアプリをなにか改造してみれ。
画面を増やすとか、レコード(テーブル)にカラム追加するとか、入力チェック追加するとか。
670nobodyさん:2010/07/04(日) 17:29:17 ID:???
CakePHPは独力での学習コストは高いよ。
マニュアルがうんこだから。
非公式のチュートリアルもロクなもんがないしな。
671nobodyさん:2010/07/04(日) 17:46:20 ID:???
object思考なにそれ?なおれが習得できたんだからそうでもないと思うけどな
672nobodyさん:2010/07/04(日) 18:30:42 ID:???
CakePHPは独力での学習コストが高いと思うのは、
お前にとってCakePHPがはじめて使うフレームワークだからだろ。
673nobodyさん:2010/07/04(日) 19:01:49 ID:???
よし学習コストが高いフレームワークを教えろ早く
674nobodyさん:2010/07/04(日) 19:19:56 ID:???
.netはコスト高いぜ
675nobodyさん:2010/07/04(日) 19:30:42 ID:???
struts
676nobodyさん:2010/07/04(日) 19:38:11 ID:???
フレームワークが初めての人向けのチュートリアル
と、
フレームワークを既に知っている人向けのチュートリアル
があると、普及が促進されるかもね。
677nobodyさん:2010/07/04(日) 19:43:15 ID:???
前にも誰か言ってたけど
バッドノウハウ的なもんがちょっと多いかなとは思う
678nobodyさん:2010/07/04(日) 20:39:01 ID:???
>>674
.netはコスト低いだろ。
といってもmsの掌で踊るようなコードを書いてる限りだが。
679nobodyさん:2010/07/04(日) 23:19:50 ID:???
チュートリアルと、実際に作るアプリの間に大きなギャップがあるのは確かだな。
チュートリアルを終えて、実際のアプリを作っていくうえで
「ここはどうやるんだろう」ということを何回も調べなければならない。
ま、どんなフレームワークでもそうだが、Cakeはチュートリアルが薄すぎる。
>>662が言っているのもそういうことだろう。
680nobodyさん:2010/07/04(日) 23:39:54 ID:6la4DkIe
チュートリアルが薄いっつーのもあるけど
実際に開発通じての経験から言うと
フレームワークの設計の難に由来してる問題点も少なくないなと思った
よく知られてる大きなプロジェクトとかが
他のへ移行してしまうのは
やっぱそういった事も関係してるだろうなと思ったよ
681nobodyさん:2010/07/05(月) 00:27:13 ID:???
CakePHPさわって、他のMVCフレームワークさわってみれば良いんじゃないの?
遠回りかもだけど、それぞれの似ているようで違う仕組みだから、より理解しやすいかも。
そして、CakePHP以外に合うものが見つかるかも。
682nobodyさん:2010/07/05(月) 01:12:10 ID:???
俺ちゃんとつかったのはCakeが初めてなんだけど、他のFWに比べてCakeの良い点って何でしょう?
Javaの何かと比べると、覚える事が意外と少ないな、という印象なんですが・・・
683nobodyさん:2010/07/05(月) 01:19:57 ID:???
単純なCRUDアプリを作る上では、これ以上手順は減らせないだろうというくらいに
簡単な手順で作れるよね。

手を入れようとすると大変だけど。
684nobodyさん:2010/07/05(月) 03:55:03 ID:???
でもWebに情報量多いよね
ぐぐればたいてい解決してる
685nobodyさん:2010/07/05(月) 07:40:52 ID:???
>>680
移行先は何が多いの?
686nobodyさん:2010/07/05(月) 12:20:49 ID:???
1.3で、Shellからviewのレンダリングを使うにはどうすればいいんですか?
レンダリングしたものを、ファイル出力するシェルプログラムを組みたいのですが…。
687nobodyさん:2010/07/05(月) 12:56:52 ID:???
688nobodyさん:2010/07/05(月) 16:54:56 ID:???
=3が絵文字みたいでかわいい
689nobodyさん:2010/07/05(月) 17:52:47 ID:???
お前のほうがかわいい
690nobodyさん:2010/07/05(月) 18:02:13 ID:???
:=3
691nobodyさん:2010/07/05(月) 20:02:09 ID:???
ヘルパーで出力するものをXHTMLじゃなくてHTMLにできない?
692nobodyさん:2010/07/05(月) 20:37:48 ID:???
なにいってんのこのバカ↑
693nobodyさん:2010/07/05(月) 20:59:19 ID:???
>>692
nl2brで言う、is_xhtmlみたいなオプションないの?って意味
694nobodyさん:2010/07/05(月) 21:17:00 ID:???
ソースみじけえから読んでこいやバカ
http://api.cakephp.org/view_source/html-helper/

オプションなかったら継承してtag書き換えるとか勝手にしろやアホ
695nobodyさん:2010/07/05(月) 23:22:21 ID:???
このスレ専門的な単語が飛び交ってレベルたけぇわ
696nobodyさん:2010/07/06(火) 00:53:44 ID:???
>>694
説明不足ですまん、ソース追ったけど見つけられなかったんだ
継承して書き換えもいいけど、末尾の3文字削って>付け足すわ
697nobodyさん:2010/07/06(火) 11:07:43 ID:???
postgresでgetLastInsertIDを使う場面で、
複数タスクが走っている場合に
別のタスクのidを取得しちゃう可能性がある。っていう記述を
見つけてしまったんですが、
対処方法はどういったやりかたが考えられますか?
698nobodyさん:2010/07/06(火) 11:24:19 ID:???
何それ
糞だな
699nobodyさん:2010/07/06(火) 11:26:35 ID:???
その見つけた情報ソースを教えろ
700nobodyさん:2010/07/06(火) 11:40:57 ID:???
getLastInsertID
でググったらでてきました
701nobodyさん:2010/07/06(火) 12:03:46 ID:???
だからどこだよ?
702nobodyさん:2010/07/06(火) 12:56:26 ID:???
703nobodyさん:2010/07/06(火) 13:57:00 ID:???
なんかギスギスしてるな
704nobodyさん:2010/07/06(火) 14:58:46 ID:???
どこだどこだと聞いといて後はシカトかw
705nobodyさん:2010/07/06(火) 15:01:58 ID:???
「CakePHPによるwebアプリケーション開発」
p..64で本のように表示できなくなりました。どなたかp62-64の
誤りを教えてください。スクリプトは付属CDのをそのままコピーしている
のですが・・・
706nobodyさん:2010/07/06(火) 15:03:52 ID:???
p.60 p.58-60の誤りです。hello/sendformのページが表示されるところ
sendform画表示されてエラーになってしまいます>__<
707nobodyさん:2010/07/06(火) 15:06:25 ID:???
>p..64で本のように表示できなくなりました。

どう表示されているかぐらい書こうや
708nobodyさん:2010/07/06(火) 15:11:06 ID:???
>>704
質問の仕方を教えてやってるだろうが。
706もそうだが、聞きたいならどの情報に対して、何をしたらどういう状況になってるかくらい書け。


答えられるかは別問題だ。
709nobodyさん:2010/07/06(火) 15:18:17 ID:???
Missing Controller
error: SendFormContoroller could nat be found.

です
http://localhost/cake/sample/hello/sendForm?text1=なんたら(UTFコンバートされた文字列)
というURLが表示されるところ
hello/
が欠けたURLが表示されてエラーになるのです。

index.ctp
で<form method="get" action="/sendform">
と送っているのですが、hello_contorollerのfunctionで sendformが定義されているのですが、
sendform_controllerがないとエラーがでています。・・・・
710nobodyさん:2010/07/06(火) 15:20:44 ID:???
<form method="get" action="/sendform">
でした。解説はこのコードを前提に修正していく記述なので止まってます。
711nobodyさん:2010/07/06(火) 15:22:33 ID:???
頭をお借りして申し訳ないです。何がおかしいのかまだ初歩なのでわからないです。・・・
712nobodyさん:2010/07/06(火) 15:26:23 ID:???
×<form method="get" action="/sendform">

○<form method="get" action="/sendform">
713nobodyさん:2010/07/06(火) 15:27:06 ID:???
途中で書き込んでしまった。
すまん
×<form method="get" action="/sendform">

○<form method="get" action="./sendform">

/sendformの前にドットを入れてみる。
714nobodyさん:2010/07/06(火) 15:27:36 ID:???
>>709
action="/hello/sendfom" でどう?
715nobodyさん:2010/07/06(火) 15:28:37 ID:???
○<form method="get" action="./sendForm">
です。たびたび申し訳ないです。
これをaction="./hello/sendForm">
にしてもだめなのです・・・
716nobodyさん:2010/07/06(火) 15:35:38 ID:???
action="/hello/sendForm">

どっとなし。

これでもだめ??
717nobodyさん:2010/07/06(火) 15:36:27 ID:???
>>715
勝手にふたつのレスを合わせるな
.sendForm
or
/hello/sendForm
でどうかと>>713>>714でそれぞれ言われている

そして、その場合、アクション名は sendForm() なんだろうね?
718nobodyさん:2010/07/06(火) 15:36:53 ID:???
あ、またかぶったw
719nobodyさん:2010/07/06(火) 15:37:14 ID:???
だめです同じエラーがでてしまいます。なぜURLが省略されてしまうのでしょうか?
720nobodyさん:2010/07/06(火) 15:37:47 ID:???
>>717の前者はスラッシュ抜けてた ./sendForm
721nobodyさん:2010/07/06(火) 15:39:08 ID:???
アクション名というか
HelloControllerで定義しているfunctionは
index()と sendForm() です。
722nobodyさん:2010/07/06(火) 15:39:21 ID:???
>>719
debug( $this->webroot );
で、きちんとwebrootまでのパスがでるかい?
723nobodyさん:2010/07/06(火) 15:42:43 ID:???
debug( $this->webroot );

をどんなファイル名にしてどこで表示させればいいのでしょうか?
724nobodyさん:2010/07/06(火) 15:45:53 ID:???
>>723
どこでも良いけど index() の中とか
725nobodyさん:2010/07/06(火) 15:46:51 ID:???
だめだこりゃ
こんなのほっとけ
726nobodyさん:2010/07/06(火) 15:47:09 ID:???
indexのなかだとそのまま
debug( $this->webroot ); と表示されてしまいます>__<
727nobodyさん:2010/07/06(火) 15:54:51 ID:???
>>726
うまくいかないなら「cakephp debug」でぐぐって、まず指示されたことが何かを理解しようとしなきゃ
728nobodyさん:2010/07/06(火) 15:56:38 ID:???
PHPすらわかってないアホにどうしろと
ほっとけって
729nobodyさん:2010/07/06(火) 16:04:38 ID:???
>>708
>>697の質問でソースの出所が必要とは思わないがな

んな堂々と「答えられるかは別問題だ」とか言われてもw
730nobodyさん:2010/07/06(火) 19:05:49 ID:???
書籍で思い出したけどCakePHP 1.3によるWebアプリケーション開発って本が出てた
731nobodyさん:2010/07/06(火) 19:45:35 ID:lebgmiXf
ビュー側でSTARTボタンにより、データをPOSTしてコントローラ側で受け取り
ビュー側でのタスクのインターバルを変更したいのですが
この場合、$_POST('a')で受け渡せるのですが、もっとスマートに渡せる方法は
あるでしょうか?
また、コントローラのアクション内で、変数を使用すると動作はするもののUndefined・・・
未定義警告が出てしまいます。そもそも変数はどの場所でどのように、定義したら
いいのでしょうか?
アクション内で、$_POST('a')を使用して未定義警告をださないにはどうしたらいいですか?
732nobodyさん:2010/07/06(火) 20:01:51 ID:???
>>730
秀和のcake本の1.3対応版か
前回のはレビュー良かったけど、すぐ売り切れだか絶版になってて実物見たこと無いわ
733nobodyさん:2010/07/06(火) 22:56:11 ID:???
今日本屋でその本みてきた
なかなか丁寧な解説でよさげ
734nobodyさん:2010/07/06(火) 23:32:09 ID:???
生成されるキャッシュファイルの名前が変だなーと思ったら1.3は環境によっては
slug生成に問題出るみたいね

CakePHP 1.3のキャッシュやスラッグ(Inflector::slug)に要注意 - (DxD)∞
http://dxd8.com/archives/209/
735nobodyさん:2010/07/06(火) 23:53:22 ID:???
1.3の$session->flash()にechoが必要で小一時間ハマった。
736nobodyさん:2010/07/07(水) 20:45:57 ID:6d/8d4Je
>731
未定義警告ですが仕方ないので、issetで判定して処理して消しました。
737nobodyさん:2010/07/07(水) 21:18:42 ID:???
CakePHPって新規開発にしか使えないよね。
何故なら改修の場合は大抵DBにまで手は入れないから。
738nobodyさん:2010/07/07(水) 21:58:43 ID:???
何故ならはいいが理由になってなくね?
まあ改修案件でわざわざCakePHP使うとこはないだろうが。
739nobodyさん:2010/07/07(水) 22:33:30 ID:???
てか何回コピペするつもりか知らんが
FW使ってないシステムに後からFW突っ込むことなんて
Cakeに限らずできないと思うが
740nobodyさん:2010/07/07(水) 22:42:44 ID:???
単なる改修案件を、うまく丸め込んでリプレイスに持ち込めばこっちのもんよ
741nobodyさん:2010/07/07(水) 23:10:09 ID:???
動きゃ何でもいいんだよ
742nobodyさん:2010/07/08(木) 01:27:22 ID:jw2HbYMj
表示が重い(遅い)のって仕様ですかね?
1.3.2をダウンロードしまして、coreの設定だけを変えて
Viewに「Hello World」と表示する簡単なページを出力させたのですが、
読み込みに2,3秒かかります。

ローカルのWindowsXP・PHP5.2.5上でテストしているのですが、
何か早く処理させる方法ってあるのでしょうか?
743nobodyさん:2010/07/08(木) 01:43:46 ID:???
お客様の中にエスパーはいらっしゃいませんか?
744nobodyさん:2010/07/08(木) 01:46:33 ID:???
俺の念動力はどうやら出番無しのようだな
745nobodyさん:2010/07/08(木) 02:11:53 ID:???
あるよ
ローカル以外で実行
746nobodyさん:2010/07/08(木) 02:27:04 ID:jw2HbYMj
う〜ん、一般的に外部サーバよりもローカルの方が速いと思うのですが。
ネットワークの問題じゃなくて、Cakeの問題だと思うんです。

あと、最低限の開発環境とやった事を記載しているので、
エスパーじゃないと答えられないという事もない気が・・・
747nobodyさん:2010/07/08(木) 02:43:02 ID:???
>>746
志村、キャッシュキャッシュ!
748nobodyさん:2010/07/08(木) 02:49:19 ID:???
>>742
普通は単純なページ表示に2,3秒もかからん
ボトルネックはどこなのか自分で特定するんだ
749nobodyさん:2010/07/08(木) 02:50:50 ID:???
ローカルの方が遅いよ
750nobodyさん:2010/07/08(木) 02:53:55 ID:???
WindowsXP・PHP5.2.5

全然足りないだろ
CPU、バストサイズ、メモリくらいまでは書け
751nobodyさん:2010/07/08(木) 02:56:36 ID:jw2HbYMj
>>748
ですよね・・。
本当にファイル解凍してcore.phpのSecurity.salt変更して
単純なページ表示しただけなんです。
自作のフレームワークやPEARでこういう事がなかったので
CakePHPの問題だと思っています。

とりあえず、良くある問題じゃないみたいなので、自分で解決します。

>>749
ネットに繋げる必要ないのにですか?それは信じがたいですね。
752nobodyさん:2010/07/08(木) 02:58:34 ID:jw2HbYMj
>>750
CPUやCore 2DUOで2GBのローカルサーバです。

というか、サーバスペックが数年前だとしても
Hello Woldという1行テキスト表示だけで、2,3秒はあり得ないと思うんですよね・・。
ネタ扱いされているという事は、皆さんの環境ではそうでもないと言う事かな。
753nobodyさん:2010/07/08(木) 03:07:17 ID:???
てか普通にそんな遅かったとして
そこらで使われるわけねーだろ
754nobodyさん:2010/07/08(木) 03:08:08 ID:???
なんども読み込んでもその秒数?
とりあえずDebugKit入れてどこで時間食ってるか計測してみな

あとConfigure::writeのdebugを0にしてやってみると速くなったかも

おれの開発環境WinXP+Xamppでも2〜3秒は普通にあるよ。
HelloWorldはさすがにそんなにかからないと思うけど。
755nobodyさん:2010/07/08(木) 03:09:56 ID:jw2HbYMj
>>754
わかりました。

あと、さくらのサーバに入れたら違和感なく表示されました。
ですので、サーバの問題だと思います。
CakePHPの問題じゃないと言う事は、自分が間違っていました。すみませんでした。
756nobodyさん:2010/07/08(木) 08:13:32 ID:???
xamppで実行すると断然遅いのはお約束
757nobodyさん:2010/07/08(木) 10:08:41 ID:???
だからローカルだと遅いといったろが!このやろう!!
758nobodyさん:2010/07/08(木) 10:16:08 ID:???
Linux上だと普通
759nobodyさん:2010/07/08(木) 10:25:56 ID:???
だからCakeが遅いんじゃないっていったろがこのやろー
760nobodyさん:2010/07/08(木) 10:30:37 ID:???
Windowsで開発すなw
761nobodyさん:2010/07/08(木) 10:55:14 ID:???
762nobodyさん:2010/07/08(木) 10:55:40 ID:???
モデルのテストケース書くときって、バリデーションのテストケースまで書いてる?
バリデーションの組み合わせをテストするだけで結構な量のテストになるのだけど

どこまでテストするべきか、それともバリデーションのテストは不要か悩む
763nobodyさん:2010/07/08(木) 14:26:52 ID:???
session関連で、ブラウザがchromeの時だけ発生している現象で困っています。

$data['1']['1'] = 'A';
$data['1']['2'] = 'B';
$data['2']['1'] = 'A';
$data['3']['2'] = 'B';
といった配列を
$this->Session->write('data',$data);
で保存し、
次のページで
$data = $this->Session->read('data');
とやったあとで$dataを確認すると、

$data['1']['1'] = 'A';
$data['1']['2'] = 'B';
だけになっているのです。

$data['2']['1'] = 'A';
$data['3']['2'] = 'B';
がロストしています。

chromeでセッションIDの受け渡しにクッキーを使っているときだけ発生します。
IEでは問題ありません。
セッションIDをURL埋め込みにすると、問題なく動作するようです。
でも可能な限り埋め込みは使いたくないのです。

何かご存じの方、ご意見いただきたいです。
よろしくおねがいします。
764nobodyさん:2010/07/08(木) 14:31:31 ID:???
>763
どういう条件で抜け落ちるのかわららん
$data['1']['3'] = 'C';
とか
$data['1']['3'] = 'A';
を追加してみるとか
$data['1']['1'] = 'A';
$data['1']['2'] = 'B';
$data['2']['1'] = 'C';
$data['3']['2'] = 'D';
だとどうなのかとか
765nobodyさん:2010/07/08(木) 15:20:14 ID:???
条件がさっぱりわからんのです。
おっしゃるような追加もいろいろやってみたのですが
法則がつかめません。
766nobodyさん:2010/07/08(木) 15:45:02 ID:???
今気がついたのですが、
セッションを保存しているファイルを監視していまして、
sess_****
というファイルが
IEの場合は、二つ作られるのに対して、
chromeだと三つ作られています。
その三つ目のセッションファイルの中身がすでにデータ抜け落ちているようで、
そちらを優先してreadしているみたいです。
二つ目だとデータが保持されています。
767nobodyさん:2010/07/08(木) 16:17:09 ID:???
外部ファイル読み込んでるけど、そのファイルがないからCakeが起動してて、そこでセッション発行してるとか
そんな感じの何かを感じた
768nobodyさん:2010/07/08(木) 16:23:14 ID:???
なるほど、外部ファイルですか。
ソースを確認してみます。
769nobodyさん:2010/07/08(木) 22:52:18 ID:???
>>739
トンチンカンなこと言ってるなよ。
改修案件・リプレイス案件で使えないようなFWなんて
使い物にならんね。
770nobodyさん:2010/07/08(木) 23:05:23 ID:???
>>769
CAKEがつかえねーと思うなら他にもいっぱい良いフレームワークがあるのだから、そっちに行けばいい
771nobodyさん:2010/07/08(木) 23:14:17 ID:???
だよな
少なくともRailsとかCakeみたいに規約で縛るタイプのフレームワークは
既存のシステムに合わせるのは向いてないんだから
それに向いてるフレームワークを使えばいいだけだ
772nobodyさん:2010/07/09(金) 08:32:46 ID:???
あえて釣られてみるが・・・
>改修案件・リプレイス案件で使えない
なぜそう思う?
773nobodyさん:2010/07/09(金) 09:00:53 ID:???
DB構成が特殊な案件なんだろ
命名規則が面倒とか
774nobodyさん:2010/07/09(金) 11:58:55 ID:???
俺みたいな優柔不断の場合、
Cakeのようにガチガチに縛った仕様の方が
使いやすい時がある。
775nobodyさん:2010/07/09(金) 12:08:30 ID:???
いま、そういう話ししてるんじゃないよね?
776nobodyさん:2010/07/09(金) 12:41:48 ID:???
だよね
777nobodyさん:2010/07/09(金) 12:43:01 ID:???
亀甲縛りに見えて発情したじゃねーか
778nobodyさん:2010/07/09(金) 12:49:05 ID:???
ガチムチだろそれ言うなら
779nobodyさん:2010/07/09(金) 13:38:36 ID:???
よくフレームワーク使う理由に「他人もわかるようにするため」
みたいな理由聞くけど、フレームワークだからって簡単に分かるか?
やっぱり、個々の作り方に依存すると思うんだよな。
780nobodyさん:2010/07/09(金) 13:42:55 ID:???
だよね。
781nobodyさん:2010/07/09(金) 14:01:50 ID:???
Cakeは配列だらけなのがうざい

完全OOPでCake並に使いやすいFWがほしいな
782nobodyさん:2010/07/09(金) 14:09:55 ID:???
>>779
依存するような作り方はしないように努めるもんだ
何使っても自分のことしか考えられなければ同じこと
783nobodyさん:2010/07/09(金) 14:13:15 ID:???
Akelosまじオススメ!Cakeのような出来損ないのFWとは違うぜ?
784nobodyさん:2010/07/09(金) 14:19:35 ID:???
>>782
それはそうなんだが、そう言いだしたらどの書き方でも一緒だよな?
それこそ自作フレームワークでも、コメントちゃんと書いてれば。
785nobodyさん:2010/07/09(金) 14:26:13 ID:???
>>784
自作でも国際的に主流になってる書き方を心がければ同じだろうな
そうした仕組みを共有しやすくしているのがFrameWorkだろ
786nobodyさん:2010/07/09(金) 15:01:55 ID:???
ほう Akelos
ぱっと見はCakeに似ているようだが

もうちょっと調べてみる
787nobodyさん:2010/07/09(金) 15:25:51 ID:???
よくある主流になれなかったFWだね。

FWは中身でなく、普及率が鍵。
788nobodyさん:2010/07/09(金) 15:45:48 ID:???
よさそうだけど普及率いまいちだね

開発スピードも遅いみたいだし

ただ、Cakeの配列だけはどうにかならんのか

Cake2まだー?
789nobodyさん:2010/07/09(金) 15:52:57 ID:???
Lithiumは?
790nobodyさん:2010/07/09(金) 15:57:14 ID:???
1.2から1.3を躊躇してるんだけど移ったほうがいいかな?
ここはスルーしてCake2なりリチウムなり待ったほうがいいかな?
みんなどんな感じなの?
791nobodyさん:2010/07/09(金) 16:15:30 ID:???
>>790
俺なら1.3もイジるし、リチウムもいじる。
自分で触んなきゃ何もわからんから。

2chは参考程度じゃね。
792nobodyさん:2010/07/09(金) 16:18:53 ID:???
Yiiとかはどう?

設置しやすそうだし、現状ではよさげなんだが
793nobodyさん:2010/07/09(金) 17:08:50 ID:???
移行するって簡単なようで難しいよな。

俺も自作FWからCake1.3に移行しているけど、
手癖がある分、以降が困難だ。
しかも、自分で作ったコードを誰かと共有して使うかって言ったら
その可能性はかなり低いだろうし。自作でもいい気がしてくる
794nobodyさん:2010/07/09(金) 18:04:28 ID:???
Cake2は配列残るべ?
795nobodyさん:2010/07/09(金) 18:10:41 ID:???
残るけどfindの戻り値はオブジェクトになるとか
796nobodyさん:2010/07/09(金) 18:12:42 ID:???
>>792
sqlite使えるのは便利
797nobodyさん:2010/07/09(金) 18:20:59 ID:???
Yiiは予約語少ないのがいいね

ただ流行るかは未知数
個人的には流行って欲しい

CakePHPは便利ちゃあ便利なんだが
CMS界のWPのような存在になったらそれはそれで困る
798nobodyさん:2010/07/09(金) 18:21:55 ID:???
>>795
中途半端にオブジェクトにされてもな
引数について言及されてないってことは、引数は配列のままなんでしょ?
799nobodyさん:2010/07/09(金) 18:24:34 ID:???
>>797
>CMS界のWPのような存在になったらそれはそれで困る
なぜに?
800nobodyさん:2010/07/09(金) 18:28:05 ID:???
>>798

たぶん、そのままなんだろうねえ…


>>799

外見はいいけど中身が中途半端&時代遅れ
CMSはまだいいが、FWで中身が中途半端&時代遅れだとかえって使いにくい
801nobodyさん:2010/07/09(金) 18:34:55 ID:???
CakePHPは予約語が多すぎたりでメソッド名ださくなるしな
そうはいってもライブラリも多いから使ってるんだけどなw
802nobodyさん:2010/07/09(金) 18:52:56 ID:???
yiiムズいな
803nobodyさん:2010/07/09(金) 19:53:49 ID:???
確かにWordpressは時代後れだよな

でも、使う側(プログラミングしない人)から見ると
動くし、プラグイン一杯あるから使うんだろうな
804nobodyさん:2010/07/09(金) 20:13:50 ID:???
WordPressに変わる便利で流行るCMS公開したらいいよ
805nobodyさん:2010/07/09(金) 21:38:34 ID:???
WPって時代遅れなのか?
MTが時代遅れって言うのならわかるけど、CMSとしてはともかくブログシステムとしてWPは
最高峰だと思っていたんだが…
そんな俺が時代遅れなんだろうか
806nobodyさん:2010/07/09(金) 21:44:10 ID:???
Wordpressはいまや世界一のブログシステムだよ。
Movabletypeからかなりの人が乗り換えてる。

最新版は、複数のブログを単一のシステムで構築できるようになったから
ますます普及するんじゃないかな。
807nobodyさん:2010/07/09(金) 22:26:54 ID:???
言語と同じだよ
用途で使い分ければいいだけ
808nobodyさん:2010/07/09(金) 23:05:12 ID:???
用途かぶってるだろ?
809nobodyさん:2010/07/09(金) 23:50:34 ID:???
でも、ソースはとてもMVCとは言えなく無いか?
810nobodyさん:2010/07/10(土) 00:00:14 ID:???
誰もMVCなんて言ってない気もするが
811nobodyさん:2010/07/10(土) 00:12:04 ID:???
MVCって言葉を覚えたてなんだろうな
812nobodyさん:2010/07/10(土) 00:23:55 ID:???
ごめん。フレームワークの事だった・・・

てか、MVC覚え立てならCakeのスレ来ないだろ
813nobodyさん:2010/07/10(土) 00:35:25 ID:???
んじゃそれぞれのスレでやるってことで
814nobodyさん:2010/07/10(土) 00:42:04 ID:???
>ごめん。フレームワークの事だった・・・
これでも意味わかめ
815nobodyさん:2010/07/10(土) 00:42:42 ID:???
フレームワークって言葉を覚えたてなんだろうな
816名無しさん@そうだ選挙に行こう:2010/07/10(土) 11:29:58 ID:???
paginationのカスタムで挫折した・・・

モデルに関数作って上書きするってところまではわかるが、
独自SQLを反映させられない・・・難しすぎ
817名無しさん@そうだ選挙に行こう:2010/07/10(土) 16:04:52 ID:???
cakephpのpaginate使いにくいよな

どうして
$this->Model->paginate()
って使い方にしなかったのか理解に苦しむ
818名無しさん@そうだ選挙に行こう:2010/07/10(土) 16:37:18 ID:v/ICs0IK
書籍 CakePHPによる実践アプリケーション開発で勉強しています。
P82-84 バリデーションルールの追加で
var $validate = array(
'from' => array(
'date_format' => array('rule' => array('datetime'), 'required' => true),
'compare_from_to'=> array('rule' => array('compareFromTo')),
'not_duplicate_schedule' => array('rule' => array('isDuplicate'))
中省略
function isDuplicate($value) {
$from = $this->data[$this->name]['from'];
$to = $this->data[$this->name]['to'];
$conditions = array('or' => array(
array("from BETWEEN ? AND ?" => array($from, $to)),
array("to BETWEEN ? AND ?" => array($from, $to))
));
if($this->id) {
$conditions[$this->alias . '.' . $this->primaryKey] = '!= '.$this->id;
}
$count = $this->find('count', compact('conditions'));
return $count == 0;
}

この中の $conditions[$this->alias . '.' . $this->primaryKey] = '!= '.$this->id; で
aliasとは何が入るのでしょう? 漠然と同レコードのIDを排除して比較してるような
気はしますが、$condtionsの2番目配列には何がはいるのでしょうか?


819名無しさん@そうだ選挙に行こう:2010/07/10(土) 17:23:31 ID:???
>>818
見た感じ$this->aliasはisDuplicateの呼び出し元のモデル名が入るんじゃね?
820名無しさん@そうだ選挙に行こう:2010/07/10(土) 22:13:41 ID:oMY+XuqK
クックパッド
http://blog.kushii.net/archives/1350951.html
http://www.red-mount.com/blogs/show/ruby_on_rails_cookpad

ついに月次訪問者でツイッターがmixiを抜いた!
さらにツイート数で米国を逆転か?:in the looop:ITmedia オルタナティブ・ブログ
http://blogs.itmedia.co.jp/saito/2010/06/post-4bfd.html
http://techwave.jp/archives/51473193.html
http://techwave.jp/archives/51476110.html

Twitter検索急増中【ループス斉藤徹】 : TechWave 
http://techwave.jp/archives/51475780.html
Twitter共同創業者のBiz Stone氏は,
Twitterの一日あたりの検索回数が8億回に達したとコメントした。

ウィリアム氏がOdeo内で始めた小さなプロジェクトが「Twitter」だ。
Ruby on Railsを使って2週間で最初の動くバージョンを作り上げたという。
http://www.atmarkit.co.jp/news/200711/16/twitter.html

リクルート メディアテクノロジーラボ
「Railsサイト安定運用の心構え 〜8つのサービスから学ぶ」
http://b.hatena.ne.jp/entry/www.nicovideo.jp/watch/sm8258661
http://gihyo.jp/news/report/01/rubykaigi2009/0002?page=4

今では、ビッダーズについては、バックエンドはもうRailsでサクっと作っていこうという方向になっています。
広告のシステムもどんどん改善して、フェーズ3や4をやっていますし、それ以外の部分もRailsで書き直しています。
Rubyはシンプルに作れるし、自動テストが作りやすいのも良いですね。
http://www.dena.jp/recruit/sp/engineer/interview/hanabe.html
821名無しさん@そうだ選挙に行こう:2010/07/11(日) 11:20:41 ID:???
で、それとCakePHPとなんの関係があるの?
822名無しさん@そうだ選挙に行こう:2010/07/11(日) 12:07:43 ID:???
githubとかで参考になるプロジェクトってある?
1.2で。
823nobodyさん:2010/07/12(月) 17:41:22 ID:???
みなさん、CakePHPを仕事で使ってるんですか?
824nobodyさん:2010/07/12(月) 17:50:23 ID:???
そうですがなにか
825nobodyさん:2010/07/12(月) 18:06:31 ID:???
羽田のサイトはcakePHPでできてるぞ
826nobodyさん:2010/07/12(月) 18:10:20 ID:???
誰だよ
827nobodyさん:2010/07/12(月) 18:20:47 ID:???
俺だよ俺
828nobodyさん:2010/07/13(火) 00:18:32 ID:???
query() 使うとテーブル名がキーにセットされるじゃないですか。
テーブル名に別名(Hogeとか)付ければいいのだけど、From句にサブクエリを使った場合はこの別名すら読んでくれなくないですか?
829nobodyさん:2010/07/13(火) 11:50:34 ID:mYlx8y+I
elements のなかで親ビューで設定した変数を使う方法を教えてください ループの中身をインクルードしたいです
830nobodyさん:2010/07/13(火) 11:54:08 ID:???
引数で渡せる。

マニュアルにもあるよん。
http://book.cakephp.org/ja/view/97/Elements
831nobodyさん:2010/07/13(火) 12:03:54 ID:???
マニュアルも読まないで人に聞くな
チュートリアルもこなさないで人に聞くな
アホばっかり
832nobodyさん:2010/07/13(火) 12:53:53 ID:???
GROUP BYを指定するには、1 = 1 GROUP BY xxx って指定する以外に方法ありますか?
833nobodyさん:2010/07/13(火) 13:38:34 ID:???
バージョンは?
マニュアルに書いてあるっしょ
optionsにarray(group=>*)
834nobodyさん:2010/07/13(火) 14:02:30 ID:???
マニュアルで探すと時間かかるじゃん?
835nobodyさん:2010/07/13(火) 14:12:21 ID:???
そうでもないよ
ってか釣り堀はここじゃない
836832:2010/07/13(火) 14:13:28 ID:???
>>833
ありがとう。
あれ?もしかして、1.2以降はgroupが使えるようになっているのか…。
1.1で、使えなかったから標準ではサポートされていないのかと思いました。
すいません。
837nobodyさん:2010/07/13(火) 14:13:37 ID:???
ここで聞く方が誰かが答えるまで時間がかかるし、そもそも答えが返ってこない可能性もあるのに
838nobodyさん:2010/07/13(火) 14:54:11 ID:???
マニュアルは分かりづらいよ。
PHPのマニュアルほど、整理されてないし。
839nobodyさん:2010/07/13(火) 15:01:43 ID:???
>>838
PHPのマニュアルほどって
無茶言うなw
840nobodyさん:2010/07/13(火) 15:11:04 ID:???
まにゅあると
http://api.cakephp.org/classes
ここ読めば大抵分かるなんならそのままリンクされたソース読めばいい。
841nobodyさん:2010/07/13(火) 17:42:59 ID:???
findとかpaginationとかFormヘルパーとか
似たような物作って自家製フレームワーク作ってるんだけどやたら難しい。

CakePHPからWebサイトに必要な機能を省いた
軽量版が欲しかったんだが、素直にCakePHP使った方が良いのかな・・・
842nobodyさん:2010/07/13(火) 17:54:53 ID:???
CakePHPが重くて困る場面でなきゃ
既存のものを使わない理由はないな
843nobodyさん:2010/07/13(火) 18:03:14 ID:???
既存のはpaninationの使い方がどうも難しいんだよな・・・。
あと、配列書きまくらないと設定できないというのも。

重くて困るという事はないが、xdebugした時のログを見ると
無駄な部分も多いんじゃないかなって思うんだよな。
844 [―{}@{}@{}-] nobodyさん:2010/07/13(火) 18:04:18 ID:???
オレオレフレームワークほど無駄なものはない
845 [―{}@{}@{}-] nobodyさん:2010/07/13(火) 18:05:54 ID:???
どうしてもなら自家製paginationとして
ヘルパーやらコンポーネントやらを作ればいい。

オレオレフレームワークほど犬も喰わんものはない
846nobodyさん:2010/07/13(火) 18:29:41 ID:???
オレオレフレームワークって言っても、俺が使うからなw

バリデーションの処理(モデルとの連携)が難しいんだが
ま、限界を感じたら845の言うようにするよ。
847nobodyさん:2010/07/14(水) 00:26:44 ID:sCETZCgF
database.phpのデータベース接続情報を
コントローラーから参照するのって、どうすればいいのでしょうか?
staticじゃないから、DATABASE_CONFIG::$default
では駄目ですし・・。
848nobodyさん:2010/07/14(水) 15:50:04 ID:???
>>847
ConnectionManager::getDataSource($this->(モデル名)->useDbConfig)
じゃだめ??
849nobodyさん:2010/07/14(水) 16:50:30 ID:sCETZCgF
>>848
駄目です・・。「Class 'ConnectionManager' not found」
というようにクラスがないと出ます。

ソースはTestControllerのindex内に
$config = ConnectionManager::getDataSource($this->Test->useDbConfig);
print_r($config);

としただけなんですが・・・。バージョンは1.3.2です。
850nobodyさん:2010/07/14(水) 17:13:41 ID:???
クラス読みこめば?
851nobodyさん:2010/07/14(水) 17:30:31 ID:sCETZCgF
$obj = new DATABASE_CONFIG();
$config = $obj->default;

としたらいけました。この方法しかないんですかね?
852nobodyさん:2010/07/14(水) 17:55:33 ID:???
スレチ失礼。ATNDより、PHP関連の勉強会を紹介します。


■Ktai Library for cakephp 勉強会@関東
URL: http://atnd.org/events/6209
日時: 2010/07/17 11:00 to 15:00
場所: マイ・スペース&ビジネスブース池袋西武横店
参加条件: Masa-Pさんの本「PHPで作る携帯サイト デベロッパーズガイド」を持参、かつ4章までを自力である程度実装できている、もしくは出来る方


■OpenPNE3で学ぶsymfony勉強会
URL: http://atnd.org/events/6255
日時: 2010/07/24 15:00 to 17:00
場所: 手嶋屋新宿御苑オフィス
内容: この勉強会は毎回OpenPNE3の各機能、仕様にフォーカスを当て、ベースフレームワークであるsymfonyを理解していく勉強会です。
参加者はみんなsymfonyに興味のあるプログラマです。Webエンジニアとのネットワークづくりにもお役立てください。


■Python4PHPer 第7回講習会
URL: http://atnd.org/events/6344
日時: 2010/08/12 10:00 to 22:00
場所: 国立オリンピック記念青少年総合センター
内容: Python未経験者向けの、PythonとGoogle App Engine (GAE) の入門講座です。


■第11回 LOCAL PHP部勉強会
URL: http://atnd.org/events/6443
日時: 2010/08/28 14:00 to 16:30
場所: 札幌市産業振興センター セミナールーム9
853nobodyさん:2010/07/14(水) 18:16:15 ID:???
おいしね↑
854nobodyさん:2010/07/14(水) 20:15:32 ID:???
生きる!
855nobodyさん:2010/07/14(水) 21:08:17 ID:???
原西来てるな
856nobodyさん:2010/07/16(金) 11:44:19 ID:iQAofRLh
コントローラー側でページネーションを操作する方法って無いでしょうか?
$paginator->counterやソートの内容をコントローラーで処理して
setでビューに渡せるようにしたいと思っています。

コントローラーで「$helpers = array('Paginator');」としても
$paginatorの内容が取得できませんでした。
857nobodyさん:2010/07/16(金) 12:34:00 ID:???
>>856
操作ってどんなの?
普通にpaginator使っていればコントローラ側で意識しなくても渡るけど。
もしくは、paginatorを継承して付け加えれば?
858nobodyさん:2010/07/16(金) 13:43:53 ID:iQAofRLh
>>857
例えば「次へのリンクがある場合」という条件を書く時、
if ($paginator->last() != "") {
echo $paginator->next('次へ');
}

という感じのソースになりますが、
このIFの部分を含めてコントローラーで変数に置きかえ、ビューに渡したいんです。

859nobodyさん:2010/07/16(金) 13:51:53 ID:???
shell上でコンポーネントを使うにはどうすればいいでしょうか?
860nobodyさん:2010/07/16(金) 14:07:46 ID:???
使い方はたぶんこれでOKなのを見つけたんですが

App::import('Component','コンポーネント');
$this->コンポーネント = new コンポーネントComponent();

こんなエラーがでちゃいます

PHP Fatal error: Class 'App' not found

Appが無いって事でしょうか
ちなみに上記コンポーネントを使おうとしなければエラーはでません
cake1.2です
861nobodyさん:2010/07/16(金) 14:20:46 ID:???
エラーのまんまだけどAppがまだ読まれてないところで使ってるんじゃない?
どこにそれ書いたの
862nobodyさん:2010/07/17(土) 21:54:27 ID:???
ところでCakePHPって新規の案件以外では使えないよね。
863nobodyさん:2010/07/17(土) 23:07:39 ID:???
デジャブやめろw
864nobodyさん:2010/07/17(土) 23:21:16 ID:???
そんなネタはおもしろくない
865nobodyさん:2010/07/17(土) 23:44:34 ID:???
面白いとか面白くないとかじゃなくて
事実を突きつけてる。OK?
866nobodyさん:2010/07/17(土) 23:53:45 ID:???
じゃ、事実として意見を言うけど、確かに使いづらいよ。
特にMVCに分かれていない更新案件なら、手間がかかるだけ。

でも、それ(新規案件だけで使う)が何か問題あるのか?
867nobodyさん:2010/07/17(土) 23:59:17 ID:???
まぁCakePHP使いこなせてないだけだろうね(笑)
868nobodyさん:2010/07/18(日) 00:13:00 ID:???
いや、そうじゃなくて、更新案件なら
今まで作っていた作り方があるのに
わざわざCakePHPを使う必要があるのか?ってこと。

お前は、自分が管理しやすいからって
一から作り直すのをクライアントに勧めるのか?
869nobodyさん:2010/07/18(日) 00:37:30 ID:???
最終的に何を言いたいのかわからんけど
フレームワークってそういうもんだろ
PEARとか拾ってきたクラスとかってのは既存のシステムからそれを利用するコードを書くわけだけど
フレームワークって逆にフレームワークから呼び出されるコードを書くのがデベロッパの仕事なわけで
当然フレームワークに沿った描き方する必要があるに決まってる
870nobodyさん:2010/07/18(日) 00:42:14 ID:???
何回ループするんだよw
871nobodyさん:2010/07/18(日) 00:48:42 ID:???
最近だけで3回くらいデジャブな感じ
872nobodyさん:2010/07/18(日) 01:15:44 ID:???
cakephpでsymfonyにあたるsfFormのsetNameFormatってどうやったらいいの?
873nobodyさん:2010/07/18(日) 10:06:05 ID:???
>>869
だから新規の案件意外で使えなくても不思議じゃないのに、
わざわざ聞くなってこと。言わせんな恥ずかしい。
874nobodyさん:2010/07/18(日) 11:11:01 ID:???
>>87
「案件意外」

たしかに恥ずかしいな
875nobodyさん:2010/07/18(日) 12:35:49 ID:???
VB.netが出たときも、結局書き直しじゃねぇかって話が出てた
さすがWeb界のVB
876nobodyさん:2010/07/18(日) 17:06:13 ID:???
>>874
横だけど、2ちゃんで誤字突っ込むやつ久々に見た
877nobodyさん:2010/07/18(日) 18:46:00 ID:???
男で突っ込まれるのが好きな奴なんているのか
878nobodyさん:2010/07/18(日) 22:09:37 ID:4SBJVnBL
商品テーブル(items)と在庫テーブル(stocks)というのがあって、
商品テーブルにデータが追加されたら、在庫テーブルに商品IDが入る

と言う仕組みを作っているのですが、
ItemモデルでhasOneで結合するだけでは追加されません。
Itemコントローラーで$this->Item->saveAllした後に
$this->Stock->saveAllをするというように、分けないと登録出来ないのでしょうか?
879nobodyさん:2010/07/18(日) 23:55:18 ID:???
RoRも込みでの話しになるけど
新規でしか使えないフレームワークなんて何の意味があるのかね?
RoR系のフレームワークってDBのテーブル名やPKは必ずIDにしなくちゃいけないとか
規約があるんだろ?
そんなもの使っかえねーし、きめぇ事この上無いんだが
なんでお前らこんな糞みたいなの使ってんの?
880nobodyさん:2010/07/19(月) 00:08:28 ID:???
そうじゃないフレームワークはどれ?
フレームワークを理解してる?
881nobodyさん:2010/07/19(月) 00:38:08 ID:???
>なんでお前らこんな糞みたいなの使ってんの?
使っている人が多いから

それ以上の理由ってあるか?
882nobodyさん:2010/07/19(月) 00:49:59 ID:???
primaryKeyもtable名も変えれるけどね。
規約に沿ってないなら指定すればいいだけ。
883nobodyさん:2010/07/19(月) 01:18:10 ID:???
>878
CookBook3.7.4あたりをもう一度読み直してみて
884878:2010/07/19(月) 01:48:08 ID:???
>>883
読み直しました。

やはり、一旦saveしてそこからgetLastInsertIdで追加したIDを取得して
もう一度saveするやり方しかないみたいですね。
考えたら、素のDB処理もそうするし、同じ事ですね。勉強になりました。
885nobodyさん:2010/07/19(月) 01:49:00 ID:???
糞って言いたいだけだろ
886nobodyさん:2010/07/19(月) 02:27:27 ID:???
Cookbookすらまともに読んでないようなやつは
できないということにしといてもいいんじゃね?w

とりあえず、できるしCookbookにもろに書いてるがな
887nobodyさん:2010/07/19(月) 03:20:44 ID:???
次の患者どうぞ
888nobodyさん:2010/07/19(月) 09:27:45 ID:???
>>879
新規案件だからだろ
他のがいいときは他の奴つかうし
フレームワークに振り回されてんじゃねーよ
889nobodyさん:2010/07/19(月) 10:37:02 ID:???
>>884
そんなことない
適切なデータを渡せばsaveAllでいける
890nobodyさん:2010/07/19(月) 12:19:44 ID:???
>>884
ちゃんとモデルごとに分けて配列に入れてからsaveAllしてる?
そもそもちゃんとモデルが関連づけされてる?取り出すときは一緒に出てくる?
怪しいところはその辺かなあ
891nobodyさん:2010/07/19(月) 12:33:23 ID:???
892nobodyさん:2010/07/19(月) 13:12:19 ID:???
CakePHP 1.3.3 rainbow icing edition released
893878:2010/07/19(月) 13:44:01 ID:???
>>890
884で書いた事って、891のURLで書いている事と同じ事ではないでしょうか?
891のURLでも分けてsaveしてますよね。

ちゃんとモデル毎に分けて配列に入れてますし、
paginateする時も一緒に読み込んでますよ。
894nobodyさん:2010/07/19(月) 13:48:04 ID:???
すげーなお前
895nobodyさん:2010/07/19(月) 14:44:13 ID:???
>>893
ヒント>>890>>891は別人
896nobodyさん:2010/07/19(月) 14:48:41 ID:???
MediaPluginの使い方が難しすぎる・・・
素直に適当なコンポーネント作成してアップロードさせた方が良いな
897nobodyさん:2010/07/19(月) 15:09:05 ID:???
>>895
え?書いてあるよ
898nobodyさん:2010/07/19(月) 15:14:59 ID:???
>>896
ソース読めばそうでもない。
899nobodyさん:2010/07/19(月) 15:40:08 ID:???
>>897
ほんとだ。書いてあったw
ってことは結局>>889
>>878は腹に落ちるまで何度も読めばいいのに
900nobodyさん:2010/07/19(月) 18:01:14 ID:???
>>882
知ってるよ。
でも設定より規約を重視するフレームワークでは
推奨される行為ではないんだろ?
DBにも制約があるなんて屑加減にも程がある。
901nobodyさん:2010/07/19(月) 18:10:10 ID:???
フレームワークをなんだと思ってるんだろうか
902nobodyさん:2010/07/19(月) 18:10:33 ID:???
主流のFWの規約=その時代の標準的なコーディング規約

と思っても良いと思うぞ。
それから大きく離れているコードを書く人は、おれおれFWを作りやすい人なんだろうな。
903nobodyさん:2010/07/19(月) 19:17:48 ID:???
規約を守らないで使うぐらいだったら、オレオレライブラリとかpearとか使ってやった方が
その後は幸せになれるとおもうよ。規約があるから楽になるんだから。
904nobodyさん:2010/07/19(月) 19:31:31 ID:???
複数人で開発する場合は規約があったほうがいい。
905nobodyさん:2010/07/19(月) 20:12:55 ID:???
おまえら釣られすぎww
906nobodyさん:2010/07/19(月) 21:49:21 ID:???
>規約があるから楽になるんだから。

これ、ほんとそうだな。
俺みたいに優柔不断で仕様作るのに時間かかる人間からしたら
規約が決まっている方が作りやすい。
907nobodyさん:2010/07/20(火) 00:03:25 ID:Al1F2MMr
cookbookの投稿記事の編集を見たのですが、
http://book.cakephp.org/ja/view/340/Editing-Posts

function edit($id = null) {
$this->Post->id = $id;


と言うふうに書かれていますけど、関数の$idって
どこから参照されるのでしょうか?

URLが /(コントローラー名)/edit/id:10
であれば、edit関数内で$id=10として代入されるかと思ったのですが、
代入されていませんでした。
908nobodyさん:2010/07/20(火) 00:45:09 ID:???
/edit/10
909907:2010/07/20(火) 01:14:21 ID:???
>>908
出来ました。URLの意味が
/コントローラー名/アクション/ID

だったんですね。id:10とかパラメーターが付いたら直で渡せないと。
その場合は、$this->params["named"]で取るようにします。
910nobodyさん:2010/07/20(火) 01:22:58 ID:???
なにがしたいのかしらんがよくわからない方向に向かおうとしてる気がする
911nobodyさん:2010/07/20(火) 01:36:41 ID:???
DBの命名に縛りが出ることにすげー違和感を覚えるんだが。
君達はそんなことないのか?
「楽だから」という理由だけでそれに納得してるのか。
単純な脳みそしてんだなー。
912nobodyさん:2010/07/20(火) 01:43:24 ID:???
まあそこのページ、英語と日本語でちょっと違ってて
英語版を試すとおかしなことになるんだよね。
1.3用の英語ページが一番正しい。はず。
913nobodyさん:2010/07/20(火) 01:51:17 ID:???
>>911
使ったことあればわかると思うけど別に縛りなんて無いよ。ただ初期値があるだけだ。
好きな名前使えばいい。
914nobodyさん:2010/07/20(火) 02:08:39 ID:???
サッカーはどうして手を使ったらダメなんだ?って考える人ってめんどくさいだろ?
ボール蹴って「そういうもんだ」と思って楽しんだほうが楽なのと一緒だ。
915nobodyさん:2010/07/20(火) 03:27:06 ID:???
ここ数日CakePHPを使えないものとしたくてたまらない奴が一匹いるようだな
916nobodyさん:2010/07/20(火) 03:28:46 ID:???
Smartyスレに来るやつと同一人物だな
917nobodyさん:2010/07/20(火) 03:40:37 ID:???
つうか、使わなきゃいいんだってw
規約に合わせたくない、合わせるのが諸処の事情で難しい、
そういう現場にまで押しつけようとは
CakePHPコミュニティも、俺らもしてないじゃないの
918nobodyさん:2010/07/20(火) 04:20:04 ID:???
たぶん、会社の上司かクライアントか誰かに言われたんでしょ。
「フレームワーク勉強しろ」って。
そんで、必死に勉強しない理由探して叩いてるだけでしょ。
919nobodyさん:2010/07/20(火) 07:51:24 ID:???
>>911
DB名を規則通りにすると1〜2行程度、楽ができるとかレベルだから
好きにつければいいよ。一通り、規約によるメリットを調べてから
従うもの、無視するもの選べばいいよ。
920nobodyさん:2010/07/20(火) 08:41:24 ID:???
そんなに日本語カラム名が使いたいのか
921nobodyさん:2010/07/20(火) 16:17:54 ID:???
サニタイズって使う?
HTML許可するフォーム以外、使い道が思い浮かばない。
922nobodyさん:2010/07/20(火) 17:21:06 ID:???
データを表示するときに使う
923nobodyさん:2010/07/20(火) 22:32:55 ID:???
ビューキャッシュってapp/tmp/cache/view/にひたすら置かれていくけど、
キャッシュ数が多くなったときのためにディレクトリで管理とかできないの?
924nobodyさん:2010/07/21(水) 08:39:12 ID:???
>>923
出来るだろうけどやる意味あるの?
925nobodyさん:2010/07/21(水) 10:35:13 ID:???
何万ファイルにもなるとOSに負荷がかかるとかなんとかかんとか
926nobodyさん:2010/07/21(水) 10:54:21 ID:???
少なくともviewの数以上増えないんでしょ??
927nobodyさん:2010/07/21(水) 10:57:09 ID:???
>>926
viewの数ではないよ
928nobodyさん:2010/07/21(水) 11:01:22 ID:???
ん、そうなんだ。
あんま気にしたことなかったな。

ただディレクトリ見ても延々増えてるようには見えない。
929923:2010/07/21(水) 12:17:22 ID:???
>>924
デフォでは用意されてないのかねぇ・・・

>>926,>>928
たとえば1万ユーザーいるSNSでいろいろキャッシュしたら
ユーザーホームのページ分1万ファイル作られるし、さらに日記
ページとかとかキャッシュしたら、天井知らずに増える。
3万ファイルくらいまでは普通にキャッシュ増えて行ってしまって、
こりゃまずいと思って対策を考えているところなんだ。
930nobodyさん:2010/07/21(水) 12:20:00 ID:???
なにがまずい?
931nobodyさん:2010/07/21(水) 12:25:47 ID:???
使ったことないけど他のキャッシュシステムだと上限設定できるのか?
もしそうなら切り替えれば?
932nobodyさん:2010/07/21(水) 12:37:22 ID:???
>>930
キャッシュもデータファイルだから、鯖の容量食うからまずいって話だろ?
933nobodyさん:2010/07/21(水) 12:50:08 ID:???
>>930
ひとつのディレクトリに概ね1万以上のファイルはファイルシステムの動作が遅くなる
>>929
ディレクトリで分けるのが正攻法じゃね?
934nobodyさん:2010/07/21(水) 12:51:29 ID:ULlFclUd
古いファイル消せ
935nobodyさん:2010/07/21(水) 14:11:26 ID:???
キャッシュのエンジンはクラスになってるんだから
FileEngineからでも派生させてオレオレエンジンクラスをつくればいいと思うよ。

それよりログインした後のユーザー領域をキャッシュにするのは大丈夫なのかな。
俺はなんか不安だからやってないんだけど、ユーザーIDをキーにするとかでいいんだろうか?
936923:2010/07/21(水) 14:15:22 ID:???
説明不足ですみません
アクセスはまんべんなくくるので、キャッシュを減らすわけにもいかず、
キャッシュファイルの数はどうしても万単位になってしまうのです
http://soudan1.biglobe.ne.jp/qa4019431.html
この辺によると、やはり同一ディレクトリには10k〜15kくらいのファイル数に
納めることが理想のようです

自分の場合は容量は特に問題ないので、ディレクトリで分けようと思っています。
cakeでは
app/tmp/cache/view/test_read.cgi_php_1268874059.php
という感じのファイルが生成されますが、これを
app/tmp/cache/view/test/read.cgi/php/1268874059.php
みたいな感じで生成する方法はデフォルトで用意されているのでしょうか?
937nobodyさん:2010/07/21(水) 14:16:07 ID:???
>>935
ずっと前だけど、そのときはURL叩いたらログインして無くても表示された
でも今ならcake:nocache使えばいけるかも?
938nobodyさん:2010/07/21(水) 14:18:45 ID:???
>>936
用意されてない
最後の数字がユニークなら末尾2桁とって 59 というディレクトリに書き出すようにすると100分の1になるよ
939923:2010/07/21(水) 14:28:11 ID:???
>>938
用意されていないのですね・・・
自前で仕組みを作ってみることにします。
940nobodyさん:2010/07/21(水) 14:29:53 ID:???
>>939
あ、でも任意のディレクトリを指定できたかも?
調べてみて
941923:2010/07/21(水) 14:36:20 ID:???
>>940
保存場所を任意のディレクトリにはできるようです
キャッシュ保存前に保存場所を切り替えてディレクトリに分けて保存するという
やり方もありそうですが、結局読み出しの時にそのディレクトリを指定してあげなきゃ
いけないので、どちらにせよその辺は自前で用意しなきゃいけませんね・・・
942935:2010/07/21(水) 14:36:36 ID:???
あちょっと違ってた。
ビューのキャッシュのファイル名など決めてんのはキャッシュヘルパーの仕事すね。
943935:2010/07/21(水) 14:52:27 ID:???
>>937
そんなこともあったんだ。

俺が不安に思ってたのは、キャッシュのファイル名はurlをInflector::slugにかけて作ってるから
下手すると、違うページなのに同一ファイル名のキャッシュができてしまう可能性があること。
1.3のInflector::slugはちょっと良くなったみたいだけど、どうなんだろ。
944nobodyさん:2010/07/21(水) 14:55:11 ID:???
>>943
URLごとにキャッシュファイル作成するからそれはない
Inflector::slugの件は、PCREライブラリの設定で、回避可能(確認したのはv1.3.0)
945nobodyさん:2010/07/21(水) 14:56:13 ID:???
ビュー内で、そのビューが格納されている
フォルダ名(コントローラー名の頭文字を小文字にしたやつ)
を簡単に取得するにはどうしたらいいでしょうか

$this->name で名前がとれましたが、頭文字が大文字の
ため、毎度変換しないといけないので、もっと簡単にとれれば
と思った次第です
946nobodyさん:2010/07/21(水) 15:11:56 ID:???
>>945
つ Inflector
947nobodyさん:2010/07/21(水) 15:45:21 ID:???
みなさん、Cakeに移行するまでに使っていたclassや関数ってどうしてます?
コンポーネントやヘルパーを作って完全にCakeに移行します?

Cake用に書き換えるとCake以外で使う時、使えなくなるなって思い
どこまで移植するか悩みます。
948nobodyさん:2010/07/21(水) 16:16:24 ID:???
ベンダーにいれろよ
949nobodyさん:2010/07/21(水) 16:32:57 ID:???
ベンダーですか・・。DB接続あるし、どうしようか悩むんですよね。
950nobodyさん:2010/07/21(水) 16:39:38 ID:???
迷ってる暇があるなら、
さっさとcakePHP用に移行したほうが幸せになれると思うけど。

cakePHPのファンクションを使用しなければ、
他のフレームワークに移行したところで影響は少ないと思う。
951nobodyさん:2010/07/21(水) 16:52:33 ID:???
DB接続をハードコーディングしてあるクラス
カラスもつつかないごみじゃない?
952nobodyさん:2010/07/21(水) 18:00:11 ID:???
>>950
さっきから小一時間やっていたのですが、
ようやく1つの関数を移行できました・・。

いくらやってもデータが追加できなかったのですが、
素のSQL文って INSERT INTO table_name ('name') VALUES ('aaa')
でもインサートされて、IDはオートインクリメントで連番が付けられますが、
Cakeの場合は、IDフィールドを指定しないと追加されません。

$values["Test"] = array(
'id' =>'', // これが必要
'name'=>$name
)

こういうCake特有の仕様が物凄く面倒なんですよね・・・
953nobodyさん:2010/07/21(水) 19:49:47 ID:???
え?
954nobodyさん:2010/07/21(水) 19:56:15 ID:???
これがPHP脳ですか?
955nobodyさん:2010/07/21(水) 20:24:57 ID:???
本当にゴミ以下のソースで藁
956nobodyさん:2010/07/21(水) 20:27:02 ID:???
そんな無駄な資産捨てちまえってww
957nobodyさん:2010/07/21(水) 20:33:16 ID:???
おまえらにも親の肩身のタオルケットくらいあるだろうが!
958nobodyさん:2010/07/21(水) 21:39:58 ID:???
いちいち変数に値が存在するか否かissetで調べないと
Undefined variableエラーが出るんだけど、
issetで調べない方法はゴミソースで良いの?
959nobodyさん:2010/07/21(水) 23:41:22 ID:???
>>958
getデータはrouting使うと、issetやらis_numericやらは省略できる
960nobodyさん:2010/07/21(水) 23:44:28 ID:???
emptyで
961nobodyさん:2010/07/22(木) 00:33:00 ID:???
>>958
お前は何を言ってるんだ?
それがCakePHPの所為だとおもってるんなら今すぐやめたほうがいい
962nobodyさん:2010/07/22(木) 01:07:55 ID:???
array地獄をやめてclassに移行してほしい。
生成した側は構造が分かっているはずだけど、
依存するのは避けたいから利用側で確認しないわけにはいかない。
963nobodyさん:2010/07/22(木) 01:41:18 ID:???
formヘルパーのtimeで
24時間以降を、午前1時=25:00
というふうに30時くらいまで追加する方法ってないでしょうか
964nobodyさん:2010/07/22(木) 01:46:11 ID:???
継承して数値ずらせばいいだけ
965nobodyさん:2010/07/22(木) 02:05:46 ID:???
>>961
止めるって何を?
966nobodyさん:2010/07/22(木) 02:35:07 ID:???
人生以外ないだろ
967nobodyさん:2010/07/22(木) 12:00:40 ID:???
CakePHPは人生
968nobodyさん:2010/07/22(木) 14:36:53 ID:+voqy8bn
AというコントローラーでモデルをA・Bと指定してるとします。
findの場合、$this->B->find でBのモデルに対するデータを取得できますが、
これをページネーションでするにはどうすればいいのでしょうか?
$this->B->paginate()では駄目でした
969nobodyさん:2010/07/22(木) 14:46:06 ID:???
$this->B->paginate(’B’)

でいけました。スレ汚しすみません。。
970nobodyさん:2010/07/22(木) 15:50:14 ID:???
解決はや!
971nobodyさん:2010/07/22(木) 18:41:51 ID:???
>>958
あたまに@つけろ
972nobodyさん:2010/07/22(木) 18:44:59 ID:???
@推奨すんなw
あとcakePHPとは関係がない。よそでやれ
973nobodyさん:2010/07/22(木) 19:52:23 ID:???
DBのカウンタのフィールドを+1したい(SQL で書くと counter + 1 )のだけど
cakePHPのモデルだとどう書くのですか?
974nobodyさん:2010/07/22(木) 19:56:52 ID:???
>>973
インクリメントビヘイビアというのがある
それをそのまま使うか、それを参考に
975nobodyさん:2010/07/22(木) 20:43:44 ID:???
>>974
Thanx!!
検索用語が難しくて全然探せなかったので助かりました。

$this->Article->doIncrement($id, 1, 'votes');

Increment Behavior (Articles) | The Bakery, Everything CakePHP
http://bakery.cakephp.org/articles/view/increment-behavior

検索用: フィールド +1 カウンター SQL field +1 counter

と思ってソースみたら、結局findByIdしたものを +1 しているからSQLは2回
投げる気がする。それだったら意味ないっぽい。
上記リンクのコメントのリンク先にあるやり方の方が良さそうかな。
$content->updateAll(array(‘num_of_purchases’ => ‘num_of_purchases+1′)
976nobodyさん:2010/07/22(木) 20:44:53 ID:???
または、これかな。

app_model.php

function UpdateHits($id)
{
//debug ($this->useTable);exit;
$FieldToInc = 'views';
$this->execute("UPDATE $this->useTable SET $FieldToInc=$FieldToInc+1 WHERE id=$id");
}
977nobodyさん:2010/07/22(木) 21:22:06 ID:???
単純にSQL文で書けば
UPDATE table_name SET count=count+1

なのに、やけにめんどくさいよね。仕様だから仕方ないけど
978nobodyさん:2010/07/22(木) 22:04:37 ID:???
そう思ったらquery()つかえばよろし
979nobodyさん:2010/07/22(木) 22:55:12 ID:???
まぁ、そこら辺はCakeは遠回りするからね。
シンプルなものなら直書きでも良いんじゃないか。
980nobodyさん:2010/07/23(金) 01:12:40 ID:???
>>977
それは排他制御が・・

Cakeのは大丈夫なのか、といわれると知らんが。
981nobodyさん:2010/07/23(金) 01:41:37 ID:???
saveしようとして
$dat = array('id'=>null,'txt'=>'AAA')
を table->save($dat)
としたら、
クエリの内容が
INSERT INTO "table" ("id", "txt") VALUES (NULL,'AAA')
となってしまって、
idはnullじゃ駄目なんだよ。とエラーが返ってきます。

通常idがnullだと、クエリからidは外してくれるんですが
何故かidが外れません

何か原因で考えられる事はあるでしょうか
982nobodyさん:2010/07/23(金) 01:43:22 ID:???
ならidの辞書型自体を指定しなけりゃいいんじゃね?
983nobodyさん:2010/07/23(金) 02:03:22 ID:???
確かにそうなのですが、
これまではidを指定していても自動で外してくれていたんです。

特定の場所だけで発生しています
984nobodyさん:2010/07/23(金) 02:06:15 ID:???
これまでって何だよ
985nobodyさん:2010/07/23(金) 02:10:46 ID:???
エスパー召喚魔法唱えてるんだろ。
人間に方は放置しておk
986nobodyさん:2010/07/23(金) 02:13:24 ID:???
>>981
>>952じゃないの?
987nobodyさん:2010/07/23(金) 02:17:47 ID:???
いっそソース一式全部晒してくれれば
バグを見つけてくれる人もいるだろう
988nobodyさん:2010/07/23(金) 02:33:57 ID:???
どうでもいいけどチュートリアルくらいはこなしてから人に聞いてるんだろうな
989nobodyさん:2010/07/23(金) 02:37:40 ID:???
モデル周りのマニュアルちゃんと読めばなんてこと無いことを苦労してる気がする。
990nobodyさん:2010/07/23(金) 02:39:23 ID:???
>>980
この場合の排他制御ってどういう意味?
MySQLならUPDATEしていれば問題ないよね?

incrementの方は排他制御的に問題あると思うけど
991nobodyさん:2010/07/23(金) 03:09:35 ID:???
そもそも+1したいってなんなの?
システム変更でデータ移行するから一気に+1したいのか
取り出した値を常に+1したいのか
あーめんどくせーどうでもいいや

ここ最近の質問って全部同一人物だろ
ぐだぐだいってないでCakeやろうと思ったなら
オフィシャルやらチュートリアルやらAPIのドキュメントやら読めよ
嫌なら何も始めるな
992nobodyさん:2010/07/23(金) 04:09:29 ID:???
>>991
同一人物じゃないが
UPDATE table_name SET count=count+1 をしたい

>ぐだぐだいってないでCakeやろうと思ったなら
>オフィシャルやらチュートリアルやらAPIのドキュメントやら読めよ

どこに書いてあるの? どこにも書いてない、できないから上記の答えになっているんだろ?
日本語が理解できないならまず日本語を勉強してこいよ
993nobodyさん:2010/07/23(金) 04:30:20 ID:???
UPDATE 〜 のSQL文書いたのは俺だけどなw

てか、count+1する場面って結構あると思うけどな。
在庫管理にカウンターに投稿数の加算とか。

チュートリアル見て質問してるだろうけど、
翻訳が変だったり、不十分だったりするから人に聞くんでしょ。
994nobodyさん:2010/07/23(金) 08:36:28 ID:???
>>992
ならそれをModel->query()で問題ないっていってんだろ
しつけーんだよアホか
995nobodyさん:2010/07/23(金) 08:49:45 ID:???
「cakephp increment」で検索かけるとすぐに件のビヘイビア見つかって解決。
検索できるようになろうね。

それに対して>>977
>単純にSQL文で書けば
>UPDATE table_name SET count=count+1
>
>なのに、やけにめんどくさいよね。仕様だから仕方ないけど

なんだけど、これ俺勘違いして質問者が言ってると思ってた
だからそう思うならquery()で書けばいいって書いたわけ。
996nobodyさん:2010/07/23(金) 08:53:56 ID:???
次スレ立ててくるわ
997nobodyさん:2010/07/23(金) 09:17:12 ID:???
【PHP】フレームワーク CakePHP 9ホール目【v1.3】
http://pc11.2ch.net/test/read.cgi/php/1279844006/

どぞー
998nobodyさん:2010/07/23(金) 14:52:49 ID:???
>>994
バカか?
queryでできることには誰も反論してないだろ。誰がどこでそれに問題があるって言ったと思っているんだよ。


マニュアル等に書いてないのも事実だろ?
まず日本語の読解能力つけろよ

そんな話はしてなくて今は排他処理のことを聞いているんだよ。
999nobodyさん:2010/07/23(金) 15:25:43 ID:???
逆ギレの現場を見た

w
1000nobodyさん:2010/07/23(金) 15:50:25 ID:???
次いってみよー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。