【PHP】フレームワーク CakePHP 9ホール目【v1.3】
1 :
nobodyさん :
2010/07/23(金) 09:13:26 ID:v3m09M9u
テンプレらしきものは以上(
>>1-6 ひとつ増えちゃった)
補足があればどうぞ
Have a Nice Cooking !
> cake bake all User
beforeValidateで加工編集した$this->dataをビューに渡すには バリデート後にコントローラー内で $this->data[モデル] = $this->モデル->data; ってやってたんですが、 これだとモデル毎にコントローラー内に書かないといけないので もっと簡単にする方法はないでしょうか
>>8 基本的にbeforeValidateはsave用のデータを変更するときに使用するから
コントローラーのdataに戻さない使い方が基本よ
で、saveに失敗したら戻したいとかなら、データ加工のメソッドをモデルに別で作って、setの前とかで呼んであげたほうが良いと思う
$this->data = $this->User->changeStatus();
みたいに
BBS用のコントローラを作って class BbsController extends AppController { var $name = 'Bbs'; var $title = "BBS"; とやったんですが、「bbテーブルがない」とエラーになります。 sで終わる単語は使うとまずいんでしょうか?
>>9 あ、その例だとデータ渡ってないな
$this->data = $this->User->changeStatus($this->data);
こうか?
>>10 sで終わる略語はInflectorに設定しなくてはだめ
可能ならtable名をboardsとかにしたほうが良い
>>10 コントローラで
var $uses = array('Bbs');
bbsモデルで
var $useTable = 'bbs';
って明示的に指定してやればうまくいきそうだけど。
俺もいつもそうしてるな。 テーブル名は自由に付けたい
俺ならboardsにするな BBSコントローラーだといまいち何をするものかわからん気がする 掲示板システム全部を請け負うと肥大化しそうだし、boards,threads,responsesとかで分けた方がいいんじゃね?
BBSの複数形はBBSes てか、掲示板は英語でforumって書くのが一般的だと思うが
topicsは?
cakephpって普通にgetパラメーター使うのって非推奨? 標準ページングのURLが気持ち悪くて、/hogeとか/hoge?page=2にしてみて、 /hogeをキャッシュしようと思ったら/hoge?page=2も同じページと見なされちゃうっぽいんだけど
>>18 そこなんだよね。
cakeのpage:2 形式だとクエリストリングにスラッシュとか入った時におかしくなるし、
?page=2にしたらキャッシュしてくんないし。俺はキャッシュの方をあきらめたけど。
/key=val/key2=val2/ にかえるのでよければ簡単にできる。 あとキャッシュは自前でクラス使うのもそれほど苦じゃないかと
ま、素のPHPで書けばそもそもキャッシュ無いしな。 キャッシュの恩恵が受けられるサイトの場合、鯖で対策するだろうし。
beforFilter内でrenderができないのだけどエラーを出す時にはどうすればよいのでしょうか
CakePHPってPHP4の書き方を強要されるわけだが それで気持ち悪いと思わないの?
気持ち悪いと思うかどうかが聞きたいの?
PHPのバージョンはそんなに気にならないが、連想配列地獄はかなり気になる
他に拡張性のあるfunctionの書き方ってどんなのがあるの?
>>24 気持ち悪いと思わないの?
気持ち悪いのであれば何故使ってるの?
>>26 なぜバージョンが気にならないの?
今時PHP4の書き方なんかに戻れないんだけど。
>>28 PHP5でしかつかわないんならPHP5で書けばいいだけだと思うんだけど
PHP4を強要される場面があるなら教えてくれないか?
Lithiumに期待
何の手続きか知らないけど 「気持ち悪いと思わないの?」なんて聞かれるのは気持ち悪い PHP4の書き方が気持ち悪いかどうかで言ったら別に気持ち悪くはないし だから PHP4の書き方強要されるのが嫌だ もっとうまい具合に解決してほしい とストレートに言ってくれたほうがいいな
var $name = なんて書かないぜ!
CakePHPに言いがかりをつけたいだけだから 相手にしても会話にならない
まぁそう言わずに むしろ批判こそいろいろ見えてきていいと思うけどな。 批判してた人も、え?そうなの!?になるかもしれないじゃん。
批判というか意見だけど、URLパラメーターの切替が出来たらいいな。 /contoroller/action/1 や /contoroller/action/id:1 みたいな形はSEO的に良いかもしれないけど、少しわかりづらい。 従来のように /contoroller/action/?id=1 とか /contoroller/action?id=1 でも良いと思う。
mod_rewriteのせいで、リクエスト側と受け取るURLが変わるから OAuth認証のsignatureが合わなくて苦労した
>>35 スタティックなページだと、smart URLの方がいいと思うんだけど、
ページングとかのダイナミックなページは従来のURLの方がいいと思う
× /archive?id=1
○ /archive/id:1
○ /archive?page=2
× /archive/page:2
というわけで俺も両方使えた方がいいと思うけど、
従来のURLを切り捨てて実装している機能が多いから無理だろうなあ
前スレに出ていたキャッシュとかもそうだけど。
named使いにくいと思ってたの、俺だけじゃなかったんだ Cake標準のページネーション使うと、 named使わなきゃならないんだよね。 検索フォーム作るとき、 POSTのときと、namedのときで処理を変えなきゃいけないのが面倒・・・ Paginatorヘルパー拡張して、page=1みたいなURL吐くようにすればいいのかな?
>>38 おれはいっそのこと、$_POSTとか$_GETとかそのまま受け取るようにしてるよ。
namedから呼び出していたら使い勝手悪いし。
>>40 if ($_GET["page" > 1]) {
$page = $_GET["page"];
} else {
$page = 1;
}
こんな感じでページネーションに渡せば良くないか?
1行目が変だった・・・ if ($_GET["page"] > 1) { ま、整数のみ許可するとかもう少し処理入れるべきだろうが。
なにそのうんこソース
$page = empty($_GET['page']) ? 1 : $_GET['page'];
えーーくせれんっ!!
namedで来るのはそのまま使って後ろに ?query=eroero とか付ければいいだけじゃ。
もう、Cake使うのやめて、必要な部分だけオレオレに移植しろよ。
49 :
nobodyさん :2010/07/26(月) 01:51:25 ID:REeMHXov
webrootだけを以下のような構成で配置しているとします。
/home/test/public_html // CakePHP以外のHTMLファイルなどがある
/home/test/public_html/system // CakePHPの公開ディレクトリ
ベースURLは
http://localhost/test/だとし 、
システム用の(Cake用)の場合は、
http://localhost/test/system/になるとします 。
ビューの中で<?php include("../include/header.php")?>
と相対指定すれば
/home/test/public_html/include/header.php
のファイルを読み込む事が出来るのですが、
ページネーションなどでURLが階層化されるとinclude出来ません。
通常は、views/elementにビューの共通ファイルを入れると思うのですが、
/home/test/public_html/include/header.phpにあるファイルをコピーするので
同じファイルが2つ存在する事になり、効率が良くないです。
上記のように「Cakeを使う箇所・使わない箇所」で分けている時、
共通化するファイルはどうするべきでしょうか?
やはりviewsに入れて分けるしかないのでしょうか?
問題を切り分けろバカ >ビューの中で<?php include("../include/header.php")?> >と相対指定すれば あたりまえだろ 絶対指定しろ >上記のように「Cakeを使う箇所・使わない箇所」で分けている時、 >共通化するファイルはどうするべきでしょうか? >やはりviewsに入れて分けるしかないのでしょうか? 絶対指定した上で自分でどちらが扱いやすいか判断しろ
paginaterのパスから総体指定すればいいんじゃね?
こいつ同じやつだろ しかも聞くだけ聞いてまたのこのこあらわれる
バレちゃったwテヘッ
rollback後に何らかの処理をafterrollback的に行いたい場合は こんな感じでモデルに記述してOKでしょうか function rollback() { parent::rollback(); $this->afterRollback(); } function afterRollback() { //処理 }
>モデルに記述して なんだよモデルってAppModel? 特定のモデル?modelClass? あとOKでしょうか?ってエラー出なきゃなんでもOkっちゃOKだよ
ここの住人に許可を得たいんだと思う
じゃあおれは許可する
いやワシは認めん。そもそも function rollback()って誰だ!
結婚はrollbackはできんぞ! insertしたら責任を取れ!
>>59 そりゃ、結婚した時点で自動コミットだからrollbackできない。
しかも結婚テーブルはIDはオートインクリメントでdelete権限ついてないから厄介だよね。
お前らはまずinsertするデータがnot foundだから安心すれ
結婚テーブルがありません
$data = $this->TestModel->findById(1); とすると、 $dataにはArrayデータが格納されます。 このArrayの中に「value」というカラムのデータがあるのですが、このvalueの値を1行で取得したいのです。 $value = $this->TestModel->findById(1)['TestModel']['value']; はだめでした。 文法的にどのように書くのが正しいのでしょいか?
一行で取得したい そんな風に考えていた時期が僕にもありました。 今考えると赤面ものです。
>>64 TestModelにオリジナルメソッド作りましょう
67 :
64 :2010/07/27(火) 16:01:31 ID:???
>>65 ,66
modelに書くべきとは確かに思います。
ただ単に、文法的にできるかどうか、知りたいんです・・・。
>>64 1.findのfieldsで取得したいfieldを指定できる。
2.配列の値がひとつならcurrentで下がっていけばいい。
これでできるんじゃないか
読みづらくてあほだけど。
あー perlでは {$this->TestModel->findById(1)}['TestModel']['value']; こんな感じにできた気がするなぁPHPは無理なんじゃない?てか知らない。
他の言語だとできるけど、PHPじゃ無理です
>>64 これじゃだめなん?
$data = $this->TestModel->field('value', array('id' => 1));
おれもそれを言おうとしていた
おれもおれも
おれもいつもそうしてる。
75 :
64 :2010/07/27(火) 21:01:45 ID:???
>>71 ありがとうございました。
modelに処理を書くにしてもシンプルに書きたいので、まさに理想です。
このやり方、しっかり心に刻みます。
みな調子いいなぁ・・・w
俺も最初からわかっててあえて・・・な
77 :
nobodyさん :2010/07/29(木) 03:48:26 ID:8543E4o9
idをfindして、その結果を次のクエリとしてINに指定したいとき、 findしたデータを1次元の配列に変換しないといけないのですが これができる関数ってあるのでしょうか。 array_mapするのが定石でしょうか。 $result=$this->Model1->find('all', array('fields'=>'Model1.id')); $array=hoge_function($result); $conditions=>array('Model2.hoge_id'=>$array); $this->Model2->find('all', array('conditions'=>$conditions)); 上記の例の場合のhoge_functionのような処理を簡単にしたいです。
>>78 その例ならアソシエーション使わない理由が分からない
例を無視して応えるならfind('list')で取得してarray_keysかな?
Set::extractは便利だけどfindAllは無駄
83 :
78 :2010/07/30(金) 12:28:39 ID:E2f+bC/4
>>81 おー、まさにこれですね。ありがとうございます。
他にも使えそうなのがありますね > setクラス
Set::merge Set::combine Set::extract あたりは結構常用してる
>>83 キミはSet覚える前にアソシエーションを覚えるべきw
cakephp1.3を使っています。 下記のようにあるコントローラに別のコントローラを継承させています。 App::import('Controller','Base'); class TestController extends BaseController { Testというページは情報入力画面なのですが、 最初の画面は表示されるのにサブミットボタンを押した後真っ白な画面になってしまいます。 phpのエラーはなくdebug.logにも何も出力されておりません。 継承ではフォームの作成は出来ないのでしょうか。 あいまいな質問ですみません。 何かヒントでもつかめればと思います。
もう一つご質問です。 TestControllerとTest2Controllerというコントローラがあり 処理も全く同じでファイルパスだけが違うます。 これまで処理が全く同じでパスだけ違う場合 シンボリックリンクを張りファイル名だけ変えていたのですが cakeの場合クラス名が変わるのでそれが使えません。 同じ処理を行うファイルを複数使用する場合 効率のいいやり方はありますか?
>>86 SecurityComponent
blackholeCallback
あたりだと思う
>88 SecurityComponentを外したら確かにアクセス出来るようになりました どうもありがとうございます!
なんか色々あれだな 答えたくもないわ
>>87 どうしてそこに至ったかはあえて問わないが
mod_rewriteとか、、
Pluginを表示してる時に、$form->create();つかうと、 URLにプラグインが保管されてしまうんですがこんな仕様でしたっけ? $html->link(array(....));のときにプラグイン名を明示的に 'plugin'=>nullってしてやらないとこれもプラグインが勝手に保管されるので同じように form->create()の第二引数で指定してやってもダメでした。 なんか他のところに原因があるんでしょうか
93 :
92 :2010/07/30(金) 23:05:23 ID:???
今までそうじゃなかっただろとおもいながらもよくよく考えてみたら同じケースが無いだけだったみたいな。 で、どーもそういう仕様っぽいなってことで、以下のようにしました。 <?php echo $form->create('Member', array('url'=>array('plugin'=>null, 'controller'=>'members', 'action'=>'login')));?> memberを2個かくのに抵抗感汁んですがまぁいいや。
よく分からないんだけど、pluginの /:plugin/hoge/add のページから /members/login にpostしたいってこと? それならpluginをnullしなきゃいけないのは当然よ
そゆことっす。 んで、html->link()の時はplugin=null入れなきゃってのは前からやってたんですが、 formのケースが自分でかってに plugin=nullなんて指定しなくても第一引数がPlugin.Memberとかでない限り大丈夫だと思ってたんです。 でもそうじゃなかったと。 サーセン
そだね 基本的に現在のURLを残そうとするからね
でも、なぜかpassは残してくれないんだよなぁ
98 :
nobodyさん :2010/08/02(月) 12:35:29 ID:n6/Fh0gL
解決できない>< 知恵をお貸しくだされ 入力任意の日付項目があって viewで $form->input('A',array('type'=>'date','empty'=>'','selected'=>'' ・・・ ってしたときに modelでvalidateを下記のように設定する 'A' => array( 'rule' => array( 'allowEmpty' => true, 'message' => '正しい日付を選択して下さい' ) ), で設定すると入力フォームで年月日を全部選択しないとmodelで値が 取れないからどうしたらいいか迷ってる。 一番簡単な方法は'type'=>'date'を使わないで 年月日を別々に作っちゃうことだけど それ以外の方法でなにかないかな?
しらんがどうしてもだめなら独自ルール作ればいいじゃん 超簡単にかけるでしょ
belongsToとかで複数テーブルを連携させるとき、その複数テーブルに存在する共通のカラムを findのconditionで指定した場合(例えば $condritions=array('xxx'=>'aaa')など) 「Column 'xxx' in where clause is ambiguous」 というエラーが発生します。 $condritions=array('(テーブル名).xxx'=>'aaa') というようにテーブル名を条件指定のときに付与すれば回避できるのですが、 テーブル名を直接記述するのもフレームワーク的にしっくりきません。 他にこのエラーの回避方法などありますでしょうか?
101 :
nobodyさん :2010/08/02(月) 13:51:18 ID:n6/Fh0gL
>>99 99さん返信ありがとです
98ですが、独自ルールの前に値がmodelでは取れないので困っているんです
viewでは取れているのですが^^;;;
具体的には
'A' => array(
'rule' => 'validateData',
'message' => '正しい日付を選択して下さい'
),
##データValidate関数
##$this->data[$this->name][$key]['year']と
##$this->data[$this->name][$key]['month']と
##$this->data[$this->name][$key]['day']がとれない;;
##'A'というkeyで値が取れている。ひとつでも選択されてないと値が空白になる
##という理由で独自に作ってもだめです><
function validateData($field=array()) {
foreach($field as $key => $val){
if($key=='A'){
if(!empty($this->data[$this->name][$key]['year']) && !empty($this->data[$this->name]['month']) && !empty($this->data[$this->name]['day'])){
return checkdate($this->data[$this->name]['month'],$this->data[$this->name]['day'],$this->data[$this->name]['year']);
}else if(empty($this->data[$this->name]['year']) && empty($this->data[$this->name]['month']) && empty($this->data[$this->name]['day'])){
return true;
}else{
return false;
}
}
}
return true;
}
104 :
100 :2010/08/02(月) 14:10:02 ID:???
>>103 ありがとうございました。
conditionsの指定はカラム名だけでOKなものと思い込んでいました。。。
モデル名の付与がそもそも正しいんですね。
>>101 validateData()内で
dump($field);
するとどうなるの
なるほど。 yearだけ入力されて送信されても、ほかが空っぽだと、何も入ってないってこと? $this->data[$this->name]['year']じゃなくて $this->data[$this->name]とかにYYYY-MM-DDな感じに加工されたテキストで入ってなかったっけ?
98です。解決しました。みなさまありがとうございました。
$form->input('A',array('empty' => array('00'=>'--'),'selected' => '' ,
emptyオプションに配列を入れてVALUEを設定しました。
これで一応解決しました
本当は年月日別々にemptyを設定しようかと思ったんですが
書き方がわからなかった&時間がなかったという理由で上記で
一応解決とさせていただきました。
以下返信してくれた方へのレス
>>102 書き込むのは初めてだったのですまん。
たぶんこれで下がっていると思われ
>>105 debugger::dump($field);
結果はNULLが入った;;
array(
"A" => null
)
>>106 そうです。
$this->data[$this->name]がNULLになっちゃうんです
>>100 エラーメッセージ読もうよ。。。
「Column 'xxx' in where clause is ambiguous」
只今、CakePHP1.2.6 で掲示板を作成しています。 ThreadモデルとResponseモデルがあり、 ◆Threadテーブル ・id int ・title text ・created datetime ・modifired datetime ◆Responseテーブル ・id int ・thread_id int ・comment text ・created datetime ・modifired datetime Thread hasMany Response、Response belongsTo Threadになっています。
続きです
Responseテーブルの件数(10件)毎にpaginateを実行したいと思っています。
イメージとしては、
[1][2][3][4][5](ページング)
-------------------------------
スレッド1:
-------------------------------
1 名前: Aさん 投稿日: 2010/07/23(金) 09:13:26
hogehoge1
piyopiyo1
2 名前: Bさん 投稿日: 2010/07/23(金) 09:13:26
hogehoge2
piyopiyo2
-------------------------------
[1][2][3][4][5](ページング)
こんな感じです。
Containableビヘビアを使用して、データを取得しています。(findではデータの取得が出来ました)
でもpaginateが出来ません。
どのようにすれば出来るでしょうか?
以下のような方法しかないのでしょうか?
http://book.cakephp.org/ja/view/249/ 4.9.4 カスタムしたクエリによるページ付け
>>110 paginateの条件指定の周りはどう書いてるの?
$this->paginate('Response')
でいけると思うんだけど。
URLのパラメーターにスラッシュが入っていると上手く処理ができないというのは
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=447&forum=3 この辺とかで既出だけど、パラメータにプラス記号が入っていても上手く処理できないというのは既出?
たとえば/hoge+fugaにアクセスすると/hoge fugaとか/hoge%20fugaと同じ扱いになっちゃう
たぶんhtaccessでURL自体をindex.php?url=に渡してGETパラメーター扱いにしてるから
+がスペースと同じになっちゃうと思うんだけど・・・
とりあえず二重エンコードで回避してみたけど、あまりいい手段とも思えない。
何か他に回避策はないかな?
>>114 に書き忘れたけど+を一回エンコードして/hoge%2Bfugaにしてもダメだった。
二回エンコードすると+がそのままパラメーターとして渡る
これってフロントコントローラのFWなら仕方ないことなの? symfonyとかrailsはどうなってるんだろう・・・?
URLと得られるパラメーターの検証してみた 1. /hoge hoge -> hoge hoge 2. /hoge%20hoge -> hoge hoge (スペースをエンコード) 3. /hoge+hoge -> hoge hoge 4. /hoge%2Bhoge -> hoge hoge (+をエンコード) 5. /hoge%252Bhoge -> hoge+hoge (+を二回エンコード) 挙動としておかしいのは4と5で、それぞれ本来はhoge+hogeとhoge%2Bhogeが得られるはずなんだよな 一回余計にデコードされてる
120 :
118,119 :2010/08/05(木) 16:02:35 ID:nxLYetG6
引き続き検証
index.phpに渡った時点で
>>119 のデコードが確認できた
なので、これはcakeの問題と言うより
>>118 に書いたようにhtaccessの仕様のようだね
1. 最初にapacheがデコードして、mod_rewriteで/index.php?url=hoge+hogeとして解釈される
2. GETパラメーターでは+はスペースの代わりに使われるので、$_GET['url']の中身はhoge hogeになる
さらに/について
%2Fをパラメーターとして渡すと区切り文字として扱われてしまうのは
>>114 にも書かれているとおり
1. /hoge/hoge/hoge
2. /hoge/hoge%2Fhoge (1回エンコード)
3. /hoge/hoge%252Fhoge (2回エンコード)
のすべてのパターンで$_GET['url']の中身がhoge/hoge/hogeになってしまう
hoge/hoge%2Fhogeとして受け取りたい場合には
4. /hoge/hoge%25252Fhoge
と3回エンコードしないといけない
ちなみにallowEncodedSlashesがonじゃない場合は2は404になるけど、1
途中で送信してしまった ちなみにallowEncodedSlashesがonじゃない場合は2は404になるけど、1、3、4の挙動は同じ これらに関してスマートな解決方法は思いつかないので、誰か他の人にパス
みんなテスト書いてる?最近fixtureが肥大化して、1つテスト追加すると別のテストが通らなくなる地獄で死にそうなんだが・・・
それが大事なんじゃないか
別のテストツール使ったほうが…
windows7限定でfopen使ったときか… windows7上で開発してる人は少ないだろうし、fopenも滅多に使わないだろうから、 あんまり遭遇する人がいないんじゃない
みんなテストツール何使ってるの?
>>126 Vistaでもエラーでるんだよ
fopenはキャッシュ読み込む時に使われているから、キャッシュの機能を意図的にオフに
しないかぎり、勝手に呼び出されるよ
本番環境はlinuxだから、linuxで発生しないって確証があれば気にはしないんだけどさ
やってみればいいじゃん
130 :
122 :2010/08/09(月) 00:18:49 ID:???
言い方悪かったすまん fixtureにAテストのためにテストデータ追加すると、Bテストではエラーがでる、つまり データの整合性をfixture上で取るのが面倒だが、みんなどうやっているのかなと。
>>129 本番環境では今のとこエラーは出てないよ
でも、それがlinuxではエラーが出ないって保証にはならんでしょ?
原因が特定されないと気持ち悪い
>>131 出てないなら気にスンナ!
linuxでエラー出るなら、誰かから報告あがってるでしょ
formHelperのinputでtypeに値設定しているとmaxlengthを取得してくれないってバグを誰か英語で報告してくれないかな?
1.3でgroup byとかsumを使ったときに、結果をモデル名の配列に入れるにはどうしたらいいんでしょうか?
http://blog.livedoor.jp/loopus/archives/50214076.html ここで
>$data = $this->Uriage->findAll(('1 = 1 group by customer_id', 'customer_id, sum(price) as "Uriage.sum_price"')
>
>という書き方をすると
>
>$data[x]['Uriage']['customer_id']
>$data[x]['Uriage']['sum_price']
>
>とキレイに入ってくれる。
というやり方が書かれているのですが、1.3だと as "Uriage.sum_price"とするとSQLエラーが出てしまいます
cakeのデフォルトファイルって減らせないかな? うちで使っている糞鯖にファイルアップするだけでも、だいぶ時間がかかる
>>135 ありがとうございます
virtualFields設定してgroupしたら、期待通りの結果が得られました
>>136 フォークして、自前でカスタマイズする。
もしくは、もうやっているとともうけど、lnしてひとつにまとめておく…とか。
>136 固めてあげろ
140 :
nobodyさん :2010/08/13(金) 05:51:38 ID:tji6Fsyn
携帯サイトを作っていて、1ソース3キャリア対応にしたいので 配布されている絵文字のライブラリを使おうと思っています。 こういう「DB使わないし、一部PHPのライブラリを使うだけ」 と言った状態でも、Cakeを使う事で幸せになれるでしょうか?
人それぞれ案件それぞれ。 いいえって返ってくれば使わないでおこうと思ってたんなら、 君には恩恵は少ないと思うから使わなくていいと思う。
そういう返答する奴多いけど、なんで天の邪鬼回答する必要がある? 人それぞれなんて言ったら、すべて人それぞれで終わりだろ。
天邪鬼だと・・・?
なんですべてが人それぞれなんだ?いみわからんこというな
意味わかるだろ。「人それぞれ」って言っちゃったら どんな要件にも人それぞれって回答したら済む。
あ?
直近で言ったら
>>134 の質問は人それぞれか?
「人それぞれやり方は違う」って返答すればそうなるだろうな
無駄レスいらね
>>142 くだらないレスするくらいなら、ちゃんと質問に答えてやれよ
>>140 Cake専用の絵文字ライブラリなんてあったっけ?
Ktai Library for CakePHPなら単体でも動作したはずだよ
>>142の模範回答に期待
模範解答も糞も、知らなければ答えなかったら良いだけだ。 「人それぞれ」って回答が一番糞だろ。無駄レス以下だ
>>153 知らないんじゃなくて、人それぞれとしか言いようがないっていうことでしょ
>>140 が人それぞれじゃないと思うのなら、自分で
>>140 にレスすればいい
他に誰も
>>140 に答えられなかったら「人それぞれ」が正解になるだけ
>>154 いや、普通に
>>150 が答えてるじゃん。
俺でも「一部だけ使うならフレームワーク使わなくても良いんじゃないか?」
って書くな。
で、そう思ってスレ見たら
>>141 とかふざけたこと
書いてあったから気になっただけだ。これ言ったらどうしようもねーだろ
>>141 は別にふざけた回答でもなんでもない。そう思う君がおかしいんだよ。
>>156 どこがどう「ふざけた回答じゃない」だ?何も解決できないじゃん。
「昼飯何食えばいい?」って質問に「好きな物食えばいいよ」って答えるようなもん。
自分でそれ以上の恩恵を見いだせないなら不要って答えの何がふざけてるんだ? エスパーじゃないんだから、あなたにはこれとこれとあとこれも有用です。 したがってCakePHPを使いなさいって答えられないよ
エスパーほど高い能力いると思えないけどな。
俺は
>>136 を書いたけど、適当につぶやいたつもりが
普通にレスしてくれてたし。で、意見書こうと思ったらこれだ。
単に
>>141 は天の邪鬼なだけだろ。
>>157 おいおいwww
「昼飯何食えばいい?」
実にどうでもいい質問だな。それこそ人それぞれでおk
お前はなんて答えてあげるんだい?ww
>>160 じゃ、お前が「人それぞれ」って返答した時点で会話が終了するな
>>155 ちょとおちつけよ
>>140 の質問者はKtai Libraryなんて一言も書いてないぞ。
それでなんで「一部だけ使うならフレームワーク使わなくても良いんじゃないか?」
の回答に直結するんだ?CakePHP用に作られたプラグインやらライブラリが
すべてCakephpなしに動くなら君は正しいよ。そうじゃないだろ?
それとも何か?回答者はわざわざ行間読んでKtai Libraryにたどり着き回答する必要があるのか?
求めすぎだろ。頭ひやせ
携帯サイト用のライブラリーやプラグインはいくつかあるんだぞ
質問者が暴れております
>>162 待て待て。Ktai Library云々の話を持ち出すまでもなく
「一部で使うだけなら、CakePHPの恩恵が得られない」
と言う意味での
>>155 は別におかしくねーだろ。
逆におかしいと思ってもお前が判断するような事じゃねーよ
わかったから消えろ
天の邪鬼()笑
ちなみに僕はそうめんを食べました
匿名掲示板なんだから親身な回答を期待する方が間違い 期待する回答がもらえなかったら、もうちょっと詳しく 事例の説明をして、もう一回回答をもらおうとするのが 普通の質問者のスタイルじゃないか? それを一回自分の期待する回答が得られなかったからといって あまのじゃくだの何だの言うのなんて、質問者の立場が わかってないとしか思えない 俺なんて質問してもレスさえもつかなくて、自分で 他人のふりして回答を書き込むのがしょっちゅうなんだぞ 見ず知らずの他人が金ももらわずに回答するんだから、 レスがついただけでもありがたく思わなきゃ
始めてbakeを使ってみたんだが、凄いな・・・ 適当にテーブル作ってbakeしたら、それだけでそこそこのサイトは完成する
173 :
☆忍者Perl☆ ◆M5ZWRnXOj6 :2010/08/13(金) 23:36:15 ID:LkLBXJmk
PHPってばかしかいないね^^; 頭湧いてるバカばっかりwwwwwwwwwwwww (笑)(笑)(笑)(笑)(笑)(笑)(笑) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww だからなめられんだよクソwwwwwwwwwwwwwwwwwwwwww
Perlerが威張るってww PHPerって半数くらいはPerlもできるだろ
belongsToの質問です。 3テーブルあります。 購入履歴(Histories)テーブル:id、fruit_id、user_id 果物(Fruits)テーブル:id、producer_id 生産者(Producers)テーブル:id、rank(A、B、C、D・・・) 下記のようなbelongsToの設定をモデルにしてあります (要するに多階層のbelongsToです) History:belongsTo=Fruits Fruit:belongsTo=Producer recursive=2でHistoryモデルからfindする際、 「Producer.rank='B'」 を条件に指定したのですが、belongsToで下位の階層のカラムを条件に指定することは 可能なのでしょうか? 上記条件を指定すると「Unknown column」となります。 なお条件を指定しない場合、きちんと2階層目までのデータは取得できています。
できるはすだよ 条件指定してない時には正しくデータがとれてると言うことは アソシエーション自体は正しいから、conditionsが間違ってるっぽいな 発行したSQL文かconditionsの内容書いてみ
177 :
175 :2010/08/14(土) 02:04:35 ID:???
条件指定なしの場合のSQL文を確認しました。 1.SELECT `History`.`id`, `History`.`fruit_id`, `History`.`user_id`, `Fruit`.`id`, `Fruit`.`producer_id` FROM `histories` AS `History` LEFT JOIN `fruits` AS `Fruit` ON (`History`.`fruit_id` = `Fruit`.`id`) WHERE 1 = 1 2.SELECT `Fruit`.`id`, `Fruit`.`producer_id` FROM `fruits` AS `Fruit` WHERE `Fruit`.`id` = 1 3.SELECT `Producer`.`id`, `Producer`.`rank` FROM `producers` AS `Producer` WHERE `Producer`.`id` = 1 4.SELECT `Fruit`.`id`, `Fruit`.`producer_id` FROM `fruits` AS `Fruit` WHERE `Fruit`.`id` = 2 5.SELECT `Producer`.`id`, `Producer`.`rank` FROM `producers` AS `Producer` WHERE `Producer`.`id` = 2 結果は Array( [0] => Array( [History] => Array( [id] => 1 [fruit_id] => 1 [user_id] => 1) [Fruit] => Array( [id] => 1 [producer_id] => 1 [Producer] => Array( [id] => 1 [rank] => A))) [1] => Array( [History] => Array( [id] => 2 [fruit_id] => 2 [user_id] => 1) [Fruit] => Array( [id] => 2 [producer_id] => 2 [Producer] => Array( [id] => 2 [rank] => B))))
178 :
175 :2010/08/14(土) 02:06:46 ID:???
SQL文が5回発行されていました。 多階層のJOIN文を作成して1度でデータを取得していると思っていたのですが、 1階層目までしかJOINせず、その先は個別にデータを取得してるみたいです。 このような分割をされると、下位の階層のカラムを条件で指定するのは無理ですね・・・。
179 :
175 :2010/08/14(土) 02:07:50 ID:???
すみません、試したバージョンは1.3.3です。
180 :
176 :2010/08/14(土) 03:18:02 ID:???
あー、すまん belongsToでも2階層先はSQL分割されちゃうのか なんなら Fruit hasMany History Fruit belongsTo Producer にして $this->Fruit->find('all', array('conditions'=>array('Producer.rank'=>'B'))) とかにしたらどうかね ちょっと酒入っているので自信がないが
181 :
175 :2010/08/14(土) 03:51:18 ID:???
>>180 ありがとうございます。
今回例に出したのは2階層なんですが、実は4階層のケースでどうしようか悩んでいるのです・・・。
ちなみにお教え頂いた
「特定のモデルを中心に、hasManyとbelongsToを使って上下1階層(合計2階層)を取得する」
方法は成功しました(SQLは2文、条件指定も可)。2階層までならこの方法でいけますね。
今回のような2階層以上のデータの芋づる取得はそんなに多いケースではないので、
とりあえずMySQL上に多段JOINしたViewを定義して、そのView用のmodelを使用しようと思います。
Containable Behavior でいけそうなきがする
183 :
Perl Assasin ◆lNsIJTdtUY :2010/08/14(土) 08:14:48 ID:ExEQpWlE
>>174 そろそろうざいわ
言っとくけど俺をあまりナメないほうがいいよ
VIPでコテハンやってるしクソコテ潰すくらいの影響力は持ってるから
くだらないことで刺激して後悔しないようにね
185 :
176 :2010/08/14(土) 13:11:08 ID:???
186 :
▲☆◎Perl忍者◎☆▼ ◆M5ZWRnXOj6 :2010/08/16(月) 19:25:14 ID:m+WY7Mxd
phpやってるやつってバカばっかだね 死んでくれない?(笑)
分かった
まかせとけ!
189 :
nobodyさん :2010/08/17(火) 22:14:24 ID:ZhW5Etfn
生成されたHTMLコードにゴミ(空白)が入ってしまいます。 ゴミはコントローラの処理後、ビューの処理前に入っているようです。 コントローラの処理とビューの処理の間に入りそうな処理は何がありますか? 念のため、phpの閉じタグ?>はソースの末尾に入れないようにしていますが、漏れがあるのでしょうか。
190 :
nobodyさん :2010/08/17(火) 22:23:45 ID:ZebP+0w7
すいません、質問なんですが、 wysiwygエディターを使うことになりまして、 どれを使って良いのかわからないので、ご教授頂きたいのですが。 機能としては、文字の修飾、画像の貼り付け(できればローカルPCからダイレクト)が出来れば良いと考えております。 ライセンスは無償でフリーがベストです。 何か良い情報をお持ちの方、よろしくお願いします。
>>189 PHPの閉じ忘れくらいしか思いつかんな
あとはapp_controllerあたりか
コンポーネント、ヘルパーとかを読まないプレーンなコントローラーを作って空白入るか確認した?
>>190 tinyMCEでいいんでないの?
ちょっと前は重くて嫌だったけどブラウザが充分早くなったし。
CakePHP 1.3.2
CentOS 5.4
Htmlヘルパーのcssを使ってcssの指定をしていますが
http://xxxx.xxxx/test でアクセスするとcssが正しく反映されるのですが
http://xxxx.xxxx/test/ でアクセスしたり
http://xxxx.xxxx/test/regisger などでアクセスすると、cssが反映されません。
指定は、普通に$html->css('sample');のように行っており、
いずれの場合も出力されたソースを見ると
<link rel="stylesheet" type="text/css" href="css/sample.css" />
と返ってきています。
cssファイルはapp/webroot/cssに置いています。
どうすれば正しく反映されますでしょうか。
>>194 webroot/.htaccess をチェック
>>184 本来なら
<link rel="stylesheet" type="text/css" href="/css/sample.css" />
ってなるはずだから自分でどっか弄ったんだろ?
Cakeのバグじゃなさそうだから、自分でコード追って解決しろよ
>>195 見てみました。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /testtest/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
>>194 は間違いで、URLは
http://xxxx.xxxx/testtest/test/ みたいな感じで、testtestがサブディレクトリ名で、testがコントローラ名です。
RewriteBase /testtest/app/webroot/
RewriteBase /testtest/app/
等も試してみましたが、結果は同じでした。
>>196 cakeの下はいじってないです。
とりあえず
$html->css('/css/sample');
としてみると
<link rel="stylesheet" type="text/css" href="/css/sample.css" />
が返ってきましたが、やはりcssは反映されませんでした。
外部CSSとかJavascriptをCakeの昨日使わなくても
bootstrap.phpに定数書いて参照させる方が確実だぞ
define('WEBROOT_URL', '
http://localhost/ ');
<link rel="stylesheet" type="text/css" href="<?php echo WEBROOT_URL;?>sample.css" />
みたいにさ。俺もaリンクもこれでやってるよ。
>>199 アホだろ
定数もヘルパーも用意されてるだろ
情報二元化推奨して喜ぶなよアホ
>>200 定数の件はまあ好みだから良いとして、
ヘルパー使わない事をアホだと言われるのは違うと思うがな。
お前みたいに自分だけで開発してて
パフォーマンスも気にしないような奴なら使えばいいよ
情報二元化推奨して喜ぶなよアホ = ヘルパー使わない事をアホ
独自定数用意して・・・ってそれこそ一人で開発してるからできる技じゃない? 速度的にきになるなら別のところで対処しろよキャッシュしとくとかさぁ Cakeのスレでヘルパー使うの否定して、独自定数定義しろってまずおかしいだろw てかフレームワーク使ってる意味なくね?
>>203 俺が馬鹿なのかと思ってググったら、
同じ事やっている奴いっぱいいるんだが。
別にRouter::url()で表示しても良いだろうが、
そこまで突っ込んだり馬鹿にしたりする事か?
ヘルパーにしても使わない方がパフォーマンスするのは公式の通りだし、
テンプレもわかりやすいだろ。単に叩きたいだけならそう言えよ
わかったから勝手に安心してろ。
ハードコーディング推奨派
>>199 CSSっていう定数知ってる?
自分だけで開発しているんじゃないのなら、なおさら無意味な定数を作らない方がいいよ
CakePHP 1.3.3 での、フォームの配列項目とvalideteに関する質問が在ります。
http://book.cakephp.org/ja/view/1391/Field-naming-convention では name="data[Modelname][0][fieldname]" といった、配列によるフォーム生成を示していますが
この、同じモデルを使っているvalideteはどうすればいいのでしょう?
配列のままモデルに投げてもvalideteに引っかかりませんし(常にtrue)、
配列をばらして個々にモデルに投げても、valideteによるエラーメッセージはフォームに反映されません。
>>208 たいした規模じゃないし、理解もすすむと思って
こういう場合Modelから先をXdebugなりで追うといいよ。
>>208 saveAll() の 'validates' => "first" は?
fat model, skinny contoroller で質問です。 僕のコントローラーはそれはそれは太っているので、師匠にもっと痩せさせろと言われました。 「コントローラのそれぞれのファンクションはだいたい10行以内にまとめる。長くても20行ぐらい」と言われました。 次に師匠に会う時まで、できる限りコントローラーをダイエットさせたいのですが、気になる部分を質問させてくださいませ。 1. if などのビジネスロジックは一切コントローラーに書かないほうがよいか? 例えば、 if(empty(this->data)) などの単純な構造も? 2. あまりにもコントローラーをシンプルにしすぎると、コントローラのコードを見ても、なにをやっているのかが わからないようにならないか? 特に、2の問題で頭を悩ましております。
>>211 あくまで私見でレス
1. そんなことない。書く。 if(empty($this->data))使わない理由無い
2. 処理の流れが分かるように書く。ロジックはモデルに
10行以内とかは、目安として伝えてくれたんじゃないの?
とらわれると本末転倒
>>212 ナイスな指摘ありがとうございます!
こだわりすぎて、なんでもかんでもモデルに詰め込んでしまい、
処理の流れが逆に分かりにくくなるのは本末転倒ということですね。
Cこういうアクションだからこういうデータが欲しいな Mじゃあ僕の持ってるデータをこういうふうに加工して・・・はい、どうぞ
ちなみに、 モデルとコントローラ間での受け渡しでは、変数を配列に格納して受け渡す方法と、 セッションにして受け渡す方法があります。 セッションを使ったほうが簡単な気がするのですが、できる限り変数で受け渡さないと サーバに負担がかかってページが重くなるという認識は合っているでしょうか? //こんな感じで変数で受け渡したほうが速い?? $parsed_xml = $this->Amazon->request_xml($category,$date,$page_list,$page_number);
はぁ?
ここに書く前に動かせよw
>>215 自分でベンチマークとってみなよ。そんで結果報告してね。
219 :
nobodyさん :2010/08/19(木) 21:33:24 ID:Px7+fb0W
>>219 もちろん可能。
つうかマニュアル一通り読んでみようや。
その上で、ああこれとこれをこう使えば○○ができるな。
って言うのがプログラムの一番面白い所だと思うんだけど。
>>220 お返事、ありがとうございます。
マニュアルを一通り、読んでいろいろ試してみます。
もし、わからない点があれば、また、ここに書き込みますので、
ご教授のほどお願いします。
>215 速い遅い以前に、どこでも触ることができるセッションでパラメータを渡すのは怖くね? 呼び出したメソッドで処理される前に、どこかで変更されない保証があるならともかく
223 :
215 :2010/08/20(金) 07:48:15 ID:???
どうもアドバイスありがとうございます。 セッションがどうしても必要な時以外は、変数で受け渡すことにいたします!
>>223 コントローラーとモデル間の受け渡しは絶対セッション使っちゃダメだろ。
基本的にセッション有効期間中、メモリーにデータが残るんだぞ。
毎回ちゃんと消せばいいけど、そんなプログラムはダサ過ぎだろ。
作った奴以外がプログラムを読んだとき、どこでデータが破棄されるかも分かりづらい。
綺麗にMとCが分かれているような構造のソース見てみたいなぁ。どっか公開してないかな。
227 :
忍者Perl ◆M5ZWRnXOj6 :2010/08/20(金) 16:07:53 ID:2R5mBLkn
なにこのクソスレ! 痛いっすね!!! マジパネーッス!! ケーキとかネーミング痛すぎっすね!!マッスルPHPに変えなさいよ! お尻プリプリ!!
NGワードを登録するだけの簡単なお仕事
229 :
nobodyさん :2010/08/20(金) 22:11:44 ID:sucUVck5
まだCakePHP使ってる人っているのか ある意味感心する
レス乞食
>229 ありがとう。がんばるよ。
感心されちゃった(テヘッ
234 :
Perl仙人 ◆M5ZWRnXOj6 :2010/08/23(月) 23:45:48 ID:3hx9uhRe
3キモ言語の特徴(Ruby PHP Python) 1、クソ発想力が無いゴミ他人のまね ◎◎ッターとか作りだすw 2、とりあえず流行に便乗 先を見通せない 3、メディアストリームにかける 4、ネットなのに敬語 (言い訳 ネットだから敬語でしょぉ 5、脳味噌が生まれつき弱い 考える力が無い(笑) 6、Perlerに絶対勝てない無理無理(笑) 7、最強とか最高とかいっちゃう 糞痛いやつら 8、ホリエとかIT著名人をフォローしちゃう やたらとMatzとかわめきだす 9、クソガリ クソチビなせいか脳味噌に栄養が行き届かない 10、力が無い 非力w 喧嘩したら速攻殺される(笑) 頭で勝てるとほざいてるがバールで殴られて即死 11、ブログなどツイッタの画像が2次元 美少女とかPHP厨に多い 12、くだらないつまらないゴミツイートをRTしまくる真性マジキムチ行為w 13、なにかしろPythonをひっぱってほざきだす 今時 今時って言葉が大好き 14、今時なわりに成果物がクソ クソwebアプリ乙津です 15、存在が間違え 自殺してください死んでくださいお願いします(笑) 16、武道やってるとかいうが 合気道(失笑) クソガリでベンチが100kg未満(笑) (笑)
PHPを5年やってますが 全部当てはまってます。
236 :
219 です :2010/08/24(火) 00:11:15 ID:5qdug9Ot
>>219 ←元スレ
>>220 なんとなく、ここを変更すれば、できるというのは確認できました。
アップロードファイルを画像ファイル(jpeg,gif,png)に制限することも可能ですよね?
何か触れてはいけない、本体のソースコードをいじりそうなんですが、
そんなことはないですよね?
僕が何かを間違ってますよね?
うんもう諦めてくれスレ違いなんだ あと ←元スレ ってなんだ。なんか君変なんだすごく。
>>236 本体以外の話は使っている人がいないとレスまともなレスが付かないよ
とくに
>>219 ←元レス
のような大雑把な質問じゃーね
こんなレベルでもCakePHPは使いこなせるってことだな、すげぇよCake!!
優秀ってことだなFWとして
>>241 俺も買った。
cakeは1.2から使ってるが、改めて読むには良い内容だと思うよ。
宣伝乙
>>241 自分も買った。
まだ全然読んでないけど、初版の <?= 部分が <?php echo に書き直されているっぽいのと
Jsヘルパーの加筆を確認した
1.2本と内容は同じなの?
246 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 17:13:39 ID:jwes9+en
>>アップロードファイルを画像ファイル(jpeg,gif,png)に制限することも可能ですよね? Perlでやれば一発なのに 脳味噌たりてないのかな だからPHP クソゴミダニウンコハゲシネカス存在が釣りクソゲンゴ世界3キモ言語っていわれるんだよ(笑)
248 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 17:24:59 ID:jwes9+en
(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑) (笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)(笑)
249 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 17:28:09 ID:jwes9+en
俺は忍刀を奪うため Perl隠れ7人衆から 忍刀を強奪したい
250 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 17:29:55 ID:jwes9+en
おう チャクラ負けしてるよ
気違いすぎるw
何かにつけて日本に文句つけてくる朝鮮人みたいなヤツだな
というか、言語選ぶなよ PHPとPerlなんて殆ど似てるんだから案件に寄って両方請け負うよ
254 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 17:38:30 ID:jwes9+en
俺の通り名は 天秤のPerl忍者 何故なら、態度や気分が 天秤のようにかわる そのため、突然殺人衝動にかられて社員とかをやってしまう 前はMixiで働いてたが 突然殺人衝動においやられて PHPをつかってるやつの声帯を手でえぐってやってしまった・・・ 一面中、血が飛び出て首から血が噴水のように飛び出ていた。 オレ「オレなにやってんだ・・・ひいいいいいええええええええ!!!!!!!!!」 またまたPHPをやってるやつをやってしまった グシャッ!!!!!!! 社員「キャーーーーーーーーーーーーーーーーーー!!! 俺はその日をさかえに PHPユーザたちから社内いじめにあって 俺をPHPやってるやつが憎いと思った
255 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 17:39:30 ID:jwes9+en
256 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 17:40:53 ID:jwes9+en
>>253 っで?
君はバカだろ PHPやってろよ君は
僕はIT業界で働かないからどうでも良いけどね(笑)
>9 :Perl忍者仙人モード ◆M5ZWRnXOj6 [] 投稿日:2010-08-22 22:30:40 >俺はPHP厨達にさんざんいじめられきた > >親にも見放され、IT業界にも見放され 俺はIT業界に復讐をするため生きていく > >そして俺はお世話になったPerlerやプログラマを抹殺し、凄い力を手に入れた 一瞬でコードを解読する目 >その目は複雑なPerlのコードでも 1万倍に上がった動体視力で一気に解析する > >もう俺に勝てる者はいない > >あの最強Rubyist まつもとひろゆきが俺の力に脅威を覚えて 俺を倒すようなプロジェクトを立ち上げていた >俺はRubyistに囲まれたが この眼術で一瞬でかたをつけた
258 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 17:48:04 ID:jwes9+en
オレはようやく理解した オレは復讐者 たとえ悪魔に身を委ねようとも 力を手に入れなきゃならない道にいる Perlの花は2度咲かない!!!!!!!!!!
Perlは素晴らしい言語だよ お前がPerlって名前背負って荒らしてるとPerlに傷がつくからやめろよな あと、早く病気治せよ
260 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 19:33:38 ID:jwes9+en
259に裏で荒らしてPerl利用者を増やせっていってお金もらいました 259「2chでPerl忍者っていうコテで発言しまくれw」 オレ「はい」 259「これでPerl利用者増えるぞwwww」 オレ「うん」 259「誰にも言うなよwwww」 オレ「絶対言いません」 っていわれて50万貰いました
261 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 19:58:23 ID:jwes9+en
259のPerlを有名にさせる作戦は終りました
ただのコピペとかメインの荒らしと思いきや 全部書いてるんだ。こいつマジでビョーキだろ うわああああ
怖いよね
264 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/24(火) 21:07:34 ID:jwes9+en
っと3キモ言語の下っ端がわめいています
ワロタ 早くこいつを捕まえないとそのうち人殺すぞ
266 :
241 :2010/08/25(水) 21:46:12 ID:???
今日「CakePHP 1.3によるWebアプリケーション開発」が届いて読んでるけど、ちょっといまいちな内容だな・・・ チャプター2まで読んで気になった点 ・セットアップ時にSecurity.saltとcipherSeedを変更してない 「今は変更しなくても特に問題ないので」と書いてあるが、Noticeはなるべく早く消すべきじゃないだろうか ・セットアップ時のtmpのパーミッション変更に触れてない pages/homeのスクリーンショットではYour tmp directory is writableになっている XAMPP前提で書かれてるせいだろうか?知らないとLinuxの人とかはまるだろうし、一応触れて欲しい。 ・なぜかapp/view/layout/default.ctpではなくapp/view/layout/hello.ctpを作ってコントローラーでレイアウト指定してる まずはレイアウト指定しないで使えるdefault.ctp使った方がわかりやすいと思うんだが・・・ app/view/layout/default.ctpについて記述は今のところない。 ・controllerで$this->set("result", htmlspecialchars($result)); htmlspecialcharsはviewでやるべきなんじゃないだろうか それに加えてh()についての解説は(インデックスに載っていないので)たぶんない 以後はhtmlspecialcharsが必要そうなシーンでh()ではなくSanitize::stripScriptsとか使ってる、なぜだ ・controllerでhtmlタグ書きまくり 最終的に「controllerにタグを書くのは良くないので、こういうのは全部viewに移しましょう」と修正するのかと 思いきや、そのまま説明が終わってしまった 序盤だから説明をはしょるためなんだろうけど、せっかくのフレームワークでMVC切り分けないのはちょっと・・・
267 :
241 :2010/08/25(水) 21:57:16 ID:???
誤植
・P53 3行目]閉じ忘れ
・P65,P71, 修正されているはずの、<?= が<?php echo になってない
その他
・本文の$マークが縦棒二本で見づらい・・・
・viewがきれいじゃない(好みの問題かもしれないけど)
<?php echo $a; ?>
<br />
<?php echo $b; ?>
ではなく
<?php
echo $a;
echo "<br />";
echo $b;
?>
みたいな書き方をするので妙に見づらい。
という感じで、細かい突っ込みどころもあるけど、なんだか不安になる内容だった
>>241 のレビューでも誤植が多いと突っ込まれていたけど、コードレビュアーとかいないのかな?
>>266 宣伝乙とか言われてたけど、色々と酷いなw
ひでーな読みたくねーわ
>>267 個人的には後者のコードの方が好きだけどな
もっとも、自分で書くなら
<? php
echo $a.'<br />'.$b;
?>
ってな感じにするけど。
271 :
270 :2010/08/25(水) 22:13:12 ID:???
地味に間違えてるわorz
最後まで読めばいいんじゃねとりあえず そんな俺は買ったけどまだ読んでないw
273 :
241 :2010/08/26(木) 00:42:52 ID:???
Chapter3で気になったところ ・pr()を使わないでprint_r() pr()はインデックスに載ってないのでたぶん出てこない h()もそうだけど、省略表記が嫌いなんだろうか ・モデルから持ってきたデータを回すときにforeachではなくfor 好みの問題だけど、foreachの方が使われることが多いし、特に理由がなければ最初はforeach教えた方が・・・ ・$this->flashは使わずに$this->redirect save完了したときなどはとにかくredirectしてる。メッセージ出してあげた方が親切なんじゃ・・・ $this->flashもインデックスには載っていないのでry(Session->flashは載ってた) ちなみにredirectについてTipsで「redirectはうまく動かない場合もあるので、そういうときはphp.iniを修正」という 解説が載っている。問題起きやすいのならとりあえずflashでいい気がするけど・・・ ・beforeFindの実践例で「limitやorderが設定されていなかったらデフォの設定で上書き」というもの limitはともかくorderは普通にmodelで設定できるからbeforeFind使わないでも・・・ ・VALID_NOT_EMPTYは1.2まで使われていたバリデーション用の定数という説明 1.2の時点で非推奨になっていたような・・・(ちょっと自信なし) ・ユーザーデータ用のテーブルがPersonalsテーブル 形容詞じゃなくて名詞でUserテーブルとか、Peopleテーブル(Personモデル)とか・・・ ・<a href="/cake/sample/boards/edit/<?php echo $id; ?>">※この投稿を編集する</a> $html->linkが嫌いなのか、後半を見ても基本的に直でHTML書いてます ルーティング使うときとか便利だし、とりあえずhtml->link使うように教えた方がいい気がします ・記事を見るのはshowアクション、投稿者のデータを見るのはshow2アクション さすがにshow2はないんじゃないでしょうか なんか昔のcgi説明サイトを思い出しました
274 :
241 :2010/08/26(木) 00:45:18 ID:???
・変なバリデーション if(!empty($this->data)) { $this->Board->save($this->data); } if($this->Board->validates()) { $this->redirect('.'); } 検証してないんですが、たぶんこれだと2回バリデーションが行われるんじゃないでしょうか if(!empty($this->data)) { if($this->Board->save($this->data)) $this->redirect('.'); } とかでいい気がします 誤植 ・P78 bloards_controller ・P168 コードの方はnotEmptyになってるけど、解説文がVALID_NOT_EMPTY もうポストイットがもったいない気がしてきた。
>>273 買う価値がないのは十分分かったからもういいよ
あとはブログにでも書いてなよ
俺も$html->linkは使わない デザイナから上がってきたAタグを$html->linkに置き換えるのは面倒。 どんな属性が入ってるかわからんからその都度optionsに入れる必要がある。 だから href="<?php echo $html->url(array(......))"って書き換えるようにしてる。
277 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/26(木) 07:17:20 ID:/qgtmxHg
PHPでも $ 使うんですかwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww 真似しかできないwwwwwww Perlの真似
等と供述しており
>>241 詳細なレポとても価値があるぞ。
アマゾンのカスタマーレビューに書いてくれるとなおよい。
281 :
241 :2010/08/26(木) 14:05:08 ID:???
書くの疲れたから、これ以上は書かないよ。
>>273 の言うように、買う価値がないと伝わればそれで十分だし。
アマゾンとかブログで書くと個人特定されちゃうしね。
もう秀和システムの本は買わない。
参考になった。ありがとう。 ・・・ver1.1から使ってて基本はわかってるし あとはネットの情報で補完していくのが利口みたいだね。
283 :
nobodyさん :2010/08/26(木) 23:15:45 ID:bJUkFpkI
あほだろお前
CakePHPのctpってHTMLのデザイナーにとってすごい見づらいね htmlの中にPHPが大量にそのまま混ざってるって、ちょっとありえない お前らその辺はあきらめて使ってるわけ?
<?php echo $hoge;?> とか <?php foreach ($arr as $foo):?> <?php endforeach;?> とか <?php echo $this->element('bar');?> くらいしか殆ど描かないんだけどいやなの? いやならsmartyつかえばいいけど
お前らって。このスレ、デザイナーも見てるの?
>>285 PHP?なにそれ?って奴に頼んでるのかお前は
テンプレートエンジンのループなら意味解るけどfor文だとさっぱりとか言う奴の方がむしろおかしい
どうせツールで読み込めば<??>タグなんて無視されるんだし
289 :
nobodyさん :2010/08/27(金) 10:27:21 ID:eU+Zo85k
Paginatorのソートについて質問です。 Viewでソートをする場合 <?php echo $paginator->sort('ID', 'User.id');?> と書きます。 1:アソシエーションしているモデルを選択している場合、モデル名が必要ですが、 Userというモデル名を書きたくないです。書かずにソートさせる方法はありますか? 2:ソートをクリックした後、URLがsort:User.idのようになりますが、 カラム名がURLに表示する事に違和感を受けます。 数字などに置きかえ出来ないでしょうか?
フレームワークの規約に従いたくないならフレームワーク使わなきゃいいんじゃね?
って言う奴多いけど、一部変えるのが困難なだけで オレオレに戻るのはいかがなもんかとおもうけどな
自分が大好きなものにケチを付けられた時の子どもの反応と同じだね
>>285 俺はHTMLヘルパーを極力使わないようにして、ソースをシンプルにしてるよ。
デザイナーに見せたら「わかりやすいです」と言っていた。
あとは、
>>286 みたいに必要なコードだけ教えれば大丈夫だろ。
>>289 nanapiも普通にURLがsort:Search.pvとかなってるし、
気にしなくても大丈夫じゃねぇ?問題あったらこのやり方採用してないだろうし。
mysqlからデータを拾って、それをさらに計算して一覧にしたい場合あるよね。 そういう場合ってcakephpのpaginate使えないんだけど、みんなどうしてる?
>>294 paginateのパラメータにjoinの指定が出来るから、それ使ってる
もしもSQLで対処できないような計算の場合 1.paginateの結果(キーになる部分のみ)を変数に格納 2.キーをもとにプログラムで計算して、結果を変数に追加 3.編集した変数をsetでviewに渡す
afterFindでは出来ないの? 計算ってどんな?
>>294 virtualFieldでできるはずだが、違ったかな?
>>283 そこをルートとして使ってるのなら、普通にそのまま
define("ROOT_URL", "
http://hoge.com/~piyo/home ")
とかでいいじゃん
>>293 今すぐセキュリティの問題が出るというわけでもないだろうけど、
裏側の情報はあまり見せたくないという気持ちは俺にもわかる
特にsort:User.idみたいなのだと、そのまま中身が見られている
感じがして気持ち悪い
>>299 その書き方教えると「余計な定数増やすな!」って煽られるぞw
cakeはルート設置を推奨してるから、それ以外で運用するときに問題が出るのはしょうがない
295 〜 298さん ありがとう。 user テーブル 1 id , name shiken テーブル 多 id user_id tokuten の関係で、「平均点で50点以上のユーザーのみ取得したい」 とか言う場合なんだけど。 join だと複雑な書き方がいまいちわからず、cakephp1.2なので virtualField使えず。 afterFind でできるならそれが一番楽だと思うんだけど。 一度上記全てをググって勉強してみます。 ありがとう。
303 :
299 :2010/08/27(金) 15:09:18 ID:???
>>289 1.URLはorder:idとかにして、beforeFilterあたりでparams['named']['order']を見て、
モデル名がなければモデル名を付加するとか
2.URLはorder:0とかにしておいて、bedoreFilsterあたりで、0=>id, 1=>createdみたいな
対応表を使って差し替えるとか
cakeのURLはシステム的にわかりやすいけど、ユーザーに見せるURLとは
ちょっと違う気がするんだよなあ
URLがシステム的にわかりやすいと、URLを書き換えて意図しないURLで
アクセスされちゃったりということもあるだろうし
そういうところはきちんと事前に想定して防げばいいんだろうけど、それでも
なるべくユーザーからはシステムは見えなくしたい
304 :
299 :2010/08/27(金) 15:34:45 ID:???
すまん適当なことを書いてしまった $paginator->sort('ID', 'User.id');で作られるURLは、order:User.idじゃなくてsort:User.idだな 今試したらアソシエーションしたモデルでorder:idでアクセスするとエラーになるけど sort:idでアクセスしたら、勝手にモデル名が補完された なので、モデル名出したくないのなら$paginator->sort('ID', 'id');でいいんじゃない? アソシエーションした他のテーブルのカラムでorderしたい場合は知らん。
>アソシエーションした他のテーブルのカラムでorderしたい場合は知らん。 その場合はやっぱり$paginator->sort('ID', 'User.id');こうなるんじゃないか?
306 :
299 :2010/08/27(金) 16:24:42 ID:???
それならやっぱりURLはsort:tourokujunとかにして、beforeFilterでparams['named']['sort']を見て tourokujunだったらUser.idに書き換えるとか
307 :
305 :2010/08/27(金) 16:56:58 ID:???
function beforeFilter() if (isset($this->params['named']['sort'])) { if ($this->params['named']['sort'] === 'user_id') { $this->params['named']['sort'] = 'User.id'; } } } 適当にこう書いてみたけど、こんな感じのエラーが出るね。 SQL Error: 1054: Unknown column 'User.user_id' in 'order clause' これ以上テストするのもめんどいので後はしらねw
308 :
299 :2010/08/27(金) 17:45:25 ID:???
paginatorが見てるところが違ったな、$this->paramsじゃなくて$this->passedArgsだった
if (isset($this->passedArgs['sort'])) {
if ($this->passedArgs['sort'] === 'user_id') {
$this->passedArgs['sort'] = 'User.id';
}
}
これで動いた
っていうか
>>289 は他のテーブルのカラムでソートしたいのか?
310 :
299 :2010/08/27(金) 20:28:29 ID:???
1.3.3だけどちゃんと動くよ 他のテーブルのカラム指定してもOK ただ、存在しないカラムを指定するとエラー表示せずにそのままorderなしでSQL発行するみたい
いや、そうじゃなくてpaginateで使うんだろ? ソート扱いになっていないみたいなんだが。
アホがアホにモノ教えるって悲惨な状況だな
313 :
311 :2010/08/27(金) 20:49:55 ID:???
ちゃんと書かないと誤解を招くな。 308の内容を同じ1.3.3で試してみたけど、確かに1回目のOrderは適応される。 でも、ソートのリンクをクリックしたら並び替えされないし、 対象リンクのマーク(↓↑)が適応されていないよ って事を言いたかった。 308以上の事をしていたら知らんw
314 :
299 :2010/08/27(金) 21:01:05 ID:???
>>314 書き下手で済まんな・・。
だから要件を満たしてないのでは?って言いたかった。
ちなみに309,311だけど。
cakeって難しいんだね
317 :
Miyagawa ◆M5ZWRnXOj6 :2010/08/28(土) 16:50:11 ID:kvWFLXrw
Hello. CPAN Module use Thank you :D
318 :
Miyagawa ◆M5ZWRnXOj6 :2010/08/28(土) 16:56:12 ID:kvWFLXrw
hi! They are shit!! fuck off!! 死ね!
fack you!
320 :
Miyagawa ◆M5ZWRnXOj6 :2010/08/28(土) 17:10:47 ID:kvWFLXrw
あんまり調子乗ってるとCPANから俺のモジュール全部消すぞこら
321 :
宮川マンセーオタ ◆M5ZWRnXOj6 :2010/08/28(土) 17:12:21 ID:kvWFLXrw
、,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ノ´::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::) (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::) ヽノヽノヽノノヽノヽノノヽノヽノノヽノヽ、::::::::::::::::) | ,,;;;;;;;;;;;;;;,,,,,, )) ( ,,,,;;;;;;;;;;;;;,,,, `ヽ、;;;;;;;;::) || ̄ ̄ ̄ ̄ ̄|____| ̄ ̄ ̄ ̄ ̄| /~~ヽノ:::) || -=・=- 0⌒0 -=・=- | ̄´ ´~) );;::) |\___/ノ ミ\___/ヽ つ, ノ;;;:ノ | ´ ./ 、´ ` (_ノ;;;ノ < (。、 。) >;;;;::ノ \ ノ`∪´ ヽ、 /|;;;;ノ | ....(/~~~~~~~\).... 彡 |ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ( ̄ ̄~~~ ̄ ̄) | イ < 宮川さんを馬鹿にするのはやめませんか? | ~~ ̄`´ ̄~~´ / | \______________ \ .....´⌒`...... / | _|\_;;;;;;;;;;;__/ |__ __/;;;ノ /;;;;;;;;;;;;\___ /;;;;;;;;;;;;/;;;;\ ./;;;;;;;;;;;;;;;;;;;;;;;;;\;;;;;;;;;;;\
322 :
nipotan ◆M5ZWRnXOj6 :2010/08/28(土) 17:14:12 ID:kvWFLXrw
_____ / ____彡 /::::::/━ ━ \ /:::::/ _ _ | |::::/--((・))―((・))( (6  ̄ つ  ̄ ヽ | ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ∴)\_/ (∴ | < こら、宮川さんとか馬鹿にするのはやめろ ヽ ― 丿 \________ \_____/
Perl忍者いい加減にくたばれよ
324 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/28(土) 17:27:39 ID:kvWFLXrw
X ∠ ̄\∩ |/゚U゚Lノ くたばれとか暴言やめろ 〜( ニ⊃ ( 丶/ ノ>ノ UU
Hyperestraier以前の問題やん
なぜbeta使うの?安定版があるのに。
328 :
325 :2010/08/31(火) 00:39:58 ID:???
329 :
325 :2010/08/31(火) 00:42:33 ID:???
途中で投稿してしまいました。失礼しました。
>>327 betaが出た頃にインストールして、支障がなかったのでそのまま使っています。
あれから、HyperestraierのDBとノードを混同しているらしい事に気づきました。
とりあえず別途、Hyperestraierのノードを起動してから試してみようと思います。
CakePHP面白そうだなぁ、なんかスゴそうだなぁ
331 :
Perl忍者 ◆M5ZWRnXOj6 :2010/08/31(火) 21:18:35 ID:NL5nyoqM
{:::::i:::::::::::::::::::::::i::/!:::::ハj ヽ_ン´、レ'´ {:::::::i:::::\__ レ|::|::::::::::::'、::::::N j/ ノ,、_`__> }:::::::i`i::ト-'´- i::|、::::::ハ{`、:::{ ー夂_,ノイ:::::ノ ノ、j: : : : : j_ハ`、 { `ヾ `、\ ノ / ー'´___,ィ ム'´i j-―ー-- }::!'i、`、ー=r==、 ` 、 / ,r='ラ ̄// i`ソ/: : : : : : : : '、`ハ \_`ー'´\ 、_ i i /__`´__ノノ ム'/、__: : : : : : : r')、゛'、  ̄二ニ´ 、`= /´ニ二 ̄ レ':::r'´'、: : : : : : r-、_!厶`Ti、 ` /:::::トv':.:.:.:.iー- ..__ / j .V レ、 , ハ∧j:.:.:.:.:.:.:.\:.:.:.:.: _ノ i / |ハ!`、 _ `ー' _,.r / |:.:.:.:.:.:.:.:.:.:.:.:.:.:.: r-‐'´ |/ |' `ヽ、 ̄ ̄二二 ̄ ,.イ |:.:.:.:.:.:.:.:.:.:.:.:.:.:. r-‐/ i | i`ー..._ ,.. -'´/ |:.:.:.:.:.:.:.:.:.:.:.:.:.:. なにこのスレ・・・しねよ
生きる!!
Perl忍者嫌い
報告したらいい
NGしてほっといたらいい
じゃあ、次で
合宿・・・
ど、土曜日が休みなわけねーだろ!!・・・
cookbookって順番に見ていくと表示が切り替わらないページ多くね?
多いね。特に1.3が多い気がする
あの間違ったリンクはヘルパー使って出力してるんだろうか?
単に、ビューの作成ミスじゃないか?
phpはifとかforとかの文法やったらもうフレームワーク行ったほうがいいな
SQLも覚えた方が良いと思う。 INSERTとかUPDATEとかそう言う構文じゃなくて、概念として。
phpadmin使ったらぴゅーって感じで俺でもできるよん
DB側でロジック組んだらすっきり安全に書けるところを コードでガシガシ書いて品質落とすはめになるとか、よく見る。 ただでさえPHPは危険なコードを書きやすいし。
ああ、それはあるね。 SQLインジェクションが大手サイトで未だに多いのも、それだろうね。
PHPは危険なコードを書きやすいって何を根拠にしてるんだろうな まともな奴でそんな事言ってるの小飼弾くらいだろ
whileは危険なコードになりやすいね。 危険というか、無限ループだけど。
危険度なんてどの言語でも同じだけどな 昔よくあったクソみたいなPerlCGIはなんだったのみたいな
タイプセーフな言語だと事前に多少バグがわかりやすいみたいな部分はあるだろうけど、 セキュリティホールが生まれやすいって部分に関しては特に言語に優劣があるわけじゃないと思う。 強いて言えばメモリ関連も自分でやらなきゃならんC/C++が多少不利なくらいでしょ。
とりあえず、Cakeの話じゃないよね
>>354 くだらない質問よりはマシな話だと思うわ
俺は逆だと思う。くだらない質問があれば同じよう質問も減るだろ。
ごめん
すまなかった
どっちが347だ?w
誰かさくっと教えてください validationルールで、numericまたはdecimalってのはどう書けばいいんでしょう 複数ルールのANDは並べればいいらしいけどORがわからない
どくじばりでーしょんかくしかないんじゃない
Amazon.co.jp: 高速開発で差をつけろ!CakePHPの基礎とECサイト制作入門: 小倉 実: 本
http://www.amazon.co.jp/dp/4434147463/ これ立ち読みしてきた
159ページしかないのに3780円もしてビックリした
内容は簡単なECサイトのチュートリアルという感じで、詳しい部分には突っ込んで書かれていない
サンプルコードも「こんなので大丈夫なのか?」と思うような記述がちらほら
なんか書籍は最近不作ね
1.3のオフィシャル本が出ればいいのに
>>363 >第1章 CakePHPの環境設定と準備(秀丸とFirefoxのダウンロード
そっからかよw
秀丸てw せめてphpshotのPHPエディタだろw
秀丸w
秀丸の何がおかしい!
秀丸に金払うんだよなもちろん
秀丸はないわ
彼氏が秀丸でコード書いてたら別れるレベル
秀丸で書いてもいいんだけど ちゃんと金払ってマクロ使いこなしてじゃないと 秀丸で書く意味ないだろ
terapadじゃ駄目なの?
notepad++がいい
禿丸
375 :
nobodyさん :2010/09/06(月) 01:59:52 ID:thbJcGM5
findのthreadedでツリー型の配列を取得できますが、 それを1つの配列にまとめたいと思っています。 以下のソースで1つの配列に代入出来ますが、ツリー通りの順番になりません。 どの変を直すと、良いのでしょうか?1.3.3を使っています。 function index(){ $data = $this->Category->find('threaded'); $list = array(); foreach ($data as $ary) { $list[] = $ary['Category']; if (isset($ary['children'][0])) { $this->_children($list, $ary['children']); } } } function _children(&$list, $data) { foreach ($data as $ary) { if (isset($ary['children'])) { $this->_children($list, $ary['children']); } array_push($list, $ary['Category']); } }
スレ違いだったらすみません。 yiiを見ているのですが、下のソースはどういう意味でしょうか? Yii::createWebApplication($config)->run(); Hoge::foo($config)->huga(); この書き方はスマートでよさげなのですが、どういった構造になりますか? ↓ではないようなのでさっぱりです。 class Yii { function :createWebApplication($config) { ... } function run() { ... } }
なんか基地外がいる
378 :
376 :2010/09/06(月) 15:42:58 ID:???
すみません・・・ FW総合と間違えて誤爆しました。 無視してくださいm(_ _)m
>>363 自分も少し読んでみた…
…読み辛過ぎる…。
これ入門書なんだけど、本のレイアウト、文章構成等が壊滅的。
プログラム以前の問題。
他にCake本がなければ我慢して読むレベルだと思う。
ちなみに「ECサイトのチュートリアル」ではなく、
発行元のオモドックが作った?ECサイトのオープンソースを
カスタマイズしていく、という内容。
(ダウンロード元のURLは本に載っている)
…ECサイト作成入門、という言葉からフルスクラッチを想像してしまったんだが…。
入門書なら、
>>241 にボロカスに書かれている
CakePHP 1.3によるWebアプリケーション開発―オープンソース徹底活用
の方が内容的にも値段的にも全然マシ。(といっても、1.2版しか読んでないけど)
380 :
nobodyさん :2010/09/06(月) 19:32:08 ID:3l/prtic
cakeの初学本の次に読む良い本はないでしょうか。 というかphp、cakeに関係する良書教えてください。
>>365 PHPエディタはヒアドキュメントの中に不等号入れると、文法が合ってても色付けがぶっ壊れるね
PHP専用エディタなのに適当過ぎるわ、作者は直すこともできないらしいし
>>380 残念ながら良書はない。どれも作者の色が強い内容。
ポケットリファレンス的な本があればいいのにな。
Cakeも一応あるけど、バージョンがもう古い。
>>382 ありがとうございます。
古いのは知ってましたが、ポケットリファレンスは買いました。
細かい仮引数の意味は書いてませんでしたが役に立ちました。
>>383 ありがとうございます。
Amazonチェックしておきます。
皆さんがcakeを極められたのはやっぱり実務と経験なんですかね。
オライリーが本気出してくれればすごい助かるのに。
最近はEclipse+PDTを薦めてる本が多いと思う 実際便利だし
一番読むべきなのはマニュアルとAPIでいいよ。 マニュアルのブログもどきのチュートリアルから 例えば一般のブログサービスにあるような機能を足してみたりして膨らませて行けばいい。 車輪なんて何回でも発明してやれ。
オフィシャル、ポケットリファレンス、実践アプリケーション開発を1.3対応させてくれりゃいいのに 売れてないのかな
俺はCakeの本よりも、Cakeを使って作ったサイトがたくさん見たいんだが どうやって探せばいいのかよくわからない
Cakeの公式サイトに事例が載ってるじゃん
ソースが見たければgitでググれ
俺が低予算短納期でこのまま仕事するなら死んだ方がマシの精神状態で 殴り書きしたサイトなら5つくらいあるから頑張って探して セキュリティホールってこうやってできるんだって勉強になるよ
なんでセキュリティホールを放置したままにしてるの?
低予算短納期なら仕方ないな
cakeの案件だと平気で1週間10万とかあるからな
その予算と納期でどの程度のシステム作るの? テーブル数10以下のCMSなら、簡単に出来そうだけど。
>>386 あとはソースもね
マニュアルが貧弱すぎてソース読まないと分からないって状況はなんとかして欲しい
>>395 一番酷かったのは20万で100画面規模のエロサイト
テーブル数は細かいマスタまで入れると50くらいだったわ
納期は2週間だったけどもちろん遅らしたあげくキレた
誰かが書かなきゃ駄目なんだぜ?マニュアル
なんの自慢にもならんよ そんな低料金でやるバカが居るから値崩れするんだよ 死んで詫びろ
>>241 でも紹介されている「CakePHP 1.3によるWebアプリケーション開発」買ってみたら
UTF-8はBOM付きで保存しろって書いてある・・・。
>>401 低料金でしか発注しない人がいるんでしょ
パスしても、だれかが受けちゃうよ?需要と供給はマッチしとるわな、残念ながら
普段は通常価格で受けてても、今回は安いけどお願いしますよってのもあるし 新しい取引先と初回の契約だとリスクヘッジで単価下げられる事もあるし それでも他に仕事ないなら受けた方がプラスになるし
いいから死んで詫びろよ クズが
買ったけど読んでない俺勝ち組
このスレでCake本出せば売れるんじゃね?
売上の8割は俺によこせよ
Cookbookっていつも遅いよな、Cakeで作ってるから遅いんじゃないの?
遅いのはまだしも、リンク切れや間違いが多い
cakePHPのマニュアルを読むのだけどサイト遅すぎでイライラする ローカルにダウンロードしたいけどそういうのもナシ
>>411 せっかく翻訳してくれてる人達には悪いけど、日本版にはそういう傾向があるね。
英語版見た方がいいよ。
英語版:Cookbook 日本語版:Cakebook 何の誤訳だよ
英語版みてもコードは解るけど、説明もみたいじゃない。 けど、英語読めないから辛い・・・
プログラマで英語が読めないって、かなり致命的
>>416 お前は俺の後輩か!
"読めないから"じゃなく、読めるとこだけでも読む
>>416 英語の教科書やテストみたいになんの興味もないヒネったつまらん英文ってわけでもないし
別にたいして難しく書いてあるわけじゃあないよ。
いずれにしてもAPIまで読んで行く時にそっちは翻訳されてないし。
いい機会なんだからめんどくさがらずにがんばれ。
俺いつも英文が出ると、単語を掻い摘んで読んでいくか エキサイト翻訳にかけるか、Googleツールバーで一括翻訳か どれかしてる。それである程度意味はわかるけど、英語が苦手なのは確かだ。
まあもちろんパッと見て「わからない〜〜」ってなるのは仕方ないけどさ。ネイティブじゃないんだし。 でもじっくり読んでたら頭の中が英語脳みたいに切り替わる瞬間みたいなのがあって面白い。
422 :
nobodyさん :2010/09/07(火) 17:56:23 ID:7yk3+8B4
フォームヘルパーで日付の「年」のみを選択出来るようにしたいのですが、 どうすればいいのでしょうか? $form->input('year', array('type' => 'select', 'options' => $options)); として、自前で$optionsの内容を作成する方法しかないのでしょうか?
424 :
422 :2010/09/07(火) 20:03:39 ID:???
cakephpはもう1.3が主流ですか?
既存サイトの手直しなんかでマイグレーションに苦労する。ってんでもなければ1.3でしょ。
マイグレーションってなんですか?
PHP質問スレで流れてしまったので、もしよければ教えてくださいませ。 cakePHPなどのMVCモデルで、何行ぐらいのコードになったら別個のファンクションに するべきか悩んでおります。 コントローラーにはビジネスロジックを書かずに、モデルにどんどん書いています。 すると、今度はモデル内のコードがごちゃごちゃしてきました。 繰り返しをするコードは別個のファンクションにしていますが、単純に、モデル内における ファンクション内のコード数が長くなりすぎた場合、どの程度で別のファンクションに分けるべきでしょうか?
>>428 なんで行数?わけわからn
一連のロジックのうち、他で再利用する可能性が高いものはメソッド化するかな
行数なんか考えたこともないわ
430 :
428 :2010/09/07(火) 23:10:34 ID:???
>>429 ありがとうございます。
再利用しそうにないコードがずらずらと並んで、結構
長いファンクションになってしまったもので。。
自分の中で「三回(三箇所)以上で使う場合はまとめる」 とかしたらどうだ? モデルにまとめるなら、app_controllerとか作ってさ。 俺はもっと細かく、member_controllerとかコンテンツ毎に分けてるけど。
お前は何の話をしてるんだ? あと3回ってなんだ3回って。なんで3回だ2回ならコピペするのか?
自分で決めりゃいいじゃん。人に聞かないと判断つかないんだから。 それを言いたいのに、「どういうこと?」っていちいち聞き返すなよ。めんどくさい。
処理が長くなりすぎて、ひとつのアクション中での流れが見えなくなったってことなんじゃない? 折りたたみできるエディタ使うか、使い回ししないやつでもメソッド切り分けるかしたら?
このおにーちゃん何いってんの? 急にキレてるけど頭おかしいの?
コンポーネント内で別のコンポーネントの関数を呼ぶにはどうしたらいいですか? 親子関係は定義したくないです。1個関数を呼びたいだけで、それ以外に関係がないので
>>437 dです
あとモデルからもその関数が必要になってしまった。
コントローラをモデルに渡してそれ経由でという強引なやり方以外にありますでしょうか?
あ、コンポーネントをモデルに渡せばいいのだろうか
根本的にいろいろぐちゃぐちゃ
コントローラからコンポーネントを引数にモデルの関数呼んだら うまくいきました 同じ処理をあちこち書きたくないからしょうがない
あほはほっとこうぜ
いいから死んで詫びろよ クズが
cakeってMVCどこでも使う処理の置き場に困るよね
そんなことないよ
一人うざいのがいるな
>コントローラからコンポーネントを引数にモデルの関数呼んだ
もっかいMVC勉強してこい
>cakeってMVCどこでも使う処理の置き場に困るよね
vendorsでいいだろ
>>446 お前だ
関数化するときのコツは、名前のつけられる処理群は関数にするってのがやりやすい。 あとは二回以上使いまわしたら関数にするとか。
オープンソースのライブラリで、vendorsに入れると 表示が反映されない物がある。おそらく、参照先が同階層になっているんだろう。 その場合、ライブラリ側のソースをいじっって、定数を入れたりして 多階層対応にするか、そのままにして、Cake側で工夫するか。 俺は後者を選んだ。オープンソースとはいえ、むやみに手を加えるべきじゃない。
表示が反映されない 参照先が同階層 多階層対応 何言ってるのか全く分からない
頭悪いんだな
./ dirname(__FILE__)
ずいぶん荒れてるな
荒らしてるのは一人だろ
だな
うざいとか荒らしとか言って人の意見聞かなけりゃいから成長しないんだよ。
定数定義君(笑)がでてきたあたりから回答がひどいことになってるよね 中途半端な知識で人に教えないほうがいいとおもうけどなー
458 :
nobodyさん :2010/09/08(水) 17:18:50 ID:+2USXYbV
モデルにIDの存在チェックを入れて、バリデーションしようとしているのですが、 どういう値でも全てエラー扱いになります。 どこを直せばいいのでしょうか?アドバイスをいただければと思います。 var $validate = array( 'user_id' => array( array( 'rule' => 'checkUserId', 'message' => 'IDが存在しません', ) )); function checkUserId() { $data = $this->User->findById($this->data['Profile']['user_id']); if(!$data){ return false; } }
return true; してないとか。
>>457 回答も回答だが、質問も458みたいに酷いしな
オープンソースなんだからソース読んで自力で解決しろよと思う
>>461 どう酷いのか言わないと同じことの繰り返しだよ
463 :
458 :2010/09/08(水) 18:12:16 ID:???
>>459 return trueが抜けてました・・。酷い質問で済みませんでした。
>>462 >オープンソースなんだからソース読んで自力で解決しろよと思う
と書いてあるわけだが。
ソース読めば、なんですべてエラー扱いになるか理解できるはず。
それを怠って人に頼っている時点で酷いと言ってる。
>>461 じゃ聞くが、458のような書き方ってソースの問題か?
単に構築上での質問だと思うが。
そしてそれすらも自分で考えろって言うなら、
>>1 で質問受け付けないようにしないとな。
>>465 前半、なにを言いたいのかよく分からないが、ソース読めば
trueを返さなければいけないって分かるだろ?
>
>>1 で質問受け付けないようにしないとな。
それ賛成
>>463 勉強する気があるならmodel.phpのinvalidFieldsの中を読んでみ
1.3だけど、findAllは使っちゃいけないの? ぐぐると使用例がいっぱい出てくるけど、使ったらエラーが出た Warning (512): SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'findAll' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 673]
オープンソースは自力で問題を解決する物φ( ̄ー ̄ )メモメモ
>>467 461さんの一存でこのスレで質問は受け付けられません。お帰り下さい。
>>467 findAllはfind('all')になった、詳しくはググれ
471 :
461 :2010/09/08(水) 18:33:57 ID:???
>>468 理想を言えばマニュアルやAPI見るだけで理解できればいいんだけどね。
どこのスレでも461みたいな奴っているな 嫌なら答えなければいいのに。なにかお前に対して迷惑かかるのかよ
find('all')に変更して事故解決しました
オープンソースのスレはもう必要なさそうだな
>>472 458のためを思って言ってるんだけどね。
あのくらいの問題を自分で解決できないんじゃ、いつまでたっても成長しないだろ?
477 :
470 :2010/09/08(水) 22:09:49 ID:???
>>473 俺のおかげで解決って言えええええええ!
お礼強要すんなw
お礼は3行以上でお願いします。
さらに増やすなw
お礼は千行以上でお願いします。
マニュアルのわかりやすいとこに答えが載ってるような質問もどうかと思うけどな しかも回答貰ってんのに自己解決とかいっちゃってるし
なりすましで荒らす奴がいるから質問はID出すのが普通じゃね
文句や煽りレスをするよりわかるなら教えてやれば良いのにっていつも思う。 自分が知ってて簡単に答えられそうで、尚かつめんどくさくないなら。 面倒な奴は無視すれば良いんだよ。 誰かに教える事で不利益を被るのか?自分もググって他人に教えてもらうのに。
>>484 なりすましで荒らすやつより、スレが上がって変なやつわくことのほうがはるかに多いよ?
じゃあトリつければいいよ とにかくなりすましができる環境で質問してあれは俺じゃないとか 実はあれ頴田の俺でしたみたいな感じになるのが荒れる最大の原因だから
いやそれが最大の原因ではないよ
>>487 お前馬鹿か?それかネットやったことないとか?
荒れるのは十中八九「誰かが構うから」だ。構わず無視しとけばいいだろ。
心底教えて欲しいと思う奴はID出すし、騙られるのが嫌な奴もそうする。
昨日から、
>>487 みたいな「俺ルール」押しつける奴は何がしたいんだ。
いや、おそらく同一人物かなw
構わなくても連投してたPerl忍者とかいたじゃん
いたからなんだ?
>>483 レス見る前に自己解決したんじゃないの?よくあること
>>493 仮にそうだとしても、俺なら「自己解決しました」なんて、書けない
レスくれた人に申し訳ないわ
どうでもいいよfind('all')くらい。きにすな
>>494 いやだからレス見る前に書き込んだんだろ
find('all');すごいです!!ありがとうございます!! 他所でやれ
マジで自称アングラサイトの「俺は三行まで」を求める馬鹿がいるとは・・・
俺は三行までってなんだよwww
さんぎょう で変換しても三行が出てこないgoogleIME
どうでもいいがぐぐったら、findAllで解説しているサイトが多くてうざいな Cakeは情報が多くて助かるが多すぎるのもあれだな
仕様をころころ変えるCakeが悪いと思うが
findAllで良かったろ!なにしてんだ
505 :
底辺 :2010/09/09(木) 21:47:14 ID:???
BOMがついて困ってる人はいたけど BOMつけようとする奴ははじめてみた
爆発するから気をつけないとな
1.3で、デバッグ用にSQL文を表示する方法を教えてください。 ぐぐったら、<?php echo $this->element('sql_dump'); ?> でいけるとすぐ出てきたのですが、やってみたら Not Found: /xxx/xxxxx/app/views/elements/sql_dump.html; とエラーになります。 elements/sql_dump.htmlがないみたいなんですがどこかで入手できるのでしょうか?
>>509 あぁすまん、よく読んでなかったわ。
sql_dump.ctpは/xxx/xxxxx/cake/views/elementsにあるはずなんだが、ないか?
>>509 なんで、 .html なの? sql_dump.ctp だと思うが
拡張子変えてる?
第三者だが、
>>509 に書いてあるコードを今開発しているビューに貼り付けたら
普通にSQL文のテーブルが出力されたけどな。
やっぱ、元ファイルの拡張子をhtmlにしたのが原因だと思う。
いや、元ファイルじゃなくて、viewの拡張子をhtmlにしてるんじゃ? こんな弊害あるのね
こうしたら読み込めたりしないかな?やってないけど <?php echo $this->element('sql_dump.ctp'); ?>
>>515 sql_dump.ctp.html を読みに行きそう
話がちょっとずれるが、viewの拡張子をphpに変更したとき、 「view.php」というviewファイルを扱おうとしたら動作がおかしくなった。
>>515 foreach ($paths as $path) {
if (file_exists($path . 'elements' . DS . $name . $this->ext)) {
$file = $path . 'elements' . DS . $name . $this->ext;
break;
}
}
ってなってるから無理
cssだと拡張子ついててもOKなのに、こういう統一性がないところが嫌だな
>>511 -
cake/views/elementsのほうにありました。app/views/elementsの方見てた。
解決しました、アリが東
520 :
nobodyさん :2010/09/11(土) 23:25:50 ID:7mKdJQTU
appディレクトリを2つ用意した場合で それぞれのapp内で同じコンポーネントやヘルパーを使いたいとします。 その場合、どちらかをrequireして読み込む方法しかないのでしょうか?
通常のappとそれをコピーしてapp_adminにしてURLで使い分ける方法教えてください
なんでそんなことしなきゃいけないんだ
523 :
nobodyさん :2010/09/11(土) 23:43:36 ID:7mKdJQTU
自己レスです。bootstrap.phpに以下のように共通ディレクトリを指定して そこにファイルを置くと、app内に置かなくても読み込まれました。 App::build(array( 'helpers' =>array(ROOT . DS . 'common' . DS .'helpers' . DS), )); こういう便利な機能があったんですね。もう少しマニュアル読んで勉強します。
それURLで使い分けれてなくね?
別人だったんだ・・・
>>522 PHPで作る携帯サイトって本を買ったんだけど、
appフォルダとapp_adminをドメインで分けて作っていっくことを前提で解説してあったんで
>>527 別の方法考えな。
appとapp_adminを分けるってことはそれぞれのフォルダにいくつか同じファイルが存在するってことだろ?
バグ生み出す原因を作るだけだぞ
>>527 ようするに別アプリケーションなわけですよ。
てかその本ヒドイ予感
530 :
528 :2010/09/12(日) 01:30:51 ID:???
>>527 その本持ってたわw
やり方は本に書いてあるから、よく読め
>>529 前半部分しか読んでないけど、新たな発見があって悪くはなかった。
p118の表とかCakeの流れが分かりやすく書かれてたし。
俺もその本持ってて公開用・管理用とで分けてるけど、何がいけないんだ? 同じコントローラーでも公開・管理で仕様が異なるんだから バグの原因にならないと思うけど。 むしろ、1つのファイルに長々とコードを書いていくことが バグや見落としの原因になるぞ。
>>531 あぁスマン
>>528 は本見る前に書いたレスだから忘れてくれ。
同じコードがあちこちに散在しているプロジェクトは修正忘れが起きやすくバグをうむ。
だから、
>>528 みたいな忠告をしたんだけど、ソース見てみたら、
共通なのはapp_model.phpとか、あまりないのな。
>>531 ついでだから、こちらも質問させてくれ。
1つの関数に長々とってなら分かるけど、
1つのファイルに長々とコードを書いていくとバグの原因になるのはなんで?
てか共通な部分はどうするの? モデルなんて一緒じゃないの?
自分はやんない派だけど検索パスの追加かなー?
あ、そっか views,controllersは別々で問題ない。 configあたりはほぼ同じ内容でコピペなんだろうね でもなんだかんだで同じ処理って出てくるよなぁ メンテナンス性は落ちそうに思うんだけどな
>>533 前者がわかるのになぜ後者がわからないの?
単にコードが長いと見落としがあるだろ。
それ以外も出来るだけコードを簡潔にするのが良いって聞いたこと無いか?
>>534 それは
>>523 にすればいいんじゃねぇ?
実質、configファイルのコピーだけだと思う。
俺の場合、公開用・管理用とで分けてるから、同じような処理は出にくいな。
findのconditionやsaveの条件も異なるし。ビューの表示する内容も。
ま、appを分けなくても function admin_index()とか コントローラー内でアクション分けする方法もあるから、 自分が管理しやすい方法でやればいいと思うよ。
539 :
532 :2010/09/12(日) 09:03:48 ID:???
>>537 コロコロ意見変わってスマンが、やっぱり
>>532 は撤回。
たまたまチェックしたmodelのファイルの中身がアソシエーションとバリデーションの
設定くらいしか書いてなかったから、このくらいならいっかと思ったけど、
よくよく調べると、他にも同じようなコードが散在しているね。
メンテナンス性を考えるとモデルくらいは
>>523 のようにした方がいい気がする。
>単にコードが長いと見落としがあるだろ。
>それ以外も出来るだけコードを簡潔にするのが良いって聞いたこと無いか?
関数なりメソッドなりのコードを簡潔にするってのは聞いたことあるけど、
ファイルを短くた方がいいなんて聞いたことがないな。
ファイル分割したら、コードの見落としって減るか?
1つのファイルに100個ぐらい関数あったら、見落としそうってのも分かるけど、
Cakeのファイルなんて普通は多くても10個や20個じゃない?
なるへそ
>>539 あんまりスクロールが長いと可読性が下がって見落としが増える。
コメントを充実させたり、役割ごとにきちんとファイル分けした上での関数10個なら問題ないと思う。
ごった煮でファイル名が曖昧になるようなファイルは関数10個でも見辛い。
542 :
532 :2010/09/12(日) 14:02:34 ID:???
>あんまりスクロールが長いと可読性が下がって見落としが増える。 PDTみたいなの使ってない? PDTだと関数一覧が表示されるから、そういう理由で可読性が下がることはないと思うぞ。 便利だし、使ってみたら? >ごった煮でファイル名が曖昧になるようなファイルは関数10個でも見辛い。 それは論外でしょ
>>542 普通にありえるだろ。
数学ファイルなのか、ベクトル計算ファイルなのか、二次元ベクトル計算ファイルなのか、内積計算ファイルなのか。
抽象化されたファイル名になればなるほど、およそ関係ないか、他でも再利用可能な便利関数でてくる。
トレードオフな関係に論外はありえない。
>>542 君は会員専用や管理画面も同じファイルに書いてるの?
>>544 自分が書いたCakeのアプリはそうだね。
分割してもControllerやModelのコードの半分以上が共通になるような仕様だったから。
>>527 のControllerみたいに共通する部分がほとんどない場合は分割すればいいと思うよ。
>>543 曖昧になるのは単にセンスがないだけだと思うのだが。
たぶん単なる例えで言ったんだろうけど、
>数学ファイルなのか、ベクトル計算ファイルなのか、二次元ベクトル計算ファイルなのか、内積計算ファイルなのか。
って、全部まとめてmathファイルでよくね?
>>545 センスで作られたコードほど読み辛いものはないし
曖昧なケースなんてコーディングしてればいくらでもでてくるだろ…
中、大規模なコーディングしないと解らないのかもしれん。
オブジェクト指向初心者の私に誰かアドバイスをくだされ。 model内の変数を処理する時に、配列を使うか、オブジェクトにしちゃうかの判断は どうすればよいでしょうか? オブジェクトってどこからでも取り出せて便利だから、今まで $thisMonth = date(m); こんな感じでやっていたのも、 $this->thisMonth = date(m); のように基本的に全部オブジェクトにしたらいいんじゃないか?って思っちゃったのですが、 大きな間違いでしょうか?(重くなるとか・・)
>>547 えーと、なにを言いたいのかサッパリ分からない。
549 :
547 :2010/09/12(日) 19:21:33 ID:???
>>548 分かりにくくて申し訳ないです。
functionをまたいで使用する値を格納する時に、
全部オブジェクトにしちゃうのはまずいのだろうか?っていう疑問です。
下記のような形の時です。
public function getDate(){
$this->thisMonth = date(m);
}
public function showDate(){
$this->getDate();
echo $this->thisMonth;
}
それただのメンバ変数 というか此処で聞くことじゃないってわからないの?
551 :
547 :2010/09/12(日) 19:30:59 ID:???
すいません。スレ違いでしたか。 申し訳ありませんでした。 メンバ変数というのですね、ググって勉強しなおします。 どうもありがとうございます。
ちょww 単に覚え間違いだったのかw
別に笑うところじゃないし。何がおかしい?
ちょwwwwwwwwwwwwww
呼び名なんて別にどうでもいい。 最初からソース提示してるんだからわかる。スレ違いなだけ。 それに対して「単に覚え間違い」とかずれたツッコミしてるんだけど?
>>553 メンバ変数をオブジェクトだと思っていたところ。
そしてそれをオブジェクト指向と関係があると思い、
CakePHPのスレで質問したところ。
更に、547自身が何を笑われているかわからないところ。
>呼び名なんて別にどうでもいい。 >最初からソース提示してるんだからわかる。スレ違いなだけ。 俺らはエスパーだと思ってるの?
CakePHPとは?
自分より知識がないだろうと思うと茶化す 実にくだらない
少し知った奴が初心者を馬鹿にする行事がまた行われたのか… 毎度ご苦労様です!
1.3.4がでたらしいな と思ったら 2.0系もでんのか?? スピードはええな
>>563 お、いつのまに更新されてたか。
2.0はだいぶ前から出てるよ。
>>564 2.0マジか!知らなかった・・・
1.2.xから1.3.xの時は結構大変だったけど、
2.0系も別物な感じなの?
今日知ったばかりでまた情報集めてるとこなんだ
# やっと管理してるの片っぱしから1.3.3にしたのに。。。
1.1から1.2はけっこう変わったけど、1.2から1.3はそれほどでもない オフィシャルのマイグレーションガイドも、ちょっとだけだったし 2.0はまったく見てないからわからん
>>565 ついでに言うと3.0も。
途中でプロジェクトが分離して、今は名前が変わっちまったがな。
配列地獄はいつ解消されますか?
>>568 Cake系を使い続けるかぎり無理じゃね?
Lithiumも配列地獄っぽいし。
>>566 >>567 ありがと 昨日、流れっていうのかな見たよ
プロジェクトなのか派生なのかずいぶんでてるんだね
純正というかメインのStableはCakePHP1.3.3ってことでいいのかな
>>568 配列は慣れな気がしてきたよ
オレオレフレームワークでも配列使ってたから、移行に違和感なかったな。 ただ、モデル(テーブル)を$data['User']['name']感じにする概念は無かったが。
572 :
nobodyさん :2010/09/14(火) 17:23:02 ID:sGtN+/un
controllerがUTF-8でビューはShift-JISにしています。 afterFilterを使って出力時にmb_convert_encodingで UTF-8からSJISに文字コード変換する方法は良くあるのですが、 findでデータ取得の時にSJISにする方法ってないでしょうか?
>>572 ビューもUTF8にしてafterFilterで文字コード変換じゃダメなの?
find時に文字コード変換はafterFindでできそうな気がするけど、
DBもUTF-8で作ってるのにビューだけShiftJISにこだわる理由はあるんだろうか
574 :
nobodyさん :2010/09/14(火) 18:12:47 ID:sGtN+/un
>>573 携帯用のビューでして、ShiftJISで表示させたいんです。
>>574 まずsageようじゃないか
そして
>>573 にあるように、UTF-8でつくろう
方法はキミが分かってる通りだ
576 :
573 :2010/09/14(火) 18:22:34 ID:???
質問時はsage推奨って
>>1 に書いてますね。すみませんでした。
あと、UTF-8で作る方法は知っていますが、
>>574 で書いたとおり、
携帯用のビューはShiftJISなのでそうしたいんです。
現代の携帯端末はほとんどUTF-8に対応しているとはいえ、、
今までそれで表示していて問題がなかったので。
でも、それしか方法がないと言うなら、一旦findで配列を取得して
foreachでmb_convert_encodingしてSJISに変換し、ビューに渡す方法にします。
577 :
572 :2010/09/14(火) 18:23:30 ID:???
またひとりアドバイスに従わない強者がいたか
>>576 どうしても、ビューはShiftJISにしたいっていうなら、
mb_convert_encodingの処理はafterFind()の中に書けばいいと思うよ。
viewで変換できないん?
utf8の方が女にもてる
携帯サイトってShift_JISで作るんじゃないの? 軽くググったら、そういう解説ばかりだけど。
どんなにググってもviewだけsjisなんて解説出てきません ><
utf8で作ってもフォームから送られてくるのはshift_jisだったりするよね?<au softbankはその逆だっけ?
585 :
572 :2010/09/14(火) 20:37:37 ID:???
やっと指摘されてる意味がわかりました・・。 ViewもUTF-8で作成して、出力時はafterFilterでShift-JISにし、 View内のmetaのContent-TypeをShift_JISにすれば、何も問題ないんですね。 お騒がせしました。
いや、ctpはUTF8で作って、出力をSJISにすれば良いじゃない。そっちのが、あとあと楽だと思う。
変換テーブルがアレだから実際UTF-8でやると特定の文字でハマるかも。 絵文字変換のついでに対策すればいいんだけど。
CakePHPってカスですね 初心者には敷居が高くて難しいんですよ、これ もちっと簡単にしてほしかったですね
カスなのは初心者なんだよ。 カスから脱出するために、皆頑張っているのだ。
きっとPHP自体が初心者なんだろ PHPが初心者だったらどのフレームワーク使ったって一緒だ
一応、C,C++,C#,Javaできますが
>>591 それだけの経験があっても理解ができないのが、ある意味すごい
無 能 だ な !
hello worldができるってだけだろ
人をおちょくるのもいい加減にしてください if,swtich,case,break,do,while使えますよ!
IDでねーのだるいな。PHPすら理解してない奴は勘弁だ
匿名掲示板でIDの意味はないと思うが・・・
>>596 ネットワークを使い分けるとかしない一般人であれば、
少なくとも、俺とお前が別人だって示せる
routes.phpに
Router::connect('/', array('controller' => 'top', 'action' => 'index', 'home'));
とすれば、初期画面を指定できますが、
同じコントローラーで別のアクションを実行するには
http://hoge.com/top/add のようにしなくてはいけません。これを
http://hoge.com/add とする方法は無いのでしょうか?
Router::connect('/add', array('controller' => 'top', 'action' => 'add'));
600 :
598 :2010/09/15(水) 19:54:47 ID:???
希望通りできました。ありがとうございました。
'home' つけっぱだし、もっかいドキュメント読み直したほうがいいよ
携帯でアクセスすると、mobile_がついたメソッドとビューを読み込みたいです。 routes.phpの設定で以下のようにする方法を良く目にするのですが、 Router::connect(‘/m/:controller/:action’, array(‘prefix’ => ‘mobile’)); この方法ではURLを変更する事になります。 同一URLで振り分けたいのですが、 上記以外でメソッドにprefixを付ける方法はないでしょうか?
>>603 同じroutesの質問してますが、違います。
それに半日考えてググってソースも見てどうしようもなく質問しました。
>>604 それだとCakeを使う意味がない気がします。
>>602 最近CakePHP触ってないからうろ覚えなんだけど、
controller.phpにbeforeFilterを定義して、携帯からのアクセスか
PCからのアクセスかを判別する処理をそこに書く。
その中でコントローラを割り振るようにできるんじゃないかな?
確かコントローラ名が$thisに入ってたよね
>>605 Ktai Library 使いましょう
Model内でセッションの受け渡しをするのはまずいのでしょうか? Controller内で $this -> Amazon -> setSession($this -> Session); と記述し、 Model内で、 public function setSession($session){ $this -> Session = $session; } と記述。この後、モデル内で、 $this->Session->write('page_list',$page_list); などとコントローラで書くような記述をしています。 しかし、firefoxでは問題ないけど、IEやChromeでセッションの受け渡しが 上手く行かない問題が出てきて、もしかして、このやり方をしているかが原因なのかなと 思いました。 普通に、モデル内で使いたいなら、$_SESSIONで書いたほうがいいのかなあと。
>>602 beforFilterあたりでIPかUAを見てprefixつけられなかったっけ
と思ったら
>>606 が同じようなこと書いていたな
>>603 基本的なroutesもよくわかってなかったやつが一日でprefixの質問するレベルに成長するとは思えないぞw
>>607 作者さん?
機能強化よりシンプルでわかりやすい仕様にしてくれ
>>607 MASA-Pさん、上の方で本がバカにされてましたよ
>>607 文字コードの扱いが困る時があります。
もう少し柔軟にして下さい。
>>605 すべてCakeでやる必要なんてないだろ?
かといってバーチャルホストにするほどか?
バーチャルホストとかじゃなくて、/hogeにリクエストが来たらapacheでIP見て、PCなら/hogeのまま ケータイなら/m/hogeにrewriteすりゃいいって話じゃないの?
beforeFilter()やらで判別してmobile_アクション() 呼べばいいんじゃない?
MASA-Pさん、ドメイン分けずに本の内容通り進める方法教えてください
beforeFilterでmobile_アクション呼ぶ方法を教えて下さい!(><)
>>613 むしろ、バーチャルホストでどう実装するのか聞きたい。
>>616 本の通りに書いていれば、ドメイン分けずにすむだろ。
MASA-Pさん、電子書籍にしてください
誰が誰やら
×依存 ○利用
ま、使える物は便利に使わせてもらうぜ。先人達のご厚意だ。
↑の自己レスです。 ログイン情報を記述しているapp_controllerにヘルパーを指定してるのですが、 そこにSessionを指定しないとエラーが出るみたいです。
>>625 自分で言っているとおり、Sessionヘルパーを使うことを
宣言する必要があると思いますよ。
class AppController extends Controller{
var $helpers = array('Session');
}
Sessionコンポーネントは宣言してなくても使えるけど、
Sessionヘルパーは宣言する必要があったはずです。
627 :
nobodyさん :2010/09/22(水) 08:56:04 ID:R9kqnTJB
チュートリアルをはじめてるのですが、テーブルを作成するという箇所で とまってしまってます。 データベースを作成する過程がないので、どのデータベースにテーブルを 作成するのかがわかりません。
好きなとこでいいよ。 チュートリアルの次のページを見れば分かる。
629 :
nobodyさん :2010/09/22(水) 09:54:00 ID:R9kqnTJB
>>628 ありがとうございます。
これで先に進めます。
cakephp以前の問題だな・・・なんだこのスレ
>>627 モデル名 → テーブル名
と考えるとわかりやすいよ。
ただし、モデルの命名規則とテーブルの規則は違うから注意。
例)モデルでUserならテーブルはusersを作成する
>>627 がそういうことを聞いているようには見えない。
別に煽るわけじゃないんだが……
テーブルに命名規則があるからDB名にも命名規則があるのかと思っただけじゃない?
もう解決してんだろアホのくせに書き込むな
>>627 の疑問は解決してても、俺らの疑問はまだ解決してない
たぶんネタだと思うが。
単なる初心者に対してそこまで深く追及する必要があるのか?
初心者をいじることに喜びを感じる奴が常駐してるから仕方ない
PHP歴3年で、開発してるがCake触ったことない俺がきたよ。 公式のサンプルやり始めた俺には参考になるよ。 命名規則で結構引っかかってたところ。 サンプルだとpostっていうモデル作ったら DBはpostsにしろって言われてなんでsつけるのか意味不明だった。 コントローラーにもよくわからない形(posts_controller.php) とか名前つけてるから?が多かった。 自動解釈してくれるからこういう形式にしろよって意味だろうけど 書籍なしでいきなり始めるとわけわかめ。
あのチュートリアルはニコニコとかYoutubeとかUstreamでyandodさんが解説してくれてるぞ、たしか。
英語の複数形だろ。。。>s
>>641 そんなことはわかってるが、なぜ複数形にする必要があるのか?
という点が意味不明だったわけだよ。
レコード→post テーブル→posts レコードがたくさん集まってテーブルになるんだ。 これはphpやMVCとは関係ないDBの基本だからな、覚えとけよ。
>>640 ありがとう、早速動画見つけたので見てるが
すごいわかりやすくて助かる。
Cから入った人間だから、C++のときもそうだったけど
オブジェクト指向とか、MVCモデルについては
なかなかとっつきにくかったけど、これはありがたい。
bbsのためにbbssコントローラ作ったりするんだろうな
鯉を管理するためにはcarpテーブルが必要 単数形と複数形が同じなので注意!
ま、俺はs付けないけどな。
あの複数形と単数形のルール紛らわしいよな。
ところでさぁ。 新規の開発にしか使えないFWってどんなメリットがあるのよ? 既存の改修とかに使えないんだろ? チンカスレベルの屑FWとしか言えんだろ?
作業高速化のためにFW使ってるのにわざわざそのFWに合わせて作り直すの?本末転倒だろ
ぶっちゃけ、大して作業が高速化する分けじゃないけどな。 むしろ命名規則にのっとたり、書き方も厳密にしなきゃいけないし、 よけない手間が増える。 だが、優柔不断な俺にはそれが良い。
そもそも既存のシステムのためにFWを導入するわけではないと思うよ? PHPみたいに甘い言語だと、プログラマーによって かなりオレオレ仕様だったり、ソースがわかりずらかったりするから フレームワーク使うと、統一化されて跡から保守しやすいっていうメリットが生まれる。 また、ページごとにやってたようなエラー処理だとか フォームの入力チェックみたいな処理も自動化出来てわかりやすい。 どちらかというと3人程度〜の新規開発向けだと思うよ。 個人でやってぱぱっと作るならFW使わなくても別に困らないしw
命名規則なりクラス構成規約なりを開発メンバーに強制することにより、 多少の生産性は犠牲にしつつも保守性を上げるための仕組み、 という面は確実にある気がする。 慣れてくればそのオーバーヘッドもだんだん減ってくる(はず)だし、 そもそもFWって元来そういうもんだよね。 CakePHPの場合は強制される規約が多すぎて、 たとえばタグライブラリ的な使い方をしようと思ったときに ちょっと難しい部分があるのも事実だけど。
>>653-654 でも、それらって中小以上の、制作会社なら
独自の規約やルールが決まっていると思うんだよな。
フォームヘルパーのようなライブラリも作ってるだろ。
SOHOなら別にオレオレでも構わないと思うし、規模もたかが知れてる。
かといって、規模が大きめの案件ならFWは速度的なネックがある。
まぁ、俺はオレオレの仕様変更が多くて定まらないから、
Cake使ってるんだけどな。規模が小さい案件ばかりだし。。
657 :
nobodyさん :2010/09/24(金) 11:22:13 ID:9bxZAnFY
DB使ってない状態で paginatorのようにページ送りしたいんだけど、 いい方法ってありますか??
レコード1個のフィールド1個だけちょこっと更新したいんだけど 普通にfindしてからsaveしないと駄目? saveByIdとか簡単な関数ないの?
>>658 $dataにidがあればupdateになるから
array(
'id'=>1,
'field1'=>'hoge',
);
これをsaveすればid1のfield1のみアップデートされる
>>658 良くわからない事言ってるが、
保存されている情報を取得するならfind(select)は必須だろ?
saveAllにしてパラメータ指定するのはダメなのか?
ああ、更新か。読み違えてた。すまん。
662 :
nobodyさん :2010/09/24(金) 11:37:22 ID:KWM9yVDw
ctpファイルの中に、 <?php echo $html -> css('hoge', null, array('inline' => false)); ?> のようにして、レイアウトの $scripts_for_layout にCSSの記述を追加できますが タイトルは、コントローラから $this -> set('title_for_layout', 'ほげほげ'); とするしか手がないんでしょうか。 タイトルもctpファイルからレイアウトの $title_for_layout に設定できたらいいんですが できないものなんでしょうか。
>>657 Webサービスとかなんらかの読み込み元のデータはあるんでしょ。
find、_findCount、_findAll あたりをオーバーライドしたモデルを作るか、
データソースドライバを作ればPaginator関係はそのまま使えるので便利。
>>659 すみません質問間違ってました、id以外をキーにしてそれできませんかね。
できないなら、やはりfindしてidを取ってこないといけないですよね。
>>662 Controllerクラスだけでなく、Viewクラスにも pageTitle というプロパティがあるので、
ctpファイルのどこかで
<?php $this->pageTitle = "ほげほげ"; ?>
とすればOKだと思う。
666 :
659 :2010/09/24(金) 13:31:47 ID:???
>>664 updateAll使えばできたんじゃないかな
>>665 答えに近いこと書いてあるけど、質問者の使ってるの1.3だからさ
668 :
662 :2010/09/24(金) 15:21:06 ID:???
あー、すみません、バージョンは1.3です。 このあたり、1.3で仕様が変更になっているんですよね。 'inline' => false の指定方法とか。 <?php $title_for_layout = 'ほげほげ'; ?> のようにctpファイル内で変数をしてみましたが、レイアウトには適用されませんでした。 もう少し調査してみます。
>>663 ありがとうございます。やり方がわかりました!
シリアライズされた元のデータがあるので、
それを扱う例があれば嬉しいですけど、ネットで探しても見つからない
って時は作るしかないですよね。。わがままですよね
>>669 てか、いきなりCakePHP(フレームワーク)からはじめたの?
普通は、素のPHPのプログラミングを勉強していって
君の言う改ページ処理やファイルに書き込む処理など
基本的なコードを書いて勉強していくと思うんだけど。
671 :
665 :2010/09/24(金) 16:55:01 ID:???
672 :
662 :2010/09/24(金) 17:18:44 ID:???
>>671 コントローラから
<?php $this->set('title_for_layout', "ほげほげ"); ?>
は当然効くんですが、Viewからは効いていないですね。
コアのコードを追ってみるか・・・。
>>669 Modelでpaginate()とpaginateCount()を実装する。
他はsave()やfind()を透過的につかうかによって変わるけど、
内部データへのアクセス自体を独自にしてしまったほうが単純に楽だと思う。
674 :
665 :2010/09/24(金) 17:44:00 ID:???
>>672 あれ?さっき1.3ダウンロードしてきて適当にコアファイル差し替えて試したら
うまくいったっぽいので大丈夫かと思いましたが、だめでしたか。
"title_for_layout タイトル" でぐぐって、一番上にくるので試してみても
うまくいったので、そっちの方法がよさそうですね。
コントローラーからシェルを実行するにはどうすればいいのでしょうか? App::importで読み込んでクラスをnewするのでしょうか?
>>662 <?php $this->title_for_layout = 'ほげほげ'; ?>
じゃね?
>>675 ShellDispatcher
それかふつうに子プロセスで呼ぶ。
678 :
nobodyさん :2010/09/25(土) 00:54:21 ID:wsz3lHFZ
>>670 基本的なことが抜けてるのはあってますが(笑)
いきなりでは無いですよ、もっと勉強します
>>673 >Modelでpaginate()とpaginateCount()を実装する。
本当はこれやりたかったんですが、簡単なほうを選んで
自前ページャーで作ってしまいました、次回はこれ使います!
教えて頂きありがとうございました。
>>659 モデル内でそのようにsaveすると
$this->save( array( 'id' => $data, 'name' => $name ) );
以下のエラーが出ます。
SQL Error: 1054: Unknown column 'Array' in 'field list' [CORE/cake/libs/model/datasources/dbo_source.php, line 673]
Query: UPDATE `tablename` SET `id` = Array, `name` = 'xxxx'
1.3.2ですが、何か最近変わったりしたんでしょうか。
1.3使ってないけど、実行してるSQLがまさにそこに表示されてるんだから 解決するのはそんなに難しくないような気がする
1.3ですがvalidateが不可解な動きをします。 あるモデルにユニークを保証したい文字列user_idがあり var $validate = array( 'user_id' => array( 'rule' => 'isUnique', 'message' => 'must be unique' ) ); と指定。 モデルにレコードの新規作成関数を以下のように用意しました。 // 初期データ $userInfo = array( "UserInfo" => array( "id" => null, "user_id" => $user_id, "level" => 1, ... ) ); $this->create(); if ( $this->save() ){ var_dump('save ok'); return; } var_dump('validate ng'); つづく
そしてこれを既存のuser_idで呼んでみると、validate ngと出て新規作成は阻止されますが、 何故か既存のデータが上記の初期値で更新されてしまいます。 これは正しい動作なんでしょうか。 また、validateの条件をnumeric等に変えてみるとこの現象は起きません。 わけわからんので誰か謎を解いてください。
あいかわらずアホばっかりだな
発行されるSQLは?
>>685 CakeのSQLダンプではCOUNTしか発行されてないようですが、
MySQLのログを見ると普通にUPDATEされちゃってます。
つーかSQLダンプってあてにならないのか…。
ちなみに自分でif ( $this->validates($userInfo)
とかやって駄目な時はsaveしないようにしても更新されちゃいます。
説明も不十分だし、全部どっかうpしたほうがいいんじゃねえの?みてもらえるかは別として。
どの辺が不十分ですか?
スレが止まるほどの難問なのか
>>653 その理屈は結構前の話しだな。
今はフレームワークも便利な機能てんこもりで、
独りで作るのにも利用しないと大幅に差が出る。
>>688 横からだけど
CakePHPのダンプに出てないということは、CakePHPのsave()以外が更新している可能性を否定できないし
validatesで更新されているとなればなおさらかも
>>682 のコードの周辺とか中略されているところとか独自バリデーションがあったらそれとか、$user_idとか$this->idの値とかはどうなってるの?
あと、既存のデータって、どのデータが更新されるの?
>>691 Cake以外にDBアクセスしてる心当たりはありません。
独自バリデーションはないです。記述したisUniqueのみです。
$user_idはテーブル内でユニークな文字列(ユニークな数値をmd5したもの)
$this->idはnullです。(書き忘れたけど、自分でnullを代入して試した)
周辺のコードとはどの辺まででしょう。モデルは書いた分しかコードないです。
>>682 で省略したのは$userInfoの全フィールドを書いてないことぐらいです。
>あと、既存のデータって、どのデータが更新されるの?
同じuser_idを持つレコードが、上記コードの$userInfoの内容で更新されます。つまり初期化。
あと書き間違いがあって、$this->save()は$this->save( $userInfo ) です。
もう一度問題点をまとめておくと
user_idフィールドにisUniqueを指定して、同じuser_idを持つデータの更新/挿入を阻止したいが、更新の阻止ができない。
ということです。
それがCakeの正しい動作なのかが知りたい。ネットや本によるとどうも違うようなので。
CakeのSQLダンプに出ないのも謎ですがそれはそういう不完全なものなのかな。
>>693 モデル名はUserなの?
カラム名をuser_idじゃなくてkeyとかhashにしたらダメかな?
user_idだとUserモデルのidって解釈されるかも。
>>694 モデル名はUserじゃないです。UserInfoとかそんな感じです。
カラム名も実際はuser_idではなくapplication_user_idです。長いので質問書く時に短くしてました。
でも一応名前変えても試してみます。ありがとう。
というかisUniqueで阻止できるのはやはり新規追加のみで、更新はされちゃうのかな?
と思ったけどやはりidをnullにしてるのに勝手にuser_idをキーに更新されるのは解せない。
SQLダンプがでないって言う件、もしかしてDBの保存処理を行った後に 別ページにリダイレクトしてない?
primaryKey = 'user_id' とかしてたりしてな
もっかいその処理だけのmodelとcontroller書いて試して、だめならうpすればいいんじゃねえの?らちがあかない
まだやってたのか >if ( $this->save() ){ ここでなにをsaveしてるんだ?
$this->モデル名->find('threaded');でツリー表示されますけど、 これってHTMLに出力すると起動するんですか? foreachを再帰する為の関数を作るんでしょうか? それとも、Cakeに出力する為のヘルパーがあるのでしょうか?
>>700 bakery にはtree helperもあるけど、自分で再帰ヘルパー作るのもそんなに手間ではないよ。
DB使わずにCSVのテキスト保存して モデルとして利用する方法をどこかで見たのですが、 ググっても探せません。ご存じないでしょうか?
>>703 これです!ありがとうございます。
「CakePHP CSV 保存」とかで検索してました><
>>700 それはある
詰め込み世代の新人って指示待ちか出来もしない癖に勝手な事やって迷惑掛けてくれる奴かの両極端だった
ここ数年の奴らは、意外と使える
我々にしてもそうだったけど目で盗んで憶えるというか自分の頭で考えて言われなくても的確に動けるのが増えた気がする
日本人らしさが戻って来た感じ
ニヤニヤ
こういう人の監視スレに入ってるって何か嫌
>>705 なんで指示待ちしかできないんだろうな?
システム開発で言えば、エラー出てもログ見ないで「出来ません!」
って言ってくる奴大杉。
しかも「調べた」と言いつつ「どこを調べた」のか言わない。
そんなのエスパーじゃないからわかるわけ無いのにな。
自分の頭で考えないから、合理性のない行動しかできないんだよな。
でもね、そういう人がいないと掲示板が過疎るw
>>709 はてなとくめいだいありーにいけばどういしてくれるあくいひゃくぱーせんとのおともだちがたくさんいるよ
>>711 ざんねんながらはてなとくめいだいありーはにちゃんよりひどいよ
いや、30代です
未成年じゃないのならまず誤爆を認めるところから始めないとな
バーチャルフィールドで 「Userが購入したOrder回数を調べる」って時に使えるかと思ったのですが、 hasManyで結合させたら、paginateのソートって出来ませんよね。 hasOneやbelongsToの時に使うのかも知れませんが、 使い道があまり思い浮かばないな
>>716 うーん。多分そういう用途じゃないよ
前者はcounterCacheという機能を使って予め親モデルに書き込んでおくようにする
バーチャルフィールドは郵便番号の上3桁と下4桁を別のフィールドで持っている場合とかに、あたかもひとつのフィールドとして扱いたい場合に使うためにある
氏名を分割していたりとか
>>717 なるほど。と言う事は、716的な用途の場合は、
パラメーターにjoinsを指定して、直接SQLを書く方が良いですね。
バーチャルフィールドは、日付のフォーマットとかで主に使っているな。 date_format(created,"%Y年%m月%d日") みたいな。
それでconditionsの検索条件に含められる? 俺が試した限りでは無理だった
いやconditionsには使ったことない。表示目的だけ。すまん。
つかえるでしょ。
Orderモデルに↓のバーチャルフィールドを書いて var $virtualFields = array( 'order_num' => 'COUNT(Order.user_id)', ); コントローラーのfindを $params = array( 'conditions' => array('order_num' => 1), 'group' => array('User.id',), ); $data = $this->User->find('all', $params); print_r($data); したんだけど、「SQL Error: 1054: Unknown column 'order_num' in 'where clause'」 ってエラーが出る。conditionsの箇所を削ると表示されるから、 conditionsで検索(where)できないと思ってるんだけど。
いまだにページングのときのパラメータの持ち回り方のベストプラクティスがわからない。 そもそも、コロン区切りパラメータってのが、なんか気持ち悪いんだよなぁ・・・ 普通にGETでいいのに。
>>724 namedパラメータの後に?xxx=yyy 形式が俺の中ではベストかと。
まあURLがちょっとあれだけど。
paginatorで無理しなくてそのまま使えるし、
検索キーワードなどでnamedで通せないものもgetのパラメーターで通せるし。
726 :
725 :2010/09/29(水) 18:19:31 ID:???
ただ弱点はキャッシュの扱いに参ること。 Getのパラメーター部分がキャッシュのファイル名に入ってくれないからキャッシュ生成が無理。 別の話だけど、Searchプラグインなんかだと、packで文字列生成してnamedパラメーターを通すようにしてるけど これだと本当にURLが意味不明の文字になってしまうから使いどころにはちょっと悩むね。
727 :
724 :2010/09/30(木) 05:53:30 ID:???
Authを使ってログイン処理をしてるんだけど、 ログイン後にしばらくしたら自動でログアウト状態になるんだけど、 ブラウザのリクエストが無いとセッションが自動で切れるのって仕様?
↑の追記だけど、core.phpのSecurity.levelをmediumにしてるけど、 やっぱり勝手に切れる。どういうことだろ?
paginatorの迷うところは、Controller側で制御するのがデフォってところかな。 本来はModelに持たせたいなーとか。思ったりするのだけど。
ページをコントロールする ってのが目的だから別に良いと思うけど。
OSS用のシステムをCakeで作ってるんだけど、 テンプレートの修正はCakePHP方式にするかSmartyにするか延々悩んでる。 テストしてもどちらが良いか悪いか判断付かない。 Smarty編集出来るような人はPHPも使えるだろうから、 別にCakePHPのソースを編集する形でも良いのかな。
>>734 スラッシュがエスケープされてしまうなら、単純に
$url = '
http:////www.yahoo.co.jp ';
と、2重に書けばいいのでは。
ただ、このままだとコントローラで
$this->passedArgs['url']
で取り出される値は、『http:』のみになってしまいます。
スラッシュは、パラメータの値として判断してくれないんです。
ですから、
$url = '
http://www.yahoo.co.jp ';
echo $html->link('あいうえお', "{$this->webroot}hoge/read?url=$url");
としてはどうでしょう?
コントローラでは、
$this->params['url']['url']
で、URLを欠けることなく取り出すことができます。
もしも、URLのパラメータをページングでも保持しておきたい場合は、
url:
http://www... の形にせざるをえません。
その場合、スラッシュを別の文字に一時的に置き換える処理を独自に
作る必要があると思います。
例えば、僕はスラッシュを『~!』に変換しています。
詳しいことは下記に書いてますので、734がページングを使いたいと
思っているのなら参考にしてください。
http://d.hatena.ne.jp/sutara_lumpur/20100829/1283074357
ビューのelementをコントローラで取得したいのですが どうすればいいのでしょうか? コントローラ内で$header = $this->element('header')としても駄目でした。
viewsで↓のようなことできますでしょうか? example.com/index/index/ ↓ views/index-index.ctpを見る ディレクトリで分ける方法だと管理が面倒なのでこう出来ればいいなと思いました。 ご教示お願いいたします。
あげます
質問はフォーラムでしたほうがいいんじゃないだろうか。 向こうの方が丁寧に答えてくれると思う。
そうだね。sageて質問しても回答率が悪い。
まずはチュートリアルやりましょう
>>741 上げようが下げようがつかない質問にはつかないよ
過去見ると、ageたら付いてるけどな
745 :
nobodyさん :2010/10/06(水) 09:16:17 ID:??? BE:297576623-2BP(0)
>>737 MVCのV(ビュー)で使うべきelementをコントローラで使いたいというのが
そもそも間違っていると思いますよ。
プログラムの流れを見なおして、整理してみては?
>>738 質問したいことの意味がよくわかりません。
indexコントローラのindexアクションを呼び出した場合、
app/views/index/index.ctp を参照するのではなく、
app/views/index-index.ctpを参照するようにしたいということでしょうか?
無理だと思います。
おとなしくviewsフォルダの下にindexフォルダを作り、その中に
index.ctpを置くしかないと思います。
…、やっぱり質問はフォーラムに回したほうが、重複も防げていいと思う…。
http://cakephp.jp/modules/newbb/
>>744 回答付く質問はageなくても付く
それくらいの人数のお気に入りには入ってる。ここは
質問時にage出す人がでてきたのもここ2〜3スレくらいでは?
>>745 のような人がいるからこのスレはいいよね
>>745 のような人がいるから、バカがよってくるのか…
>>747 実際、
>>739 があげてるから今日はレスがだいぶ付いてるだろ。
それまでずっと閑古鳥が鳴いてたぞ
レスがついても回答は1件しかついてないわけだが 的をはずれた質問は回答つかないことが多いな実際
いつまでグダグダ言ってんだ
解説はいいから見本を示せ
何?見本って
ちょw結局w
>>755 AppViewで上書きすればなんとかなるかw
>>737 コントローラ内でrenderして変数に入れる。
$this->autoLayout = false;
$header = $this->render('header');
$this->output = "";
outputに出力内容が保存されているから、
それを初期化するのが大事。
↑あ、間違えた。 $this->autoLayout = false; $this->render('header'); $header = $this->output; $this->output = ""; こうでした。renderしたら、outputに入るから、それを変数に代入するんだった。
>>738 ってindexコントローラーだったのか
そんな発想無かったから全然分からなかった
せめてもうちょっと一般的なController名にしてくださいorz
目次の目次ってなんか変だなw
あちこちで何度も何度も同じこと言われてるんだろうけど、 Authコンポーネントが勝手にpasswordフィールドをハッシュ化するから validationが効きませんってのは設計ミス以外の何物でもない気がする
>>762 そうか?別フィールドでやれば良いだけだから困ったことないな
まして設計ミスって
何度か仕様変えた結果今のに落ち着いているわけだが
あちこちで何度も何度も言われてるだろうけど、 Authコンポーネントが勝手にセッション切れを起こすのは 設計ミス以外の何者でもない気がする。security.level変えても同じだし。
それコンポーネントのせいじゃないし
複数モデル(共通キーはない)をforeachで順番にfind(all)して それをさらにforeachで1つの配列に纏めてるのだけど これをpaginateに組み込む方法ってないですよね prev nextが使いたいのですが
それは無理だと思う。finはsqlのqueryを実行しているに過ぎない。 素直に自作したらどうだ?
纏めた配列をModel化してpaginate()とpaginateCount()を実装する。
でも、それを実装するのにqueryを渡さないと駄目だよね? 766の目的では、一旦DBから抽出したものを加工して、ってことだけど。
>>763 「別フィールドでやる」ってバッドノウハウとしか言いようがなくね?
それで不自由があるかないかと設計の良し悪しはまるで別の要素だと思う。
>>766 =
>>768 なの?
paginate() paginateCount()はquery飛ばさなきゃいけないってわけでもないでしょ
>>770 マニュアルにバッドノウハウ書いてあるとか?
暗号化されてないデータをむやみにcontrollerに渡したくないんでしょ
フレームワークがフールプルーフである(そうあろうとする)必要はあるのかな。 それがPHPって言語の文化だろって言われたらそれまでだけど。
>>773 フレームワークだからこそ、フールプルーフなんじゃないか?
CakePHP辞典買ったけど、 リファレンスじゃなくて完全に関数説明だけだった・・・
>>775 関数説明ってリファレンスに含まれるんじゃないの?
>>776 ほとんど含まれていない。
単に「こういうクラスがあるよ。関数があるよ」っていう説明だけ。
買う前にパラパラっとみなかったのか
何がどうイミフなのかが分からない
>>779 逆引きリファレンスっぽいのを期待してたんじゃない?
単純に関数の説明だけならcook bookでいいじゃん!ってことかな
- tags id, name - posts id, name - posts_tags id, post_id, tag_id - アソシエーション Post hasAndBelongsToMany Tag Tag hasAndBelongsToMany Post PostsTag belongsTo Post PostsTag belongsTo Tag こんな感じのテーブルとアソシエーションで 記事(post)に複数つけられるタグ(tag)の機能を実装すると期待通りに動作します。 ここで例えばタグのうちひとつを代表タグとして扱いたいとします。 そこで以下のようなテーブル変更とアソシエーション追加を試みたのですが アソシエーションがぶつかって(?)bakeで焼かれたままのコードでも挙動がおかしくなります。 - 変更されたposts id, name, tag_id (代表タグ用に追加) - 追加されたアソシエーション Post belongsTo Tag Tag hasMany Post たぶん発想が良くないんだと思いますが、一般的にこのような場合、 どういうアプローチで代表タグ(複数ひもづくタグのうち一つをメインにしたい) を実装するのがベターでしょうか。
>>781 そう。そういうこと。
俺がこれまで買ってたリファレンス系は、だいたいその仕組みだったからさ。
あと、amazonで買ったから中身見られなかった。
こういう時に、中身検索があれば・・・
>>782 追加するアソシエーションはPost hasOne Tagじゃないかな?
ただ、どっちにしろアソシエーションを複数指定するのは避けられないので、
main_tagsテーブル(id, post_id, tag_id)を作って、Post hasOne MainTag、MainTag belongsTo Tagにすればいいんでない?
あとはtagsテーブルにmain_tag_flagを指定するとか?
786 :
nobodyさん :2010/10/11(月) 02:33:23 ID:Gg2rGqpO
$this->paginate=array( 'ModelA'=>array( 'fields'=>array(・,・)), 'ModelB'=>array( 'fields'=>array(・,・))) てページネーションに複数モデルセットして出しても、なんか知らないがModelBの方のfieldsが効かないんですよ。 Aは効くんだけど。 誰かご存じの方いらっしゃらない?
>>786 $this->paginate('ModelA');
でデータ抽出してるんでしょ?
だったら、ModelA以下の設定しか使われない。
fieldの指定を、ModelA.field とか ModelB.field にしたらいいじゃないかと。
kohanaに挫折したのですがcakephpはもっと難しいですか?
PHPができれば誰でもできます
ちょっともう一回kohanaスレいって相談してきます
すいません助けてください
Windows
PHP5.3
cakephp1.3.4
http://localhost/~cakephp/って感じでapacheにuserdirを設定したのですが cakephpが動かないためcakephpのトップに入っているhtaccessにrewrite base /~cakephp/って設定しました
そしたら動いたんですがこれで合ってますか?
あとサブディレクトリにhtaccessが2つも入ってますがそこにもrewrite base /~cakephp/を入力して何回かアクセスしたらエラーになりました
htaccessって全部修正するのでしょうか?
上にCakePHP: the rapid development php frameworkが表示されてて 右下にCAKEPHP POWERって画像が表示されるんですけど 自分で一から書いたHTMLを読み込ますのはどうやるのでしょうか?
794さんありがとうございます おすすめのCakePHPの本を教えてください
797 :
793 :2010/10/11(月) 21:09:47 ID:???
793です 解決できました default.ctpっていうファイルを作ってlayoutフォルダに入れたらいいみたいでした
>>790 サブドメインは超余裕
>>792 apacheいじれるのなら/app/webrootをルートにするんだ
ルートに置かないと後々問題出やすい
>>793 チュートリアルやれ
>>796 1.3対応書籍は不作だから公式のbookがいいぞ
どうしても本が欲しいなら、ガイドブックの1.2版がおすすめ
>>797 素晴らしい、その調子だ
フォーラムで質問するのとここで質問するのはどっちが言いと思いますか?
smartyならassignが出来れば他は知らなくてもいいような雰囲気あると思いますが cakephpの場合はどれが出来るようになればいい雰囲気になれますか?
assignだけで済むようならそもそもsmartyなんて要らないはずだ
>>800 認証、フォーム使った入出力、モデルの読み書きとバリデーション、
複雑なSQLをModelクラスのメソッド使って組み立ててみる、
ぐらいが一通りできればあとは応用でなんとかなるような気がしないでもない。
ただ、単に「できる」のではなく内部的にどういう処理順序で
物事が進んでいくかを把握してないとダメだと思う。
フレームワークって何でもそうだと思うけど。
分かりやすかったです フレームワークは初めてなので頑張って覚えます
804 :
nobodyさん :2010/10/11(月) 22:00:17 ID:Y80mjYyF
■app/controllers/hello_controller.php class HelloController extends AppController{ var $name = 'hello'; var $uses = null; function index(){$this->set('sample_text', 'Hello World!!');} } ■app/views/index.ctp <p><?php echo $sample_text ?> 入門用でHello World!!を表示できる所まで出来ました。 この場合MVCのVCしか使ってないと思うのですが、 データベースを使わない条件の時にMはどうやってファイルに書くのでしょうか?
>>804 モデル内で
var $useTable = false;
データベースを使わないメールフォームの処理などでよくやる処理
app/models/hello.phpを作り以下のように書きましたこんな感じでいいですかね <?php class hello extends AppModel { public $name ='hello'; public $useTable = false; } hello_controller.phpの$this->set('sample_text', 'サンプル');というのを↑hello.phpに書くというのは できないのでしょうか? ModelなのでデータをModelのファイルに書きたいと思いました。
おねがいぼくを一人前のケーキ職人にさせて
CakePHPが汚いとか言われるのは何故?
security componentには参ったな
アフィ張ってても構わないので入門サイト作ってください フレームワーク初心者でも分かりやすいやつをわかりや
それこそcookbookのブログ作成で良いだろ
ブログ興味ないしあれは難しいからダメです
いや、あれが難しいなら何もできないだろ PHP自体はどの程度できるの?関数とクラスはわかってる?
PHPが分かればCakeも分かるらしいです
書いてある通りにやればいいだけじゃん
ブログチュートリアルが難しいと感じるレベルなら、まだフレームワーク以前の段階だよ 簡単な掲示板とか作れるくらいの最低限の知識がないと触れない ブログチュートリアルが終わってから何すればいいのかわからないって悩みなら共感できるけどね
掲示板作れますけどフレームワークはわかりません
わざわざフレームワークわかろうとすることないよ 使ってみて「おっいいね」と思った時だけ使えばいい
PHPPROで掲示板作る練習するとか
PHPproの先生方にCakePHP講座やってもらえばいい
ネットブックをメイン機にしてるんだが、 CookBookは文字が小さくてつらい。 で、画面を拡大すると、右側にはみ出した文字が 消えてしまう。 Firebugで原因を突き止め、 #content{ overflow: hidden; } を #content{ overflow: visible; } に変えてくれるようにMark Storyさんにメールだした。 で、『I'll see what I can do about that.』と返事が来た。 でも、いまだに直っていない。 …待ってる。……ずっと…、待ってる…(つД`)
お前良い奴だな
あみんか
UNIONをSQLを直接書かずにする方法ありますか
無いです
今日一日で簡単な会員管理システム的な物を作ったけど、 簡単すぎてどこかでバグや不具合が出ないか不安・・・ 一応、今まで作ったファイルを元にしたけど
重要なのはどれだけ簡単か(どれだけ手間をかけたか)じゃなくて、 フレームワークが勝手に余計なことをしていないかどうかだよな
そうだな。そしてそれを判断するには、やっぱり時間と経験が必要だよな。
君は飲み込みがいいな
Authを使った1回目のログインが失敗し、 更新ボタンを押して繰り返すとログイン出来る時があるのですが、 これってモデルのキャッシュ(app/tmp/cache/models)が影響してるんですかね? beforeFilterで $this->User->create() を入れてモデルを初期化したら 今のところ、上記のような動作にならないのですが。 (モデルキャッシュを削除するのに、この方法で良いかは分かりませんが・・・
ヘルパーの書き方って、 $html->link と $this->Html->link どっちが推奨なのかな? 後者のほうが、変数名が衝突しなくてよさそうだけど。
前者。 CakePHPのテンプレートの中で$htmlという変数名を見たら 10人中9人がHtml helperのことだと思う。 その変数名を別のことに使おうという発想自体いただけない。 考慮する必要もない。
>>837 1.3は後者だね
$htmlは非推奨、互換性のため残してあるだけ
普通に使ってたものを急に非推奨にするからウザいわー
でも後者の方が良いな。$htmlだと変数かオブジェクトか紛らわしい
ヘルパーだろ?紛らわしくなるほどviewが複雑になってるほうがおかしい
843 :
nobodyさん :2010/10/17(日) 16:51:23 ID:/5W8QVHN
saveAllで3、4階層まで再帰的にsaveさせたい。 みんなどうしてる?
3、4階層までさせない。だいたい2階層まで。
845 :
843 :2010/10/17(日) 18:22:28 ID:/5W8QVHN
saveAllは2階層までしか再帰的にでないないですよね。
(TranzactionもsaveAllの中では自動)
3,4階層はTranzactionはってsaveするしかないですよね。
>>844 なるほど、2階層までですね。
1.2の頃は「cakeはstableを名乗っていても全然stableじゃない」なんて言われてたけど、最近はちゃんとstableなの?
同じ1.3.4をダウンロードしたのに、時期によって中身が微妙に違ってた。 なんというかバージョンはあてにならん。
それ、本当ならひどいな
バージョンの意味がねえwww
んなことあるわけねーだろ
つか1.3.4.**** このリビジョン部分が変わってんじゃないの? svnで管理されてるんだから気になるならリポジトリ入って見てみろよ
viewのelement間で、共有変数を使うことは可能ですか? 例えばの話、 elementAで i++; elementBで i++; と定義しておいて、elementAを2回、elementBを1回呼んだとした場合、 iを参照して3という値を取りだしたいのです。
853 :
852 :2010/10/18(月) 22:53:25 ID:???
追記です。 案としてsession変数を使用したのですが、viewからはSessionに書き込めないとのエラーとなりました。 代替の手段ありましたらお教え頂ければと思います。
854 :
852 :2010/10/18(月) 22:59:34 ID:???
解決しました。 ヘルパー内にpublicな変数を定義しておけば、element間で共有参照できます。 ありがとうございました。
cakeが扱えるようになるとphpの世界は変わって見えますか?
見えない
>>847 そんなのよくあることだよ。
写真とかも修正してあるしさ。
風俗では。
いやホントに 改めて言うのも照れてしまうけれど花金明け土曜日0時なら俺は言える 「CakePHPこそフレームワークの完成形だと」 The Standard Languageの座を揺るぎないものとしたPHP 20世紀エンジニア達の知の結晶とも言うべきMVC ここにRuby on Railsというスパイスが加わってCakeは生まれた 全くこれは何だっていうんだい 奇跡なんて陳腐なもんじゃない おそらくはCOBOLが生まれた時点でPHPの誕生は決定済みであったろうし Rubyは図らずもCakeの為に作られたと言っていいんじゃないか RubistやDHH、それに20世紀を生きた全てのエンジニア達が費やした途方もない時間 それらはすべてCakeに繋がった Cakeのために彼らの汗が流された 逆じゃないんだ Cakeは結果じゃない Cakeが始まりであって、Cakeの生誕のためにRailsがあり、Rubyがあった 20世紀を生き、そして21世紀に歩を進める全てのwebに関わるエンジニアのための心臓、それがCake 俺はCakeの時代に現役でいられたという事を誇りに思うだろう 死ぬ間際に息子と娘と孫と妻、そしてCakeの事を思うだろう あぁCakeよCake お前は俺の中にあるし、Cake内部にも俺がいる うまく言葉にできねぇな、とにかくCakeはもう21世紀エンジニアの魂だ そして最後に 最愛の妻と友人、そしてペニーオークションに幸あれ
どこのコピペでちゅか?
オライリー本の謝辞みたい
最近のコピペって最後にペニーオークションについて書かれていることが多いよね
違う。ペニーオークションが好きな一人が貼りまくってるだけ
親に感謝するのはラッパー 妻と友人に感謝するのはオライラー
妻も友人もいないのがオマエラー
と、と、トモダチぐらいいるよ!
よ、よ、嫁だっているさ!
もちろん三次元に、ですよね?
どどどど童貞ちゃうわ
嫁はいるのに童貞なのがお前らじゃないか
空気嫁
871 :
nobodyさん :2010/10/22(金) 13:21:38 ID:6ZqFCW+N
燃やして二酸化炭素にでもしろ
精子がついてそうだからやだ
>>871 広末の写真集とか 双葉文庫 おさな妻 (中古)とかw
なんだその他人に譲渡すると法に触れそうな感じのタイトルは
みなさんbakeコマンド使ってますか?
1.3以降はfind使う分にはSQLインジェクション気にしなくていいんですか?
CakePHPの予約語一覧てどこかにないですか? flashというアクションが動かないけど予約語なの?
/cake/libs/controller/controller.php の中にflash既にあるよね
>>880 ホントだ。こういうのいちいちソース検索しないといけないのかなあ
チュートリアルやるとflash出てくるよね
FastCakePHPって本最悪だなー 手抜きもいいところだし著者の曖昧な知識を隠そうとしてる節が見受けられる CakeどころかPHPですらよくわかってないじゃんと思って著者調べてみたら評判最悪なのな 詐欺オークションに関わってるとか 金返せ つーか発禁にするべきレベル
当時としてはこの連載自体はそんな悪くないと思ったけど まあ書籍にするとまた話は別だよね
単なる妬みでしょ 相手したらいかん
akiyanの悪口言うヤツは許さんぞ!
1.32だが、AppControllerで var $uses = array( 'User' ); などと指定しているモデルは、それを継承した他のコントローラでは使えないの? 子クラスの方でも同じ指定をしないと見つかりませんエラーになった。 そういうもんなの?
そういうもんだよ。
>>884 詐欺オークションに関わってるってどういうことだ?
ペニーオークションなら、むしろ批判記事書いてなかったっけ
参加しただけでもある意味関わってるということになるのかもしれないね
「関わってる」という言葉はいろいろ使えて便利ですね、
>>884 さん
くそわら
cookbookってなんでいつも重いの?
海外にあるから
リンクのURLミスりまくってるのも海外にあるから
>>891 アフィ付きのマンセー記事書いてるじゃん
めんどくさいからリンク貼ってくれ
>定価7万の商品に対して、最終的に参加者全員が投入した合計手数料は35万 ワラタ さすがにこれ読んでペニオク始めようと思うやつはいないだろ
株式会社ヨセミテは事業停止したけど、塚田さんはどこに消えたんだ?
アフィ乞食の提灯持ち必死だな
ページネーションを始点と終点でループさせる方法を教えてください
904 :nobodyさん :sage :2010/10/27(水) 10:21:12 ID:??? ページネーションを始点と終点でループさせる方法を教えてください
使用するDBを動的に定義する方法はありますでしょうか? あらかじめdatabase.phpにDBの設定をしておけば、modelのuseDbConfigを使って 接続先のDBを切り替えることができますが、あくまでも事前に設定された中からの選択です。 動的にDBの接続設定を変更したいのですが・・・。
907 :
906 :2010/10/27(水) 12:48:02 ID:???
すみません、解決しそうです。ありがとうございました。
折角だからかけよ
909 :
906 :2010/10/27(水) 13:30:45 ID:???
ものすごい力技なのですが、libの変更で乗り切ろうかと。 ConnectionManagerのコンストラクタでdatabase.phpの 定義の読み込みが行われるので、この直後に 再定義を行う処理を追加しようと考えてます。 本当はもっとスマートにやりたかったのですが、ちょっと思いつかなかったので・・・。
>>906 ちょっと良くわからないんだが、「事前に設定された中から」と
beforeFilterとか__constructでuseDbConfigを切り替えるのと何がどう違うんだ?
いちいちコントローラーに書くのが嫌だとか?
911 :
906 :2010/10/27(水) 13:55:22 ID:???
>>910 同じ構造のDBがユーザー単位(不定数)に存在していて、ログインユーザー別に
DBを切り替える、ということをしたいのです。
912 :
906 :2010/10/27(水) 14:04:46 ID:???
>>911 それを最初に書けよw
あんたの質問が下手だから誰も回答しなかったんだな。
まぁちゃんと解決方法をかいたのは偉い。
偉いな、褒めてつかわす
よきにはからえ
あ〜れ〜〜
俺初心者だから時々ここで質問したりROMったりしてるんだけど、最近ようやく ここは俺みたいな奴しか見ていないことがわかってきた
オレもオレも
920 :
906 :2010/10/27(水) 18:45:23 ID:???
>>912 で書かれているreconnectを使用する方法で切り替えられることは確認しました。
ただ、ここで一つ疑問が。
モデルのキャッシュ機能について、DBの切り替えを行った際に正常に動作するのでしょうか?
>>911 で「同じ構造のDB」と書きましたが、正直言うと同じテーブル名で数カラムの差異があります。
例えば下記のような同名のテーブルが別DBに存在していたとして
DB1.table1:カラム数10
DB2.table1:カラム数11
ユーザー1がDB1.table1のデータをfind→tmp/cache/modelsにテーブル構造がキャッシュ
直後にユーザー2がDB2.table1のデータをfind→キャッシュの構造を用いてfind→1カラム足りないとエラー
ということになるんじゃないかと心配しています(検証はまだしてません)。
モデルキャッシュが具体的に何をしているのか調査してみますが、ご存知の方いましたらお教えください。
921 :
906 :2010/10/27(水) 18:49:04 ID:???
>>920 すみません、逆でした。
ユーザー2がDB2.table1のデータをfind→tmp/cache/modelsにテーブル構造がキャッシュ
直後にユーザー1がDB1.table1のデータをfind→キャッシュの構造を用いてfind→1カラム足りないとエラー
もうウザイから答えない
923 :
906 :2010/10/27(水) 20:13:20 ID:???
すみません、解決しました。本日はありがとうございました。 ウザイようなので消えます・・・。
自己解決してスレ汚し乙であります。
すみません。 いまwebアプリケーションを作りたいのですが PHP導入を考えて折ります。 PHP?っていうのがよくわからず どれをインストールしていいのかよくわかりません fc2などのレンタルサーバで動くのでしょうか? ダウンロードの場所など教えてくれたらありがたいです。 どなかた教えてください。
コントローラが太るのを防ぐため機能をカテゴリ別になるべくコンポーネントに分けたら var $components = array( 'aaaa', 'bbbb', ........ って所がアホみたいに長くなった。これはこれで見辛い。難しいもんだな…。
効率化を考えてファイルを分けると余計にややこしくなるよな
今作ってるアプリ、コントローラが100個コンポーネントが50個ぐらいある。どうなっとるんだ…
>>930 すごいなそれ。なんのアプリなんだ。
Cakeの守備範囲の限界に近いな。というか管理が大変そうだ。
何人で書いてるんだよ、それ
絶対一人だな
Model側がスカスカだったら笑えるというか笑えないな
ちょうど手元にあるよ。 今あるレビューでも触れられている通り、文字通りのリファレンスマニュアル。 内容はとにかく広く浅くで、CacheクラスやObjectクラスといった オンラインマニュアルには記載されていないようなところまで網羅してある。 Controllerクラスのプロパティも一通り(30個ちょい)並べた表があるし。 ヘルパーの書式をいちいちマニュアルから探すのが面倒だったので 買ってみたんだが(その用途には普通に役に立ってる)、 初心者以外にはお勧めできると思った。
search plugin使ってる人いる? 「%」を検索文字に入れるとエラーになるんだけど、対処方法教えて
>>936 このスレの上の方で不満を書いた者だけど、
使い続ける事で、結構便利だと悟ったw
結構大きめのアプリや、それこそ”オレオレフレームワーク”
作る時も参考になると思うよ。
オレオレフレームワークをつくるメリットが分からん。 よほど高度な技術+運用を考えられる人がいて、 スタッフの教育もできるようなら、良いかもしれないけど。
使い道によるでしょ。 CakePHPだって最初は少人数の開発者が作った「オレオレ」だったわけだし、 ある限定された場面で簡単に利用するためにCakeをカスタムする人だっている。 スクラッチから書くのと本質的には変わらん。 利用実績やweb上のドキュメントがない(or少ない)というデメリットを 上回るメリットがあるかないかでどの選択肢を採るか決めるだけ。
CakePHPを土台にしたフレームワークは作る必要があるなぁ。 便利だけれど、公開サーバで使うには標準だと機能がまだ足りないし。
>>939 Cakeってよくソース見ると、自分の使い方で必要ない機能が満載だからね。
xdebugすれば分かるけど、それで処理が遅くなる事がある。
だから、小規模の・ちょっとしたシステムを作りたい時にどうしようかと思って
Cakeの書き方に慣れたから、Cakeっぽいオレオレフレームワークを作ったんだよ。
命名規則だけ参考にして、ソースはかなり簡略化してるけどね。
ふーんどうでもいい
一人で作ってるんだろうから別にいいんじゃない?
>>942 Cakeのコードを削ったわけではなくて、
あくまで参考にしつつ新しく書き起こした感じ?
こういうの一度やっておくのも勉強になるかも。
>>945 そうだよ。MVCの仕組みとか勉強になるし、
チームでやる分けじゃないから問題ないと思うよ。
久しぶりにオレオレフレームワークくんが来てるのか なつかしいなぁ
なんかやたら過敏に反応するレスが多い気がするけど、 なんか自作FWに嫌な思い出がある人でもいるの? 開発期間が短いせいか、PHP界隈はとにかく 「既存のコードを継ぎ合わせて手早く作ることこそ美徳」みたいな 風潮があるような気はしてたけど。 ここまで来るとちょっとアレ。
気にするな禿げるぞ
単に別の用語出しただけで、やたらと過剰反応する奴は何がしたいんだ。 PHP使い始めていきなりフレームワーク覚えたわけじゃあるまいし。 948の言うように暗い過去とかあるんじゃねーの。
しつこい。あわれ。すれ違い
公開したら使ってみて評価するけど そうじゃないなら何を話せと。あとスレチでしょうに
そもそもオレオレフレームワークの話題になってなかったんだが。 それを突っかかっている奴がいるから荒れる
読み返してみたけど、レスの流れでちょっと自作FWの話が出ただけじゃん。
それを「評価」とか、本当にいったいどんなトラウマ抱えてるんだよw
それとも
>>954 は毛根の話も等しく叩くの?
叩くんなら
>>950 の頭皮にしとけばいいよ。
ちょっとは血行が良くなって感謝されるかもしれない。
つーかどうでもよくね? けいくぴーえいちぴーだよね? けーきぴーえいちぴーって読んでる人いる?
え?普通後者じゃねーの?
ケイク屋さんと言わず、ケーキ屋さんと言うよな、普通。
おれはケイク
欧米か!
PHPをぴーえいちぴーと呼んでるなら Cakeはしーえーけーいーだろ
カッケーっす。
964 :
nobodyさん :2010/10/30(土) 12:49:58 ID:0nJMOOka
CakePHPで最初に呼ばれるファイルは、 2回Rewriteされて、app/webroot/index.php が呼ばれると考えて良いでしょうか? またこの時、アクセスしたファイル名はGETパラメータとして扱われると思いますが、 POSTとGETが混在しても問題ないのでしょうか?
RoRに浮気しているのですが、CakePHPに戻ろうかと思ってきました。 Rubyは簡潔にコードが書けるのは魅力だけど、PHPのほうが何かと 簡単でとにかくWebサービスをガンガン作っていきたい自分にはCakeがいいかなと。 初心者には敷居が高かった。。。var_dump使えないし。。 リチウムはRoRを超えるポテンシャルありそうですかね。本当に期待してます。
結構どのFWも重いんだね 安心した
SQL DUMPしてみたらdescribeが一番時間食ってるんだけど どうにかならないの?
968 :
Perl忍者 ◆M5ZWRnXOj6 :2010/10/30(土) 17:50:10 ID:qrL+r3Lg
Sledge作ってる人がこういいました 「はぁ? cakePHP? なにそれクソゴミカスキエロ」
>>968 ∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
自作フレームワークなら80行未満で書けたぞ
書いてくれ
既に60行コードが出まわってるからここには書かん まあ60行のほうはキャッシュ付いてないが
>>973 キャッシュつけるのに20行もかかったのかよ。
80行未満でとかそんな自慢されてもしょっぼい実用的じゃないの作られても フレームワークの意味がないやん
もしかしてCakePHP一筋?
縦スジの方が興奮する
CakePHP縦スジ 大して興奮しないが・・
擬人化がまだだからだ
びっくりするぐらいCakePHPに関する話題はないな、ここ最近。
981 :
底辺 :2010/11/01(月) 09:47:43 ID:???
>>980 ないよね。俺もそう思う。
もうネットサービス自体が限界なのかな。
アフィリエイトも淘汰されたし。
>>981 なんでそっちの方向に話が進むのかがわからんw
質問しても誰も答えないし。
つか、善し悪しはともかく完成はしてるだろCake。 話題が一巡したんじゃね?RoRスレもだらけてるし。
リチウムについて語りましょう。 まだ使いがっては悪い感じですかね? CakePHPに比べて優れているというか、どういった方向で作っているのだろうか。
あ?スレタイも読めんのか?
だいたい2パターンに分かれると思うんだよ。 ・Cakeの機能に対する話題 ・Cakeの使い方に対する話題 どちらも答えてやるから真面目な奴質問してこい
ここで「それはPHPの使い方だろJK」的な質問が来て萎えるのがこのスレの特徴。 なぜこうも初心者ホイホイなんだろうな、Cake。 まあ、俺も4年前くらいにかなり初心者に近い状態でCakeをかじったのであまり言えない。
初心者ホイホイで良いじゃん。例えcookbookに書いてるとしても 「cookbookに書いてあるよ」と教えれば、そいつにとって学習になる。 お前の言う上級者・玄人しか使えない・使わないシステムなんて糞だ
>>989 cookbookレベルならまだいいんだけど、
プログラムの基礎とかhttpの基本的な仕組みとかPHPの基礎的な文法とか
そこらへんの話題の範疇が、
Symfony / ZendFW ではなくCakeに圧倒的に多い、気がする。
なんの問題もないな
「php」でスレタイ検索してphpの質問してくるアホがいる
CakeはすべてのレベルのPHPerが使えるフレームワークと謳っているので、仕方がないのですよ
だな 初心者ウェルカムで、これに慣れて物足りなくなったら他へどうぞだな
賢いやつばっかりで話してもおもしろくないしな
物足りなくなったらどこへ行くんだよ
それこそ「自分で解決する」で良いんじゃないか。 物足りないって判断が出来る奴は。
流し排水口のゴミ取りの金属製のかごのヌメリがなかなか取れません。 どうしたら良いでしょうか
999ゲトー
1000ゲッツ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。