【PHP】フレームワーク CakePHP 7ホール目【v1.2】
1 :
nobodyさん :
2009/09/01(火) 16:12:06 ID:XVdxsVut
テンプレらしきものは以上 補足があればどうぞ Have a Nice Cooking !
乙
スレbake乙
スレscaffolding乙
スレアソシエーション乙。
cakeってキャッシュのグループ化とか出来ないのかね。 まとめて削除とかしたいんだけども。
ディレクトリ覗いてキャッシュ削除するのが、そんなに辛いの?
12 :
sage :2009/09/03(木) 12:29:16 ID:6RTv1eVY
1.2ガイドブックを読んでいます テーブルに日付データを持たせてdatetime型で作成し、その後bake実行し、 ふんふんと眺めてみました。 新規作成のadd画面ではその日付データはドロップダウンリストになっているのですが、 そこに選択肢として、冒頭に「空白」(選択しない)を持たせたいと思っています。 現在、bakeされたソースコードは echo $form->input('enddate',array('dateFormat'=>'YMD','monthNames'=>false,'timeFormat'=>'NONE')); こんな感じでかかれているのですが、上記のようなことをしたい場合は $form->selectの形で全体を書き換えなくてはいけないのでしょうか。 日付選択なので、現状の年月を取得するためのロジックはあえて書きたくないので、ピンポイントで 修正できる方法がないかと思っています。 それともbakeは本当に枠組みだけなので詳細なオプション等は書き換えが前提なのでしょうか。 よろしくお願いします。
>>12 オプションに
'empty' => '選択してちょ'
だったと思う
select 使う場合は、'showEmpty' => 'select me'
14 :
13 :2009/09/03(木) 13:59:43 ID:???
ごめん。select使うときは
>>13 じゃなくて、第5引数に設定だた
>>11 ファイルベースでやるなら
rmコマンド使ってまとめて消せるからいいんだけど
memcacheとか使うと出来ないじゃん。
16 :
12 :2009/09/03(木) 18:07:45 ID:???
>>13 ありがとうございます!!
無事に
echo $form->input('enddate',array('dateFormat'=>'YMD','monthNames'=>false,'timeFormat'=>'NONE','empty' => '選択してちょ' ));
こう書くことで一番初めの選択肢に追加することができました!
これを読んだあと、
http://book.cakephp.org/ja/view/189/Automagic-Form-Elements こちらに同じことがかいてありました・・、すいません。
inputの第一引数の値によって、表示するタイプが違うので勝手にドロップダウンリストになるのですね。
実際、ビューに自作で手を入れるときはinputではなくselectを使用するほうがいいのかな、とは
思っているのですが(見た目で何が表示されるのかわかりづらい気がしました)
ありがとうございました。
ガイドブックにはここらへんの説明があまりかかれてないので、助かりました、ありがとうございます。
17 :
nobodyさん :2009/09/03(木) 22:56:22 ID:l9lqLow/
cakeでSNS作ってて質問があります。 1つの検索フォームに「ユーザー」「日記」の2つのラジオボタンを置いてラジオボタン別に検索内容を出し分けたい。 この場合フォームの送り先のControllerはどうするのが適切なのかな? 1. UsersControllerに送信してラジオボタンが「日記」だった場合はDiaryControllerにリダイレクトする 2. SearchesControllerみたいなのを作ってそこに送信。その中でどちらかのモデルから検索結果を取得 3. 根本的に頭の中がおかしい アドバイスお願いします。
HttpSocketつかえねーな Cookieの発行がおかしい ⇒チケット出てるみたいだけど、Cookieの仕様書どおりに作ったと言い張ってる? リダイレクト ⇒3xxのリダイレクトを追跡してくれない。まぁ自分で追跡すればいいんだけど面倒 すなおにPear::HTTP_Clientつかった
>>18 PCならJavascriptで切り替えればいいと思うけどそれをしないなら
俺は2を使うな。
>>19 複数クッキーに対応してないだけでしょ。
書き直したら使えたよ。
core書き直しはヤダ 継承したクラス・・・めんどい
CURLでええやん
あのさ、今めっちゃ困ってたんだけど、cakeでねshuffleしたんだよ。配列を。 じゃあさ普通毎回配列の中身変わるじゃん?変わんないの。 なんでなん?shuffleって確か中身はrandだからsrandが固定されてんのかなって思って コアライブラリにgrep掛けて探したら居るわけ。 cake\libs\security.php ******************************************** if (!defined('CIPHER_SEED')) { //This is temporary will change later define('CIPHER_SEED', '76859309657453542496749683645'); } srand(CIPHER_SEED); ******************************************** まぁsrandちゃんとしない俺が悪いけどさ、 76859309657453542496749683645ってなんなのさ 誰か教えてよ!
最近、CakePHPに興味を持って触りだした初心者なんだが先人達にauthコンポーネントの使い方について質問したい。 みなさんは、認証が必要なページと不要なページが混在している場合ってどうしてますか? 1.AppControllerでauthコンポーネントを読ませて、認証が不要なページでAuth::allow()を呼ぶ 2.認証が必要なページでのみauthコンポーネントを読ませる 3.authコンポーネントを使用しない どれもスマートさに欠ける気がするのだが、何か他に良い方法があったら教えて欲しい。
26 :
24 :2009/09/04(金) 20:19:56 ID:???
>>25 データの更新が可能なページ
参照系のページは、認証(ログイン)不要にしたい。
ゲストアカウント作っても良いのだが、一々ログインさせるのは面倒かなと思っています。
自動的にゲストアカウントでログインさせる様な巧い手があれば、それもアリかな?とも思っています。
ちなみにaclコンポーネントは自前で書いて、Auth->autherise=array('object'=>'HogeAcl');しようと画策してます。
※autherise:スペル違うカモ…手元にPC無いので確認出来ない
>>24 CakePHPのマニュアル的には1と2を場合によって使い分けるのがスタンダードじゃないのかな。
28 :
24 :2009/09/05(土) 00:34:22 ID:???
>>27 やっぱり、それがスタンダードですか。
とりあえず、今は↓みたいな感じでやってみようかと妄想してます。
・AppControllerでauthコンポーネントを読ませる
・beforeFilter()内で、未認証だった場合に Auth->login($dummy_user) を呼び出してダミーアカウントで認証
・afterFilter()又はbefore/afterRender()内で、ダミーアカウントで認証されていた場合にログアウト処理を呼び出す
29 :
nobodyさん :2009/09/05(土) 11:21:53 ID:4jU9VbTX
>>28 beforeFilter()内で
$this->Auth->allow()
$this->Auth->deny()
使ってやるのはダメなの?
30 :
24 :2009/09/05(土) 18:13:26 ID:???
>>29 あ、、、
確かに、
>>28 みたいにするくらいならbeforeFilter()内で自前のACL用コンポーネントのチェックメソッド呼んでallow()、deny() する方がスマートですね。
いつの間にか、Auth->authorize を使用する事に固執してしまっていたようです。
31 :
12 :2009/09/05(土) 18:43:41 ID:???
答えになってないかもな初心者ですが、ガイドブックの方では (もしごらんになっていたらすいません) ・ユーザー登録(認証いらない) ・ブックマーク登録(認証必要) みたいなケースの場合 app/app_controller.phpに認証必要フラグ$needAuthをfalseにし、trueの場合は 認証が正しくない場合は、エラーをだす。falseのときは何もしない。 というような処理をさせておいて 各コントローラーに、その認証必要フラグをいちいち true,falseに切り替えることで処理していました。 userのコントローラーはneedAuthフラグをfalseにし bookmarkコントローラーはneedAuthフラグをtrueにすると上位の コントローラーでログイン情報の有無を確認する、という感じでしょうか。 まだ私がneedAuthコンポーネント使ってないので参考にならないかもしれません。
CakeのAuthは思ったより複雑だよね。 CakeでLDAP認証制御できたら、 フォルダのパーミッション毎に認証のON, OFFの切り分けできるのになぁと夢想したりする。
AuthというかACLね。面倒なのは。
34 :
nobodyさん :2009/09/08(火) 00:46:21 ID:xTRWhMD6
ACLって開発の最後に使う? 最初に使う?
最初に作っちゃうといろいろメンドクサイよね。 ある程度コントローラが固まった段階で入れてます。
MySQL、PostgreSQL、SQLiteの使えないサーバでCakePHP使ってる人いますか?
>>36 MySQLもない格安レンタルサーバーでCakeが動くかどうかわからないぞ。
もしPHPのメモリが足りたとしても、
大人しくCodeIgniterあたりでも使った方が良い。
>>37 ばっか。Oracl使ってんだよ。きっと。
そういえば、DB使わない開発できるけど、 DB無しの環境で動くのかどうか判らないなぁ
app_modelに $uses = false; とか書けばいいだけじゃないの? modelのCRUDを全てファイル操作にマップするビヘイビアとか探せばありそう。 いろいろ制限はされるし動作は遅いだろうけど
43 :
36 :2009/09/08(火) 22:15:21 ID:???
>>37 軽いフレームワークなんですね。>CodeIgniter
なかなか良さげなので調べてみます。
>>42 Posqlいいですね!pure PHPのデータベースでCakePHP対応してるなんて、まさに求めてた物です。
早速使ってみようかな。速度とか、安定性とかちょっと心配ですが…
フォームからのファイルアップロードのページを作ってるんですけど、 アップロードされたファイルを確かめて、 ファイルの種類によって処理を分けて(例えば画像だったらExifを解析したりサムネイルをつくるとか) データを登録・・・っていう流れなんですけど、 そのまま直線的に書くと、コントローラーがどどーっと長くなってしまいます。 どの辺からモデルの仕事と分けるべきでしょうか?
全部じゃね?
class.uploadだっけ? みたいな既存のライブラリをベンダーで読み込むとか コンポーネント使うとか
47 :
nobodyさん :2009/09/09(水) 01:01:21 ID:rQurxkXZ
48 :
44 :2009/09/09(水) 02:17:00 ID:???
ありがとうございます。
確かに
>>46 さんの言うようにコンポーネントかなあとも思ったりしたんだけど、
コンポーネントでいろいろやってDB保存用のデータを出してくるんだったら、
最初からモデルなのかなあ。とも悩んでみたところでした。
Media Pluginつうのを調べてみたらビヘイビアで処理してるんですね。
これをちょっと試してみます。
コントローラ 処理を分ける部分。if文と各種呼び出しのみ。 if文が連なって長くなってもそれは仕方が無い。 コンポーネント アップロードされたファイルの処理の部分 モデル その他
モデルに処理書いてついでにアップロードのバリデーションエラーも書く
51 :
nobodyさん :2009/09/09(水) 18:58:34 ID:rQurxkXZ
MeioUpload ってやつもあるよ
こんにちは^^ hoge.com/users/login としたいんですが hoge.com/app/users/login になってしまいます>< app不要なんですがどこを弄ればいいですか?
>>52 ウェブルート/app/index.php
を読み込むからだろ。
ウェブルート直下にindex.php置けや。
ありがとうございます できました><
>>52 一応言っておくけどそれ、apacheの質問だからね。
スレ違い
>>56 アパッチのことなんもわからんとリライト使ってるcakeなんか使うから
わからんくなるんだろ。
なんで喧嘩腰やねん
>>58 お前が慣れへん関西弁なんか使うからやないか
お前が慣れへん関西弁なんか使うからやないか〜い
おまえら関西バカにすんなや 怒るでしかしw
ワイが浪速のケーキ職人やでホンマ
63 :
58 :2009/09/10(木) 20:34:14 ID:???
大阪生まれ大阪生まれやヴォケ
後半育ちって書こうとしてまちごーたやないかボケ
65 :
nobodyさん :2009/09/10(木) 21:29:59 ID:vjF96vcK
SELECT tables.created + INTERVAL 1 HOUR FROM tables とかどうすればいいん? $this->Table->find('all',array('fields'=>'Table.created + INTERVAL 1 HOUR AS hoge')); だと SELECT `Took`.`created + INTERVAL 1 HOUR` AS `hoge` FROM `tables` AS `Table` とかになってエラーになる $this->Table->query('SELECT tables.created + INTERVAL 1 HOUR AS hoge FROM books'); $this->Table->{'SELECT tables.created + INTERVAL 1 HOUR AS hoge FROM books'}(); しかないの?
>>65 DATE_ADD( Table.created, INTERVAL 1 HOUR) as hoge
ではどうでしょ?
>>65 パフォーマンス上問題が無いのであれば、
PHP側で実装する。
そうするとデータベース変更しても使えるしね。
E○-○UBEみたいに、ifでDB判断して
実行するSQLを切り替えなくてすむぞw
68 :
nobodyさん :2009/09/11(金) 11:07:52 ID:breeYuOb
ご質問させてください。 hoge_controllerがあって、 使うのテーブルがhoge1とhoge2がある場合、 モデルはhoge1.phpとhoge2.phpになるのでしょうか? 今までコントローラー名とモデル名は同じで作成していたのですが、 一つのコントローラーで2つのテーブルに同時にsaveしたい時に どうしてもこのやり方ではできなくなってしまったので・・・ $this->Model->query()で無理矢理やれない事もないのですが、 $this->Model->query()がクエリに成功しても失敗しても レスポンスが返ってこないのでエラー処理できなくて困ってます。 ご教授いただけるとありがたいです。
>>68 アソシエーションをちゃんとかいてれば、まとめてsaveするよ。
hoge1とhoge2の関係性とか書いたほうがいいんじゃないかな。
70 :
nobodyさん :2009/09/11(金) 11:35:25 ID:breeYuOb
>>69 ありがとうございます。
hoge1とhoge2の関係が1:多の関係で、
今やっているのが、hogeControllerに
$users= array('Hoge');
と記述していて、
hogeModelには
useTable = "hoge1";
となっています。
hogeModelからfindでhoge1の情報を取得しているのですが
最終的にその情報をもとに、hoge1とhoge2にそれぞれ
UPDATEとINSERTをやりたいのです。
その場合、それぞれテーブルごとにモデルを作成して、
hoge1側に$hasOneを設定すればいいのでしょうか?
>>70 × $users = array('Hoge');
○ $uses = array('Hoge');
ですね、失礼しました。
>>70 Hoge1 を Article
Hoge2 を Comment
とすると
Articleモデルは
$hasMany = array('Comment');
Commentモデルは
$belongsTo = array('Article');
としておけばよい
あとは、ArticlesControllerで
$this->Article->saveAll とか $this->Article->Comment->save とかする
>>70 >その場合、それぞれテーブルごとにモデルを作成して、
>hoge1側に$hasOneを設定すればいいのでしょうか?
それでいいと思うよ。
なるべく$usesとか使わないで、命名ルールに素直に従う方が後々楽ですよ。
例えば、テーブル名をhogeとhoge1にしてHogeモデルとhogeコントローラーを作るとか
>>72 $this->Article->save
$this->Article->Comment->save
で分けて保存した場合トランザクションが利かないことがあるよね。
でたな揚げ足マン
なぁなぁ、デバッグオフの時にもエラーログ吐かせたいんやけど、 できやへんの?
何すんの?
80 :
78 :2009/09/11(金) 19:29:39 ID:???
>>79 もしかして俺に聞いてくれてる?
いやほら、なんか予期せぬエラーが出て処理が止まったりしたりしても気づけないじゃん。
error_reporting(E_ALL)
>>78 さぁ、このページで「log」で検索する作業に入るんだ。
マニュアルに結構載ってるから一通り読んで、まず検索してみろ。
ググっても結構あったぞ。
85 :
65 :2009/09/12(土) 00:56:23 ID:???
>>66 いやあ、勝手にパースされて`が変なところに付くということなんで
SQLを変えても意味がないというか。
$this->Table->selectAdd('tables.created + INTERVAL '.$this->Table->escape('$hour').' HOUR AS hoge');
みたいなのがあればいいんだがなあ、と。
>>67 EC-Cubeは使ったことないからわからないが、
今回は単純なSQLだからいいけど、
複雑なのだと非常にパフォーマンス上問題になりそうなのでご勘弁願いたい。
つうかDB乗り換えるような変更があったとしたら、
SQLだけ対応しててもそのまま動くとは思えないんだが。
paginatorのsortKeyの第二引数$options['sort']って何ですか? preg_match('/(?:\w+\.)?(\w+)/', $options['sort'], $result) とか書いてあるけど全然意味がわかりません。
87 :
12 :2009/09/12(土) 11:58:30 ID:???
PostテーブルにFROMのUser.idと toのUser.idを格納するフィールドを作りました。 Post.user_id Post.from_user_id と作成し、 'from_User' =>array('className' => 'User','foreignKey' => 'from_user_id'), 'to_User' =>array('className' => 'User','foreignKey' => 'user_id'), のように$belongsToを設定しました。 ここでPostの編集画面(edit)でそれぞれのUserを選択させるコンボボックスを表示させる場合に 他所でbakeしたソースを見ると $users = $this->Post->to_User->find('list'); $this->set(compact('users')); こうセットしているようなのですが、これだけだとfromの方はtextでidがそのまま出てしまいます。 試行錯誤の結果 $from_users = $this->Post->from_User->find('list'); $this->set(compact('from_users')); が必要なことがわかったのですが、ここの$from_usersという名称はどこで関連付けた名前なのでしょうか。 toの方は$usersで良いのがなぜだかわからず。 ためしに$usersを$to_usersにしたら動かなくなりました・・・。 モデルの基本的なところが理解できていないかもしれませんが、 こういう場合はどのようにするべきなのでしょうか。 わかりにくい質問ですいません。
>>85 ちゃんとやってみたのか?
>>66 の言うとおり
$this->Table->find('all',array('fields'=>'DATE_ADD(Table.created, INTERVAL 1 HOUR) as hoge'));
でいけるはずだぞ。
>>86 普通は第2引数は指定しないと思う。
そうするとデフォルト値とquery stringをマージして現在のソートキーを返してくれるから。
$options['sort']は、'Model.id'みたいなのから'id'を取り出してるだけじゃなかろうか。
89 :
82 :2009/09/12(土) 12:24:36 ID:???
; * PHP versions 4 and 5
; *
; * CakePHP(tm) : Rapid Development Framework <
http://www.cakephp.org/ >
・
・
・
よくコードに上記のようなコメント書いてるけど絶対書かないといけないんですか?
書き方載ってるサイト教えてください
>>90 phpDocumentor でググるといいかな。
絶対必要というわけではないけど、
自分で作ったファンクションとかAPIのドキュメントを自動生成するために書式が決まってる。
後から自分のコードを読みやすくするには書いとくクセを付けといた方がいいのかも。
最近いいスレだなって思う うん、それだけ。
94 :
nobodyさん :2009/09/14(月) 21:33:44 ID:SnxRq9UL
uuidほど広範囲でなくて、 そのテーブル内でユニークなランダム文字列ないし数字を振ってくれる便利なものないですか? UUIDは長過ぎて8文字程度のランダムな文字列を割り当てたいんだけど
>>94 MySQLのauto incrementじゃ駄目なん?
あとこの質問はスレ違いじゃない?
96 :
nobodyさん :2009/09/14(月) 23:05:17 ID:SnxRq9UL
ランダムがいいんだよ CakeのString::uuid()がらみで聞いてみたけど確かにすれ違いかも Cakeに用意されてたら同じくStringクラスにあるはずだしね。。
ちょうどtwitterでよく使われてる短縮urlサービスのbit.lyについてるユニークidみたいな文字列が作りたくて 以前作ってみた。 処理としては、app_modelに、ランダムな/[a-zA-Z0-9]{8}/を返す関数を作り、 save時にそいつを呼び出して割り当てる(既に割り当て済みの文字列だったら、新しいものが出てくるまで処理を繰り返す) これでいけた。まあ自前で作っても簡単。
uuid を crc32 するとか なんかアホらしい気もするが
>>95 俺なら、それをmd5やらbase64やらsubstrして取り出すけどな。
もうタイムスタンプか、それを16進数化とかが一番被らなくていいんじゃね
101 :
nobodyさん :2009/09/15(火) 13:31:25 ID:jnkEds0n
あー皆さんありがとうございます。 速度遅そうですが以下のようにしました。 Model->__schemaあたりからidのカラム長を取得 Text_Passwordでカラム長のパスワードを生成 Model->findしてかぶりがないかチェック かぶっていれば10回まで再帰 ってなビヘイビアを作り読み込む。
>>101 10回やってもかぶってたらどんな処理にすんの?
uniqid() はダメなの?
GCして常時20〜50前後のレコード数なので まず普通は一回でもかぶらないのですが 一応10回まで回してそれでもだめならfalse返して終了 false受け取ったら自分にメール通知して、 画面はエラーです。。 今回はいいけど、他の案件で使おうと思うと全然だめですね。 uuidの36進数とかもやってみたけど結構文字数多いんですよね。 あと、time()を元にすると同秒の時の処理が・・・と、あと前後レコードを推測されやすいので
>>103 うわっそういやそういうのがあった。。
ありがとうございます!!
>>104 UUIDにはプロセスIDを含むはずなので、同時刻に生成しても問題ないはず
というか、そういう場合も含めて一意になるように設計してある規格なので
そこで衝突が起こったらUUIDの存在意義がなくなるような
そんな話してないだろ
キャッシュエンジンがファイルの時だけ ディレクトリ選べたらいいですのに。
109 :
108 :2009/09/16(水) 13:37:35 ID:???
キャッシュする時に大量のキャッシュする場合あるじゃない? それをファイルベースでやると1つのディレクトリに何個もファイルが増えるのが嫌なの。 で、それを解消するのにどうしようかなぁと思ったんだけど キャッシュを操作する直前にCache::configuいじって プリフィックスにディレクトリ情報つけるだkでよかった。
そりゃよかった
>>109 キャッシュ用のディレクトリ内でファイルが増えるのをなんで嫌うの?
煽りじゃなくてまじで聞きたい。
ブラウザを別に複数立ち上げて、CakePHPで作ったサイトにそれぞれログインすると、 ブラウザ間でSession情報を共有しちゃうんだけど、そういうものですか?
どーでもえーわ
>>113 ファイルリスト取らなけりゃ関係ないと思うけど。
bootstrap後とか セッション開始前とか そのあたりでpluginのコールバックを呼び出す機構がほしいな pluginの幅が広がると思うんだけど
117 :
113 :2009/09/17(木) 12:18:13 ID:???
>>115 そうなの?直接ファイルにアクセスするのには
ひとつのディレクトリにいっぱいいても大丈夫なのか。
キャッシュならFTPで接続しても見ることないしいいってことね!
mediaPluginってPHP5.2以上ってあるけど、 明確に5.2以上でないと動かない機能を使ってるんですかね? うち5.1台なんですけどむりすか
>>118 Media Pluginのソース全部読んだわけじゃないけど、
一部pathinfoの定数とかに5.2で追加されたものが使われてたのは発見したよ。
Security.level=highのままでajaxを使いたいんですけど、手間かかりますか? やはりmediumとかに落としたほうがいいんでしょうか?
121 :
nobodyさん :2009/09/20(日) 18:50:11 ID:4/VSd770
Bakeって実際のアプリ作成で使う? アプリの要件がモデルと単純に結びついてるケースなんてあんまりなくね? コード拾い場として使うくらい?
テンプレートの拡張しが.ctpな意味って何? .phpの方がエディタとかで扱いやすいだろJK
こういう板でこんな壮絶な釣りははじめてみた。
は? 合理的な理由言ってみろや
hoge.ctp.phpなら分かる オリジナルの拡張子にする害はあっても利はゼロだろ
出力をキャッシュしてエンコード変換したいんだけど そういう各アクション共通のフィルタって 基底クラスのAppControllerに実装するの?
127 :
nobodyさん :2009/09/21(月) 11:34:52 ID:PliNJAC7
>>126 そう。
afterLayout()とかで
>>124 そんなことはしらん
だが関連づけを追加するのが面倒なのは確かだな
_,,....,,_ _人人人人人人人人人人人人人人人_ -''":::::::::::::`''> ctpに慣れていってね!!! < ヽ::::::::::::::::::::: ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ |::::::;ノ´ ̄\:::::::::::\_,. -‐ァ __ _____ ______ |::::ノ ヽ、ヽr-r'"´ (.__ ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、 _,.!イ_ _,.ヘーァ'二ハ二ヽ、へ,_7 'r ´ ヽ、ン、 ::::::rー''7コ-‐'"´ ; ', `ヽ/`7 ,'==─- -─==', i r-'ァ'"´/ /! ハ ハ ! iヾ_ノ i イ iゝ、イ人レ/_ルヽイ i | !イ´ ,' | /__,.!/ V 、!__ハ ,' ,ゝ レリイi (ヒ_] ヒ_ン ).| .|、i .|| `! !/レi' (ヒ_] ヒ_ン レ'i ノ !Y!"" ,___, "" 「 !ノ i | ,' ノ !'" ,___, "' i .レ' L.',. ヽ _ン L」 ノ| .| ( ,ハ ヽ _ン 人! | ||ヽ、 ,イ| ||イ| / ,.ヘ,)、 )>,、 _____, ,.イ ハ レ ル` ー--─ ´ルレ レ´
ctpを絶対許さない
ふ CTP懐かしいぜ あいつ元気にやってっかな
thtmlのこともたまには思い出してあげてください
ClassRegistry シングルトン用オブジェクトコンテナっぽいけど なんで説明ないの?
アプリ用のオリジナルの設定ファイルをcore.phpから分離したいんだけど どうするのが定石ですか?
AppControllerに var $ext=".ctp.php"; を定義しても、ctpを読み込みやがる。 何故?
>>137 d
API&ソース見て探求していくしかないのか・・
symfonyのcontext的なものでいろいろ取り出せるのかと思ったら
viewしか入ってねー
140 :
nobodyさん :2009/09/23(水) 03:33:59 ID:ux1l4fZg
どーしてもわからないっす・・・。 SNS的なサイトをつくる場合にログイン認証画面(auth利用)→個人プロフィールトップ画面みたいなんを作りたいんす。 色々試行錯誤したんだけど、解決方法としては テーブルを二つ用意する。userテーブル(ログイン認証用でid,password)とprofile(個人プロフィールトップ用(誕生日とか好きなものとか)) んでもってprofileテーブルからuserテーブルにhasoneでくっつける。 でもコントローラどうやって書けばいいか・・・。 っていうか方法本当にこれでいいのかな? 誰かいい方法知ってたら教えてください!!
142 :
nobodyさん :2009/09/23(水) 05:54:39 ID:ux1l4fZg
140です。 ありがとう。 使用以前ていうか、cakephpのauth使ってできるんすか? できないなら、使わないで普通に書くんすけど。
>>140 User hasOne Profile な関係にして
UserモデルとUsersControllerでやるといい
ProfilesControllerは不要
145 :
nobodyさん :2009/09/23(水) 15:10:04 ID:ux1l4fZg
140です。
皆優しいっすね・・・。あれ、ちょっと涙が・・・。(笑)
>>143 さん
ありがとう。読んでみます。
>>144 さん
ありがとう。
ただ、USERモデルを作ったらはまったんすよ。
ID,pass合ってるのにログインできなかったりして。
auth使った場合、Userモデルは作らないって別の本にも書いてあったし。
パスワードの暗号化かんれんじゃねーの? とりあえず、チュートリアル系で一からやってみて、 動いてから自分のやりたい事やりなよ 問題の切り分けがしずらいし聞きたいこともわからん
147 :
140です。 :2009/09/23(水) 21:12:19 ID:ux1l4fZg
みなさんこんばんは。 とりあえずは解決?しました。 結論としては・・・ add,editloginで送るときのid,username,passwordとかがずれてました。 bakeを使ったから間違えた?ということで、今回はbakeのせいにして、これからは使いません。 本当お世話になりました☆ またよろしくお願いします!!
あほや 自分のミスをフレームワークの所為にして 便利さを犠牲にする。愚の骨頂
149 :
140です。 :2009/09/23(水) 21:23:50 ID:ux1l4fZg
>>146 さん
ありがとうございます。
それも原因のひとつでした。
パスワードはaddアクションから登録したハッシュ化されたものでないとログインできなかったす。
(テーブルに打ち込んだハッシュ化してないパスワードはだめでした。)
ただ、まあそれはいいとして、編集するときにパスワード欄が
●●●●●●●●●●●●●●●●●●●●●●●みたいに
めっちゃ長くなってて、ちょっとださいんだけど、これくらいは目つぶるべきですかね?
入力されたものと同じ文字数で●●●●●て出せるんですか?
いろんな人が通ってる道だ ググレかす あとそれで編集実行したらログインできなくなるぞ
151 :
140です。 :2009/09/23(水) 21:29:51 ID:ux1l4fZg
148さん ども! おれはcakephp使わないって言ってないっすよ? つかこれからも素人なりにガンバりますよ! ただ! bakeは使わないかも! bakeって最初がちょっと楽できるだけなんじゃないすか? それとも本当の便利さにおれが気づいてないんすか?
152 :
140っす :2009/09/23(水) 21:34:17 ID:ux1l4fZg
150さん どーもご親切にあざーっす! ちょっとイラっとしたけどおっしゃるとおり!!
bakeがなきゃ俺はrailsに逃げるね 全てのMVCを一から手書きするのはおれはやだ 骨組作ってもらってから編集していきたいね。 ま、好きにすればいいけどね 重大なのはそれより、 ろくに調べもせずに 「bakeがおかしいからbake使わないでいーや」 って心構えでコーディングなんかしてるとどのみち後々痛い目見る 問題を切り分け 一つ一つつぶし 同じ過ちを繰り返さない プログラマとして最低限必要でしょ
155 :
140っす :2009/09/23(水) 21:49:09 ID:ux1l4fZg
感謝っす! 考え甘かったすわ。 肝に命じて進めていきますわ。
bakeはbakaしか使わないって言うしな
bakeとハサミは使いよう。
bakeに刃物
159 :
nobodyさん :2009/09/24(木) 03:11:55 ID:L477CAe5
helperの中から他のhelperを呼び出すにはどうしたらいいですか?
>>159 $helpersにHelperを指定して $this->Html->link のように使う
>>122 Cake3では拡張子はphpになるみたい
bakaもbakeも使いよう。
遅いうえにつまらん もうくんな
ヘルパーが関数ではなくオブジェクトなのは Cakeの特徴の一つですが 複数のクラスの中で同じヘルパーを使う時、 ヘルパーのインスタンスは同じなのでしょうか? それとも、インスタンスが毎回作られるのでしょうか?
Cake3は、Cake1.0→Cake1.2の時の変更より激しい変更があるのでしょうか?
そらあるだろ その前にCake2も今つくってんだし
>>165 ってどういうこと?Viewは一個だからHelper読み込みは1個ですよね通常。
Modelとかで強引に読み込んだらnewするわけだからインスタンス作るわけですよね
ちょっとわからんです。
helper内で他のhelperを使ったりしますよね あとelementsやlayoutsごとにviewインスタンスは生成されるのでは? そのように共有されるものなので helperを一元的に管理するファクトリのようなものがあって 同じ種類のhelperを複数作らないようにしてるのかなーと思ったのです
modelと関係ないフォームのバリデーションはどうしたらいいですか?
var $useTable = false; なモデル用意してバリデーションルール書けばいい
173 :
nobodyさん :2009/09/26(土) 05:31:21 ID:Z4zintKr
modelのvalidates()で得たエラーメッセージって 自分でinvalidFields()で取得して、viewに渡さないといけないのでしょうか?
formヘルパー
MVCのModelは通常ビジネスロジックを記述するものだと思うのですが、 CakePHPではModelはORマッピングの為にDBのテーブルを クラスで表現したものとしていますよね。 Modelっていったい何???
うん、過去ログでもよんでろ低能
> CakePHPではModelはORマッピングの為にDBのテーブルを > クラスで表現したものとしていますよね。 いいえ違います。ビジネスロジックを記述するモデルの 開発を加速する為に、DBのテーブルに対応するような 規約になっているだけです。 それが嫌なら、テーブルと関係ないModelを作ることも可能です。 が、レールの上に乗っかった方が速い開発が出来るでしょう。
モデルの中でページャー使えないん? count()しないでSQL_CALC_FOUND_ROWS使ってくれないん?
うん、過去ログでもよんでろ低能
cakeで最終的にどのようなSQL文が実行されたのか ログに保存したいのですが、方法があれば教えてください。
DebugKit使いなよ それがいやなら自分で$this->log();しまくれば
>うん、過去ログでもよんでろ低能 大した指摘もできねー能無しがほざくな。
組み込みバリデーションルールの デフォルトのエラーメッセージを設定したいのですが どうやれば実現できますか?
184 :
nobodyさん :2009/09/27(日) 04:39:53 ID:NXHVEZh/
paginatorってurlでlimit指定するとコントローラーのオプション指定を無視して urlで指定したほうが有効になっちゃうんだけど これってまずいんじゃないかと思うんだけどどうなんだろう?
>>183 うん、過去ログでもよんでろ低能
$validate = array(
'ruleName' => array(
)
);
とちゅうでかきこんじまった ○モデルのバリデーションルールで定義 var $validate = array( 'fieldName' => array( 'ruleName' => array( 'rule' => 'notEmpty', 'message' => 'からっぽですぜ' ) ), ); ○viewで上書き <?php echo $form->input('fieldName', array( 'error' => array( 'ruleName' => 'からっぽじゃん!!' ) )); ?>
>>185-187 ありがとうございます。
ただエラーメッセージの指定がしたいのではなくて
デフォルトのエラーメッセージの指定がしたいんです。
同じルールを設定するのに、毎回同じエラーメッセージを指定するのはダサいので・・
>>180 フォーラムの情報を参考に作りました。
もっとスマートにやっている方がいたら教えてください。
<?php
uses ('model' . DS . 'datasources' . DS . 'dbo' . DS . 'dbo_mysql');
class DboMysqlEx extends DboMysql {
var $exeQueryCount = 0;
function execute($sql) {
$return = parent::execute($sql);
$GLOBALS["sqlLog"][++$this->exeQueryCount] = array(
"query" => $sql,
"error" => $this->error,
"affected" => $this->affected,
"numRows" => $this->numRows,
"took" => $this->took
);
$GLOBALS["lastSql"] = array(
"nr" => $this->exeQueryCount,
"query" => $sql,
"error" => $this->error,
"affected" => $this->affected,
"numRows" => $this->numRows,
"took" => $this->took
);
return $return;
}
}
?>
Paginatorで1ページあたりの表示数をコントローラの$this->paginateで指定してたのですが、 $this->paginateでの指定よりもurlで/limit:5000と指定したほうが優先されてしまうのは仕様なんでしょうか? 結局$this->paginateでの指定を諦めて$this->passedArgs['limit']で指定しているのですがみなさんはどうしてますか?
193 :
192 :2009/09/30(水) 22:37:38 ID:???
>>191 自分の場合は$this->paginateの第三引数でホワイトリストを指定しています。
URLのパラメータでlimitがいくらでも変えられてしまうと言うのは気持ちが悪いので。
>>193 そんな指定が出来たんですね・・・わからなかった俺涙目orz
レスありがとうございます
>>189 阿呆か
毎月給料遅配ばかりならその言い草も成り立つかもしらんが
きちんと給料を頂戴しているんだろ?残業代が出ないだけだろ?
何で残業代が出ないか胸に手を当てて考えろよ。経営者の期待に応える仕事ができたのか?
野球選手が契約更改で
「確かに去年は打率1割5分、ヒットより併殺打のほうが多く、守っては3試合に1回は失策をしましたが、
練習では毎日一番早くから一番遅くまでバットを振っていました。
年俸2割アップを要求します。」
なんて言えば嗤われるだけだろ。
野球という特殊技能を持ち、ある程度お客様を選べる立場の選手でもそうなのに、
いくらでも代わりがいる普通の社員が仕事もせずに遅くまで会社に残っていたから残業代を払えって?
一つ教えてやろう、世間ではお前みたいな奴を
糸合 米斗 シ尼 木奉
と言うのだよ。
でも、やっぱり残業代欲しいよねw
cronでshellを動かすと、 Warning: mysql_connect(): Can't connect to local MySQL server って出ちゃうんだけど、ウチの環境だけかなぁ。。 ターミナルからの直打ちはちゃんと動く。
一覧で次へ前へではなく、 個別記事(action/view/id)なページで次の記事、前の記事ってどうやって実装するんですか?
>>200 find('neighbors')でいいんじゃないの? スペル覚えられねえけど。
saveAllのfieldListってモデルの指定はできないのん? fieldList => array('User.username', 'Profile.name') ↑これだとダメだった
authコンポーネントで $this->Auth->allow('index','show'); とやれば index と show はログインしていなくても実行できますよね。 逆に基本全て実行できて、ログインしないと実行できないものを指定するってできるの?
>>201 あーそれですね
paginateで用意されてると思ってその辺ばかり見てました。
あざっす!!
>>204 ありがとうございます。*で指定して deny 使えば良いんですね。
authコンポーネントって コントローラーをまたぐと認証が切れますけど、これは仕様なんですか?
全部のコントローラー、モデルをまたいでも認証を継続したままにしたいんですが、
方法はありますでしょうか。
できる おまえもう死んでこい 調べもしないで全部人に聞くのかよ マニュアル読んだほうが100倍効率いいぞ
>>207 ありがとうございます。もう一度調べてみます。
209 :
192 :2009/10/02(金) 22:05:08 ID:???
>>209 アソシエーションをきっちり書いてないとうまく行かないから
ネーミングルール無視して作ってるときとか気をつけてね
>>210 そうですね、
>>209 のような簡素な書き方だと命名規則を守る必要がありそうです。
逆に>192の例だと、どちらも命名規則を守っているのに、(一応?)joinTableやらforeignKeyの設定しているようです。
コントローラ内で debug($this->Session->id,false,true); とセッションIDを表示しようとしているのですが、空です。 View内で echo $session->id(); と書くとキチンとIDは表示されます。 コントローラ内でセッションIDを取得するにはどうしたらいいのでしょうか??
213 :
212 :2009/10/03(土) 12:39:27 ID:???
コントローラ内でSessionHelper呼び出せばいいだけの話だけど、 できればHelper使わず取得したいのです
$_SESSION
>>214 ありがとうございました。
session_id()で取ればいいですね。
普通のPHPの処理で考えればよかったですね。
216 :
nobodyさん :2009/10/03(土) 19:15:55 ID:qJkUBPIa
bakeについての質問です。 アソーシエーションを設定する場合、同じ項目で設定を聞かれる場合、 両立はできるんですか?またする意義はどういう場合にあるんですか? たとえば・・・ user hasmany friend?(y/n) →yを選択 user hasone friend?(y/n) さっきhasmany選択したんだけど・・・hasoneを選択したらどうなるのか? なんか意味あるのか?
やってみりゃいいじゃん hasOneなのかManyなのかは自動で判断できないから 作ってる本人にどっち?って聞いてるんでしょ
ホントさやってみりゃいいじゃん。 こんなのパッパと自分でやって比較すればいいじゃねえか。 こういう焦れったいやつっているよなあ。
>>212 Session->id()
だととれないか?
CakeMaturi参加する人いる?
>>220 行きたいけど、金を払ってまでというのはな…
無料の勉強会とかの方がいいや
ケーキ食い放題?
たかいな・・・
けど行ったらmasa-pに会えるんだぜ
本気でちょっと高い・・
ダイエット中なんだ 虫歯になるの嫌だし
bakerたちのCakeが食べ放題なのか。バイキング形式かな。
つーか滑ってるよキミたち
Matsuriの告知文、日本人が英文化したの? 優しくていいけど、社内告知みたいで少し寂しいね ところで、本当に高いね。 カンファレンスは、英語オンリーじゃないらしいけど、英語率高そう! チケット高いは、英語率高いでは、数少ない友人誘っても誰も連れ立って来てくれなそう... 行きたいけど、怖いから行けない
ツアコンが連れ立ってパックツアーみたいなの企画したらいけそうだな
232 :
nobodyさん :2009/10/07(水) 18:14:48 ID:XPDBt2vk
DB保存のsave時の質問です。 INSERTかUPDATEかは、主キーで判断して、変更したい場合はモデルの$primaryKeyを変更すればいいみたいですが、 UPDATEにする場合の条件を複数にしたい場合、 例えばメールアドレスとパスワードが一致したらUPDATEで、一致しなければINSERTみたいな処理にしたいんですが これは可能でしょうか? できるのであればご教授よろしくお願いします。
その要求にかなう便利なのは用意されてないから 自前でやればいい
>>233 ありがとうございます。
自前でやってみます。
1.2.5 $javascript->codeBlock の引数が空だと止まるw
>>235 第一引数が空ってありえなくね?
もちろんバグだろうが
俺も空で読んだことないんだけど 空で呼び出すとなにかいいことがあったりするのかな?
>>237 似たようなviewをたくさん作るときに雛形を用意していて空で書いてある。
javascriptがいらなくても残ったまま。
1.2.3の時は問題無かったけど最近1.2.5にしたらNG。
エラーを吐くわけではないので悩んだ。
ん?運用前の開発段階に楽なようにってことか なるほどねー
>>238 止まる ・・・ たまにあるよね。
javascriptだけに限らず。
エラーも吐かず真っ白。
ソースを見ても <title> ほげほえ 以降は真っ白。
デバッグに時間かかるね。
mediaプラグインで ファイルをアップロードしたい だけの場合ってどうすればいいんですか? 他のモデルにくっつけてアップする以外ないんですかね。 ソース見てもよくわからず。。 これができれば携帯からもアップロード処理できるのにぃーーー。
どゆこと? 携帯はメールでアップしかできないんじゃないの?
>>242 そうですね。携帯はメールでしかアップロードできません。
例えば一般的なフォームで
user テーブルに データを登録するときにファイルを一緒にアップロード という処理は
echo $this->element('attachments', array('plugin' => 'media')); をviewに読み込めば
できるんですが
それを
ファイルのアップロードのみ したい場合はどうすればいいのかなと思いまして。
他のモデルに依存せず、
ファイルアップロードのみのフォームを作ってデータを登録させたいのです。
>>243 付属のattachmentモデルをそのまま使うのなら
attachmentコントローラーでも作ってsaveすればいいんじゃないすかね?
>>244 それがうまくできないんですよね。
user コントローラーに attachmentモデル を直接読み込ませているんですけど。
で、attachmentモデルにsaveかけても登録できないので。
まだ時間がなくてやれてませんけど、
なので userviewのエディット画面に id を hidden で渡してアップロードフォームを作ってみようかなと
思っています。
にしてもmediapluginは情報が少ないですよね。
僕はいいライブラリだと思ってるんですが・・・。
あまり評価されていないんですかね。
自宅サーバにCakePHP1.2、PHP5.2.9という環境で開発しているのですが 日本語が文字化けしていて困っています 文字コードは全てUTF-8に統一しており、XML宣言やMETAタグの中はUTF-8と ちゃんと記述されているのですが、ブラウザ側でEUC-JPに解釈されてしまって 文字化けしてしまいます。ブラウザ側で手動でUTF-8に指定するとちゃんと見れます。 viewsの(例えば)index.ctpにHTMLとして日本語を書いても化けてしまいます 何が原因なのか教えていただければありがたいです
わからんけどConfigure::write('App.encoding')は? それから、ブラウザ何個か試してどれでもそうなる?
>>246 database.phpにencoding=utf8を入れた?
250 :
nobodyさん :2009/10/14(水) 02:10:30 ID:hSMBoxY0
>>246 出力自体は正しくてブラウザの認識が間違ってるから、たぶんtitleタグの後に文字コード指定してるんじゃね?
apacheの設定
アソシエーションされたモデルのビヘイビアはコールバック呼ばれない これは糞仕様としか言いようがない。
ちゃんとティッシュとハンカチ持った?
たまにトイレットペーパーが有料の公衆あるよね
>>254 外で100円で流せるティッシュ買うんじゃなくて?
新宿東口改札のは有料だな 入ったことないかどういうシステム化は知らんけど
おまえら、ウ●コの話にマジレスしないでいいよw
cakephp 1.1 と cakephp 1.2 って最初っからプログラムを作り直しているのかな? もちろん使える部分はそのまま使うんだろうけど。 どうなんでしょ。教えて下さい。
cakephp フレームワーク自体のこと? cake1.1の上で作ったアプリを1.2にアップグレードする際の話? どっちにしてもフルスクラッチはない
1.1.x->1.2.xは拡張でしょ 2.xはほとんど一からじゃない?
>>259 cakephp フレームワーク自体のこと です。
>>260 拡張なんですかー。
ありがとうございました!
Cake2.xを業務とかに使っている方っていますか?
います
僕の会社で2サイトほど構築しました^w^
業務レベルの完成度なのか? ちょっと試してみたいな
>>266 なにを持って業務レベルと言うのか教えていただきたい。
煽りじゃなく今後の参考として。
>>267 266じゃないけど少なくともcakephp1.1は業務レベルだとは思わなかった。
理由・重すぎ。
>>267 定義づけしろと言われると難しいな
セキュリティや負荷問題などに明るい人が、「cake2を導入して開発することによってcake1よりも
開発効率が上がったり運用コストが下がるなどのメリットがある」と判断するレベルということなんだろうか。
俺はセキュリティとか負荷には弱いので他人の意見に頼るしかないんだけど。
セキュアである程度軽い、大きな仕様変更が予測されない、というのが業務レベルと呼べる必須条件な気がする。
小規模なものでもFW使っているのですか? ファイルがたくさん増えて逆に面倒かと思うのですが。 pearとかPECLとか何を使うか習得すべきかわからなくなってきた
>>271 ファイルはたくさんだけど、どうせいじるのはMVCくらいだし。
今は簡単なツールでさえCake使ってるわ。
1から書く手間を考えたら、Cakeの初期設定やった方が早いし簡単。
>>271 ああ、小規模なものは直接自分でちゃちゃっと書いた方がいいことがよくある。
でも時間に余裕があるなら練習としてCakeでやってみるのも悪くない。
274 :
271 :2009/10/20(火) 00:09:35 ID:???
作っていてDB接続はなにでするべきかなどで悩んでしまいます。 意外と触るファイルは多くないのですか。 できればライブラリなどは使用したくないのでFWで対応できるなら理想的です。 cakeやってみたいと思います。
275 :
nobodyさん :2009/10/20(火) 21:43:59 ID:RAVGwnC1
htmlヘルパーのlink()について質問です。 今「cakephpによる実践webアプリケーション開発」で勉強してるんですけど、 <li><?php echo $html->link(__('Weeky', true), array('controller'=>'schedules', 'action'=>'index', 'id'=>'week', date('Y/m/d',$times['from_time'])));?></li> <li><?php echo $html->link(__('Monthly', true), array('controller'=>'schedules', 'action'=>'index', 'id'=>'month', date('Y/m/d',$times['from_time'])));?></li> <li><?php echo $html->link(__('Daily', true), array('controller'=>'schedules', 'action'=>'index', 'id'=>'day', date('Y/m/d',$times['from_time'])));?></li> っつーところがあるんですが、 link()のarrayの controller=>・・・ action=>・・・ があるのはいいんですけど、 id=>・・・ って何の為にあるんですか? こういう場合、どこにid=の指定先があるんですか? 色々ぐぐったりしてもid指定がそもそもわからなかったので、どなたか教えてください。
277 :
276 :2009/10/20(火) 22:30:12 ID:???
ん?つーかID?? ごめん、 array( 'controller'=>':controller', 'action'=>':action', 'day' ) で普通渡すような。。。
idもOKでは?
279 :
nobodyさん :2009/10/21(水) 16:53:30 ID:+lxCFMv1
>>275 せめて何ページ目か書いてくれないと、手元にある本でもどこの話なのかわからん
あとその本、入門としてはレベル高いから他の本の方がいいかもよ
280 :
275 :2009/10/21(水) 19:52:23 ID:IsADHLgB
おまえは何を言っているんだ?
>>280 見てみた、確かに書いてあるね
>>275 の状態になるのはp57みたいだけど
schedules controllerには
functino index ($scope = 'week')
って書いてあるし、
>>277 のやり方の法が一般的だろうし、なんでidとして渡してるのかわからん
その後idとして利用している様子もないし
何がやりたいのかわからんけど、とりあえずidの存在は気にしなくていいと思うぞ
というかid=で渡したことなんてないな
bakeが吐き出すのも
>>277 だったと思う。
渡せるのか?
284 :
275 :2009/10/22(木) 02:01:22 ID:cfsY/jT4
>>282 ,283
むちゃくちゃ気になってたんで助かりました!
ほんまありがとうございました★
hasManyなデータをbeforeSaveで作っても保存出来ないんだね。 一日ハマった。
before系の整形をするといくつかのメソッドで不具合出ることありますね countとか
卑怯
1.3って1.2から相当変わるの? 1.1から1.2ほどの変化はないと思っていいのかな クエリーキャッシュに期待
Cakeオワタ。。。
なにかあったん?
update時に$this->data['model']['password'] が暗号化されない。どうすればいいの?
AuthComponentでも使っているの?
>>292 使ってます.コードはこんな感じです.
userコントローラ
function edit() {
$this->User->id = $this->Auth->user('id');
if(empty($this->data)) {
} else {
$this->User->set($this->data);
if($this->User->validates()) {
if($this->User->save($this->data, true, array('email', 'password')))
$this->flash('modified', '/');
}
}
}
AuthComponent の hashPasswords メソッドを見る限りでは、 $this->data['model']['password'] と $this->data['model']['username'] に値がセットされていないと暗号化されないみたいね
そそ 自前でAuth->hashPasswordだったけか?を通す必要がある
>>294 ,295
$this->data[?User?][?username?], $this->data[?User?][?password?]
どちらも設定したけど暗号化されない。どうすればいいんだろう。
function edit() {
$this->User->id = $this->Auth->user(?id?);
if(empty($this->data)) {
} else {
$this->User->set($this->data);
if($this->User->validates()) {
$this->data[?User?][?username?] = $this->Auth->user(?username?);
$this->Auth->hashPasswords($this->data);
pr($this->data);
if($this->User->save($this->data, true, array(?email?, ?password?)))
$this->flash(?modified?, ?/?);
}
}
}
>>294 , 295, 297
ありがとう。解決しました
function edit() {
$this->User->id = $this->Auth->user('id');
if(empty($this->data)) {
} else {
$this->data['User']['password'] = $this->Auth->password($this->data['User']['password']);
$this->User->set($this->data);
if($this->User->validates()) {
if($this->User->save($this->data, true, array('email', 'password')))
$this->flash('modified', '/');
}
}
}
ベーシック認証をかけたくてSecurityコンポーネントを使ってるんですが function beforeFilter() { $this->Security->loginOptions = array('type'=>'basic'); $this->Security->loginUsers = array('id'=>'pass'); $this->Security->requireLogin('index'); parent :: beforeFilter(); } を書いてるんだけど、ベーシック認証にはなって、IDとパスワードを入れても何度も何度も 入力させられます。ちなみに、parent :: beforeFilter();を消しても同様に入力させられます。 どうしたらよいでしょうか。教えて下さい。お願いします。
301 ちなみに、 loginUsers で指定した id と pass を入力しても認証していないようです。 認証をキャンセルすると $this->Security->blackHoleCallback = 'securityError'; に移動します。 そのまま設定した id と pass を入力してもダメなのでしょうか。
そのbeforeFilterに書いた内容消したらちゃんと表示されるの?
>>303 はい。表示されます。
ちなみにさくらサーバーを利用しています。
コア開発メンバー数人がCakeから撤退して Cake3をフォークするなんていうドラマチック展開が起こっています。CakeどうなるのCake
Cake3改めLithiumの公開マダー?
>>304 さくらはPHPはモジュール版とCGI版があるけどどっち使ってる?
CGI版だと、動作しないよ。たしかphp的な仕様で。
>>309 ありがとうございました!見てみたら CGIで動作していました。
他の方法を考えてみます。
ご親切ににありがとうございました。
おつかれさまですー 困ってます助けて・・・ ショップとジャンルがあって 1つのショップは複数のジャンルが持てて、 ジャンルも複数のショップがもてるので hamtmに結んでいるんですが、 ジャンルでショップを絞込みすると $this->ショップ->ジャンル->findAllbyジャンルID($ジャンルID); とすると、ジャンルと、ジャンルとショップの結合のデータしか入ってきません。 ショップIDまでは取れているのに、ショップIDの内容も取るには なにが足りないの?(;_;わかんない・・・
$this->Shop->find('all', array('Genre' => array('conditions' => array('Genre.id' => $genre_id)))); でやってみては?
>>312 おお!
Shop->Genre->
ではなくて
条件で指定するのですね!!
ありがとうございます!
それにジャンルのつづりがすごい!
やっぱり2chねらー尊敬!
??
debug levelを0にしてサイトを動かしたいのですが、 debug情報をlogに吐かせたいです。$this->log等 方法を知っている方、教えてください。
ちょっと相談よいですか? 公開されているウェブサービスを利用するために、外部のXMLを $xml = new XML($req); のように取得しているのですが 相手側のサーバーで503エラーなどが発生すると、404コードを吐いて止まってしまうようです 503コードを吐くようにしたいのですが XMLクラスが継承しているクラスが多くて、手を入れるにも大変そうです なにか良い方法ってありますか? エラー時はXMLクラスが false などを返してくれればよいのですが…
>>317 書いている意味がわからんが、相手サーバーのXMLを読み込んで、自分のページで表示する意味?
だったら、毎回取得せず、キャッシングするのが常識じゃないのか
>>318 すみません
503エラーではなく、自分のコードにミスがありました
ちなみにキャッシングはもちろんしています
でも、たまたまキャッシュ更新のために取得する際に、
相手側のサーバーが落ちている場合もないとは言えませんよね
そういう場合はどうなるのでしょうか?
一応、問題は解決しましたので、もし既に調査済みの方がいれば、
教えていただけるとありがたいです
浪速のど根性ガエル登場
>>320 おそらくdebugフラグが0で、
debug情報をlogに吐かせたい、
とエスパー
やり方はオイラも知らんでヤンス
logの件はこのスレだったか前スレだったかで出てたと思う。
求人のマッチングサイトを作る場合 ・一般ユーザー ・企業 の2種類のユーザーがいる場合のテーブル設計ってどうする? 今は User テーブルに type 0 or 1 でそのほかに Normal (一般ユーザー) Kigyou (企業) って分けてるんだけど。どうするのがベスト?
知るか
>>324 同一のモデルで良い
あとはGroupマスタ作るなりして権限管理するとか
ACL使って
>>326 ご親切にありがとうございます。
ここでACLが出てくるのかー。
今まで聞いたことはあったけど難しそうだったので
見てもなかった。
一度勉強してみます。ありがとう。
328 :
nobodyさん :2009/10/28(水) 02:05:14 ID:z9D0rCNP
でもそれだと、一般ユーザと企業のアカウント情報が一つのモデルに混在して大変じゃね? 更に例えば、一般ユーザも無料と有料で機能を分けるとかになった場合とか。 個人的なアイデアなんですが、ログイン用IDなどの共通項となるアカウント情報はUserモデルで管理して、一般ユーザ・企業はフラグフィールドで識別。 共通ではない、プロフィール情報などはUserProfile. CompanyProfileなど別のフィールド群のモデルに管理させるとか。
T字型ですな
>>324 英語とローマ字混ぜるなよ
気持ち悪いだろ?
みなさんありがとうございます。
>>332 翻訳して勉強してみます。ありがとうございます。
明日はCakeMatsuri
コードイグナイタと比べてどうですか?
コードイイカンジ
だいぶ悩みましたがうまくいかないので皆さんにお聞きします。 社員管理システムみたいなやつの検索画面を作ってます。 検索結果をpaginatorを使って表示していて、$paginator->sort()などでソートしたりできます。 でも、その際に検索条件を覚えていなければならないので、 $paginator->options(aa('url', $condition)); としてURLにパラメータで渡してます。 これで普通の項目はうまくいくのですが、問題は条件が日付のとき、 $form->input()でタイプをdateにして入力欄を作っていると、 各項目が配列になっていて(birthday['year']、['month']、['day']みたく) 単純に上記の方法で渡すと、urlに「birthday:Array」などとなってうまく渡せません。 このような場合はどうやってパラメータを引き継げばいいのでしょうか。
2009-10-30 にすればいいじゃん たしか日付はその配列形式でも動くし ハイフンつなぎでも受け取ってくれたはず
339 :
337 :2009/10/30(金) 16:01:21 ID:???
ありがとうございます。 birthday:2009-10-30 などとurlがなるようにしてみましたが、リンクをクリックすると Fatal error: Cannot use string offset as an array in (略)../libs/model/model.php on line 843 といったエラーになります。
あれうけとってくれないんだ つーかよ だったらよ ぶんかつすりゃいいだけだろーがよ全部聞くの? $bunkatsu = explode('-', $hiduke); $hidukedayooooooo = array( 'year'=>$bunkatsu[0], 'month'=>$bunkatsu[1], 'day'=>$bunkatsu[2], );
341 :
337 :2009/10/30(金) 16:21:40 ID:???
model.php内のdeconstruct()内に教えていただいた処理を入れることでうまくいきました。 何度もありがとうございました。
ええええええええええええええええええええええええええええええ 普通そこいじらねーよw
>>339-342 この流れはまるで漫才。
二人そろってM1でるといいかも。
ちょっと笑った。
いちにちめおわり きたく
そんなことより、WEB案件は激減してるな もうフリーでは食っていけないだろうな、優秀な営業マンとペア組まない限り
今までが誰でも儲けられたんでしょ。 これからはスキルの高い奴しか生き残れない。
もうWEBシステム開発だけで、くっていける時代は終わった 自分でコンテンツ運営しての2本柱での収入がないとダメだ
そっちの柱をちゃんと柱にするのは大変そうだな
>>348 同感。俺は3年前に独立したんだけど、それからずっと自分のコンテンツ運営で食ってる。
例えばmixiの全くマネをすれば一人食えるくらいは稼げる。
自分の運営で食えると、人のサイトを作る気しなくなるよ。
でもcakephpの開発だったらいけそうじゃない?
たまに外注にだしちゃおーかって思うけど、そういうときってcakephpのコミュニティで活躍してる人に
お願いしたくなるよね。
cakephpでもなんでもだが 案件がおそろしいほど激減&低単価になってる 各マッチングサイトみても、そんなかんじだし 同業者にお仕事下さいと営業しても、ほど仕事はない どこも案件を取るのに必死なんじゃないかと思う もしくは、今までがバブルすぎたのか こんなもんじゃなく、まだまだ案件がなくなっていくのか
おれは山ほどあるが
おそろらくWEB案件は2005年がピークで少しずつ減っていき 今年から急降下している
findjobも求人募集件数がへってる 最近、旬なのがFlashできる人間だが 人材欲しいという需要はあるが、php技術者よりは安く雇おうとする傾向にあるから 今が旬のFlashができたとしても、食えるとも限らない
お祭り終了 乙
356 :
nobodyさん :2009/11/02(月) 10:08:45 ID:FEV+yFlP
>>348 >>350 自分のコンテンツ運営って、もうちょっと掘り下げて解説してもらえませんか?
例えばどういったタイプのコンテンツをやって、どのような形で収入を得てるのかなど参考にしたいです。
すれちがい死ね
358 :
nobodyさん :2009/11/02(月) 10:46:21 ID:8b3geUjN
仕事の回ってこないフリーはアフィリエイトでもやって死んでろ どうせお前らアフィリえいたーレベルなんだから だいたいここはcakeのスレ。運営とか営業とかよそでやってろ低能 そんなことも切り分けれないから仕事もないんだよ
>>356 例えばインターネッツ上の全ての情報を集めて一瞬にして欲しい情報を
検索できるサイトを作って、そこにランク式の広告を載せて広告収入を得るとかどう?
このスレ、死ね死ね団がいる。
たいてい愚痴のたぐいは、自分に言い聞かせてるだけだから気にするな
フリーだと営業もしないといけないから、コーディングだけに集中できないんだよな どこの会社も自分とこの案件とるので手一杯て感じで、下請けの仕事さえもない状況だ WEB開発だけじゃ、まじで食ってはいけない 今、食えてる奴は、今のうちに何か収入になる柱をひとつ用意した方がいいぞ
>>363 Authコンポーネント使えばいいよ
var $component = array('Auth');
こんな感じ
CakePHP 1.3 alpha キタ━━━━━━(゚∀゚)━━━━━━ !!
自分で確認しろクズが
高速開発CakePHPの恩恵をなかなかうけられない CakePHPじゃない、しかも安い仕事ばっかりだ でもCake開発者には感謝!感謝!
>>369 Cakeのようなフレームワークを使わない案件の場合は、どうやって開発しているんですか?
素で開発
wberoot/js/以下にExtJSを配置して レイアウトでEXTJSを読み込ませて実行すると syntax error <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...TR/xhtml1/DTD/xhtml1-transitional.dtd"> ってなるんですが分かる方いいますか
mixiコミュニティで解決してもらえゴミクズ
CakePHP1.2.x PHP4対応 CakePHP1.3 PHP4対応 CakePHP2.0 PHP5.2以降対応 Cake3改めLithium PHP5.3以降対応 かな。まとめると
LithiumはもはやCakePHPとは関係ないものだと思っている
分家と考えれば無関係とも言えまい
perl飽きたからphp弄り始めて 車輪の再開発はperlで散々やって満足したからフレームワーク使ってみようかなーと思って cakephpに手を出したんだけど dbのテーブル設計とかにまで制約というか規約があると思わなかったorz wikiみたいにユーザーにデータを編集してもらうことを考えて、ほぼ全てのテーブルが ID+編集時刻で主キーにするような設計しちゃったんだけど これはやっぱり止めた方がいいと言うか、チュートリアル読み終わってからdb設計やり直したほうがいいんでしょうか(ヽ'ω`)
なにいってるかわからんが 規約を無視したときの弊害を理解しないでそれを行うのは危なすぎる
変更しないほうがいい。
個人で地味に使うなら問題無し。 仕事で納品するなら駄目。
どの辺りが問題になってくるんですかね?>主キー変更
フレームワークの標準から外れたことをしようとするな。 いいから主キーにはidを使え。
規約を破ったらフレームワークを使う意味がない。
386 :
378 :2009/11/14(土) 08:57:02 ID:???
ご意見ありがとうございます。 チュートリアルまで終わった結果、db設計から考え直すことにしましたorz ところで、joinテーブルを使ったお勧めのチュートリアル or サンプルってありますでしょうか。
思想的にjoinテーブル使うのはは邪道だと思うんだけど
>>387 例えば編曲家検索サイトってのがあったとする
同じ曲を、バージョン違いで別々のミュージシャンが編曲することは良くあるという前提で
人TBL: [ID]、[編曲家名]、[]、[]、、
曲TBL: [ID]、[曲名]、[]、[]、、
編曲家で検索するとその人の曲一覧が出て、
曲で検索するとその曲に携わった編曲家一覧が出るとかいうのを実現したい場合、
曲人TBL作るしか無い気が
>>389 joinテーブル=HABTM だよね…?
もしかして
>>386 はSQL直接書きたいって言ってるのか
え? 女陰?
ほと について語り合うホットなスレがあると聞いて
joinテーブルってテンポラリテーブルのことか 今までずっと勘違いしてた… 多対多で表結合するときに必要な中間テーブル的な物を指すのかと思ってた
アホな質問かも知れませんが教えて下さい。 例えば、会員登録する処理を書く際に、 1入力画面→2入力確認画面→3登録完了という一連の流れを行う場合、 ・1/2/3の処理をまとめて一つのアクション内で処理 ・それとも別々のアクション名にして処理 どちらのほうがいいのでしょうか?
>>394 俺なら一緒にしちゃうなあ。
1と2はテンプレート切り替えるだけだし、3はアクション分けるほどの処理じゃないし。
少なくとも1と3は一緒にしないとバリデーションがうまく動かないというか、設定がめんどくさい気がする。
>>394 395に同意。
一つのアクション内で
・確認画面を render
・登録完了時 $this->flash だな。
時と場合によるだろ かたることじゃねーよ
398 :
394 :2009/11/16(月) 22:29:14 ID:???
基本は一つにまとめたほうがよそうですね。 参考になります。皆さんどうも有難うございます。
再利用性が高くなるし、修正を入れるときも楽だから 処理を小分けしてアクション(メソッド)をつくるんだが、 他の開発メンバーは一つのアクション内にif文で分けたりすることが多い。 正直やりにくい
修正が入る場合、結局if文の分岐全てに影響がある場合が多いからじゃね 再利用性が生きる可能性の問題と言うか 手間に見合った結果が望めるかどうかって意味では、生産性の問題だな
401 :
nobodyさん :2009/11/17(火) 19:17:46 ID:MEFZJKPu
親切じゃない人ばっかりみたいだな。まぁその通りだけど。
HABTMの削除でハマった。 リンクテーブルって自動で消せないの? unbindして個別にdeleteしたわ
質問です。
[tablea HABTM tableb]で、下記を実現したい場合
■
ttp://www.ex.net/tableas/index (一覧)
tableaのidとtitleだけ表示できれば良い
■
ttp://www.ex.net/tableas/view (詳細表示)
tableaの該当データに関連する、tablebのデータも表示したい
規約通りにテーブル作った上で、tableaのmodelに
var $hasAndBelongsToMany = array( 'Tableb' );
と書く事でデータの連動表示は実現できたんですが、
modelで定義してるために、indexの時にまで必要の無いtablebのデータを引っ張ってきてしまっています。
これってすごく無駄に思えるんですが、改善の余地はあるんでしょうか。
例えばview(詳細表示)用に別名でmodelを作れば不満点は解決すると思うんですが、
そうするとテーブル名(s)≠モデル名になり、規約から外れてしまう?気がして、悩んでます。
そんな基本的なこと人に聞くの? マニュアル読まないの?目ないの? recursiveで検索
>例えばview(詳細表示)用に別名でmodelを作れば 完全にキチガイ
>>401 最後にスラッシュをつけて終わらせるでググってみるといいよ。
パスがおかしくなってるんだよ。
>>402 何が言いたいの?
DBのビューのモデル作るときに主キーどうしてます?
>>408 要点まとめてから質問しろカス
なにでなにをいつどうしたいのか、現在どうなってどう困ってるか書け
>>403 中間テーブルはDB設計ミスってなければちゃんときえるが
>>405 ありがとうございます。
出直してきます。
412 :
nobodyさん :2009/11/18(水) 01:19:21 ID:ju/+mBFJ
413 :
nobodyさん :2009/11/18(水) 01:24:03 ID:ju/+mBFJ
ぷ
415 :
nobodyさん :2009/11/18(水) 08:11:06 ID:zky0t9H9
GETで渡したパラメータを取得する時は 直接$_GETを参照するのですか?
>>415 つdebug($this->params)
あとdebug_kit入れておくと勉強になると思う
>>410 そう言われて見直した。
ミスってたorz
というより、勘違いしてた。
idって昔から必要だったっけ・・・
418 :
410 :2009/11/18(水) 11:31:21 ID:???
>>417 そーそーそこ
たしか昔マニュアルかなんかみながら作った時はIDいらないと思ってたんだけど、
俺も消えてなくて設計見直して治った
よーわからん
俺が3ヶ月くらい前に書いたコードだとidあるなー まあ、idあった方がいろいろ便利な気がする
idもそうだけどdb側の設定もいるだろ InnoDBにしてdelete on指定してとか
421 :
nobodyさん :2009/11/18(水) 17:47:42 ID:7Al/6kAb
初めまして。 初心者な質問で申し訳ないのですが、 HTMLのckeditorというのを使いたくて、ダウンロードしたフォルダをそのまま、 vendorsの中に置き、 /vendors/ckeditor/_sample/sample.css をビューの中で呼び出したいのですが、それは可能でしょうか。 よろしくお願い致します。
確か最近ベーカリーにckediterの導入方法が載ってたよ
/vendors/css/ckeditor/_sample/sample.css じゃだめなの?
BAKEって何ですか? 何の役割があるんですか?
BAKAには分からんよ
427 :
nobodyさん :2009/11/19(木) 13:51:46 ID:Rp5rjDhr
>>425 ちゃっちゃとcakeが焼きあがる
ただ、慣れると手で焼いても大して変わらないのでbake使う人は少ない
428 :
410 :2009/11/19(木) 13:55:24 ID:???
最初の骨格作る時とプラグイン作るときとかいっぱい使ってるよー ディレクトリとか自分で作るのめんどくさいし
CakeよりもZendの方が良くない?
確かに字面が角ばっててカッコいいかもな
Zがかっこいいよな
>ただ、慣れると手で焼いても大して変わらないのでbake使う人は少ない どこで統計取った?
bakeで焼けるスケルトンを自分好みにするとさらに吉
435 :
nobodyさん :2009/11/20(金) 01:40:07 ID:+tfzDSTL
>>433 cakeの勉強会。
ここ1年くらいの動向は知らんけど、ちょっと前まではbake使いは異端だった。
cakeの勉強会はbakeも使いこなせない連中の集いだったんだww
勉強会いったことないの? 地方の人は来づらいか
まぁ明らかにレベルの低い集まりだけどな やつらのブログみてるとわかる。 何つーか業務レベルじゃないんだよな。 趣味レベルならあれでいいんじゃない??
CakePHPで作ったと言われる(思われる)サイトってどんなのがありますか?
442 :
nobodyさん :2009/11/20(金) 12:57:12 ID:2yh9qtSB
レイアウトviewの文字コードとコンテンツviewの文字コードを一緒に変更したいのですが可能でしょうか? helperのafterRenderで変更するとコンテンツviewのみが変更されてしまいます。 今はレイアウトview内で変更していますがとても効率が悪いです。 ご教示お願いいたしますm(_ _)m
>>442 afterLayout() だったと思う
CakePHPっていい参考書何も無いよね 何だ、コレ?って内容の本しか今の自分は見た事がない 俺の行く本屋に売ってないだけかもしれないけれど
公式みて分からんやつはどんな本買っても無駄 頭悪いから仕事変えろ
公式見て分からないんじゃなくて、ウェブで見るのがめんどくさくて皆本で学習してるんだと思う 少しでも目を休めるとか、通勤途中で時間を潰すとか、リンクばっかで嫌になるとか 公式マニュアルはゴチャゴチャしていたり、わざわざそれを調べるために色々と手間がかかるし、順番どおりに学習できない場合があるから本に行く人もいるんだと思う 公式マニュアルをプリントアウトして学習できれば一番いいんだろうけれど、そういうわけにもいかないからね
最近マニュアルの目次や前後ページへ移動リンクをクリックしても ちゃんと飛んでくれないページが多いね。 英語ページだと問題ないのに・・・なんとかならないのかな?
なんでCakePHPで作られたサイトの文字ってデブなんですか?
Cakeはデブだろjk
PizzaPHP
>>444 そうか?いい参考書がメインだと思うけどな。
あと多少なれてきたらcakephpの辞書があれば余裕。
やっぱりいいよcakephp。
cakephpよりもzendの方が本はいいのが揃っている ただし、リファレンス本がないのがきつい
453 :
nobodyさん :2009/11/20(金) 22:23:46 ID:iP3Jjemy
HABTMの連結テーブルにおいて、Controllerの主モデル(ex. UsersTagsController => UsersTag)は find('all')でアソシエーションされたモデルがjoinされて返ってくるのだけど、 $usesで宣言したモデルだとアソシエーションが無効になってる。 class UsersTagsController extends AppController{ function hoge(){ $this->set('uses_tags',$this->find('all')); // User,Tagが連結される }} class UnyosController extends AppController{ var $uses = array('UsersTag'); function hogehoge(){ $this->set('users_tags',$this->UsersTag->find('all')); // UsersTagのみが返される }} 今のところ $this->UsersTag->bind('User'); $this->UsersTag->bind('Tag'); とか、$useに入れないで $this->UsersTag = new UsersTag(); ではまともに連結されて返ってくるのだけど、これって仕様なの? AppModelで actsAs に containable 入れてるんだけどこれが原因とか?
>>453 UsersTagsControllerの存在とかUsersTagモデルを読み込む意味とかが分からない
あえてそうする意味は何?
455 :
nobodyさん :2009/11/21(土) 00:49:42 ID:hiPUggY3
ユーザーの追加時にAuthコンポーネント使ってるんだけど、 UserModelとかでパスワードの未入力チェックとかのバリデーションかけると、 Viewでパスワードハッシュが掛かった値が入ってきちゃうんだけどこれはなんですか?w ハッシュかける前の状態保持して戻すのが普通だと思うんですが、これは仕様?それとも使い方間違ってる?
なにがwだ さんざん既出じゃぐぐれぼけ
>>455 Authを使った誰もが引っかかる道だなw
マニュアルにさらっと対処法が書いてあったはずと思うけど。まあググれば出てくる。
458 :
453 :2009/11/21(土) 01:00:39 ID:LeZPc13i
>>454 Cakeでここまでやるのは馬鹿馬鹿しいかも知らんが、多対多リレーションが増えると
連結テーブルのモデルから操作したほうが処理がすっきりすることがある。
特にユーザモデルの場合は、複雑な関係性を持ちやすい。
例としてUserとTagを出したが、実践的な例でいうと、ユーザがグルーピングされてる時、
// controller
$groups_users = $this->GroupsUser->find('all');
$this->set('groups_users',Set::combine($groups_users,'{n}.User.id','{n}.User.name','{n}.Group.name'));
// view
echo $form->input('Hoge.user_id',array('type' => 'select','multiple' =>true,'options' => $groups_users));
とするとすっきりと<select>で<optgroup>してくれる。
459 :
455 :2009/11/21(土) 02:25:42 ID:hiPUggY3
>466 あら。冷たいのね。。 >467 情報どうもー。まぁ、調べたあとのコメントだったんだけども。 まぁ、完璧に動作して欲しいっていうのが贅沢なのはわかってるけどね。 やっぱり自動的にハッシュ化する部分はそのあたりが(その部分だけなんだけど。惜しい。。)うまく動かないとちょっと使いづらいかな。 ハッシュ化のロジックだけありがたく使わせてもらうことにしたよ。
レス番もコメントもずれてる
ハッシュ化しないようにすりゃいいのに。
マニュアル見てもhasOneとかhasManyとかテーブルの組み合わせが、 まったくわからないんだが、サルでもわかるサイトない?
hasOne=1対1 hasMany=1対多 hasAndBelongsToMany=多対多
USERテーブルに県名番号持たせてて、 KENMEIテーブルから県名を引っ張ってくるのは USER hasOne KENMEIだよね? 思いとおりにSQLが作れないの・・。 参照されるテーブルのカラム名を、参照するテーブルに作らないとダメなの?
>>464 マスタは逆方向にhasMany
KENMEI hasMany User
User belongsTo KENMEI
hasOneならば、USERテーブルにもKENMEIテーブルにも同じキーしか存在しない場合。 つまりユーザは一人ひとり必ず違う県名であって、47人以上のユーザが作れないことに なってしまう。 ユーザ 多対1 県名 なのだから、 県名 hasMany ユーザ ユーザ belongsTo 県名 である。
469 :
nobodyさん :2009/11/22(日) 01:01:09 ID:3AvLDreV
ひとりごと bakeは'ばけ'と発音する。 小麦粉などの材料を化けさせるとcakeになる(少しイミフメ)
じゃぁcakeは’かけ’と発音だな
468です! ずーっとできず、疑心暗鬼でグチャグチャでしたが、 みなさんのアドバイスで確信になり、調べつくしました結果、 × var $belongTo = ◎ var $belongsTo = が、原因でした。 ほんと、ありがとうございます。
472 :
sage :2009/11/22(日) 01:10:28 ID:3AvLDreV
それではみなさま'cakeはかっけー'ということで(なにがだ)
473 :
472 :2009/11/22(日) 01:12:06 ID:???
>>471 おめでとです、cakeは命名規則に少し癖がありますよね
ほんとです。初心者は命名規則でパニックです(´;ω;`)
>>474 まぁ、それでも直にSQLを書かないでDBMSの複数テーブルを操作できるわけですから、そこそこすごいことなのかも
命名規則は英語圏の人間になったつもりで肌で理解していくと良い なぜModelは単数形でtableとControllerは複数形かとか それが分かればbelongToじゃなくてbelongsToなのもすっきりするよ だから KENMEI とかつけないほうが良い(面倒でも英単語を調べる)
なんかこのスレなごんでいて、異教徒wが襲来しないけど、もっと良いものがあるのかな?w ちょっと巡回してみます
>>476 上の段落と下の段落に何のつながりがあるんだ?
「だから」でも何でもないだろ
別に好みの問題。おれは英単語で命名する。
でもネイティブが見たら「この単語はねーわww」っての選んでるんだろうけどな
>>478 言葉足らずだったが、英単語でつけることが肌で理解するということの一助になると思っている
ちなみにおれも ネイティブ「ちょwww」 な単語つけてる
ここまでを勝手にまとめてみると、'KENMEI'はそこそこ賢明ということでいいでつか? PrefectureNameとかだと、長すぎぽいしねw
だよね。 どうせnameフィールド作るんだし、Prefecture.nameで値にアクセスできるのが一番自然。
まぁ、お約束だけど、それなら'KEN'がさらにみぢかい件について
ヒャッハー!汚物ですが、消毒されに来ました
>>484 いやそういうこっちゃないでしょ
モデルの命名には単数形が使われるってことでしょ
modelに複数形があるかないかで判断する問題じゃない
488 :
474 :2009/11/22(日) 15:35:18 ID:???
モデル、めんどくさくて嫌いでしたが、わかってくるとメチャメチャ簡単ですね! 感動します\(^o^)/
>>486 >>487 それなら了解です
> 命名規則は英語圏の人間になったつもりで肌で理解していくと良い
英語圏の人間になったつもりになったらmodelが単数形ってのが理解できる
というのがわからなかったのです。
個人的には、モデルはレコードと対応し、その集合がテーブル、
だからmodelは単数形と理解していたので、
ネイティブと関係ないやん?と思った。
おれの理解がテキトウってのはおいといてw
最近、なごみ杉
聞いていいですか? たとえば、2chとか「PC等」→「プログラム」→「【PHP】CakePHP」→「レス」って構成ですよね。 これってどういうDB設計になってるんですか? 実務経験がないのでわかりません。 「PC等(カテゴリID)」→「プログラム(カテゴリID+サブカテゴリID)」→「【PHP】CakePHP(サブカテゴリID+スレID)」→「レス(スレID+レスID)」 →「デスクトップ(カテゴリID+サブカテゴリID)」→「cpuをとっかえたい(サブカテゴリID+スレID)」→「レス(スレID+レスID)」 って感じですかね?
490です、連投すみません 「テーブルをたくさん作るのかな?」とか考えたんですけど、違いますよね?
スレ違い あるのか知らんけど、データベース設計スレっぽいもの探して聞いてきなさい 普通はカテゴリTBL、板TBL、スレTBL、レスTBLがあると思うよ
実はDB使ってない
聞いて良いですか? なんでこのスレ、DB初心者質問みたいのが定期的にでるんすかね
他に話題がないからw
Cakeの未来を語ろうじゃないか。 どうなるんだ 俺はDonateしたけど。
>494 DB設計などの地味?な分野はサッパリわからん! という人の比率が高いんじゃね、Web屋には。
関連モデルのビヘイビアのafterFindって呼んでくれないんですか? なんか解決法あるんでしょうか?
499 :
498 :2009/11/25(水) 02:41:14 ID:???
ググってみたら >Currently, callbacks in behaviors are not triggered on recursive finds. >This is done by design, but changing it is something to consider in the future. だそうで・・・なんでじゃー
まぁさんざん既出なんだけど、悔しいよねそこ
501 :
498 :2009/11/25(水) 02:59:58 ID:???
>さんざん既出 そうみたいですね。すいません。 とりあえずモデルに書いてやり過ごします。
今作ってるサイトで、「あ〜ん」まで46文字分の目次リンクを作ろうとしてます。
目次は「
http://domain.com/tables/index/1 」のようなURLで、
「動物」「植物」などのジャンル別に同じようなリンク群を用意します。
各リンク群の差異は、テーブル名だけになります。
んで抽象的な質問なんですが
ポリシー?として、このリンク群にも毎回Htmlヘルパーのリンク出力メソッドを使うべきでしょうか?
リンク群をベタで一つだけ書いて、str_replaceでテーブル名をジャンルごとに置換出力するほうが
ソース的にすっきりするので、そうしようとしているんですが…
フレームワークのお作法と言うか、ある関数は使うべきと言うか、
そう言う点で多少無理があってもヘルパー使うべきですか?
変な質問でスミマセン
viewのところは好きにやればいいんじゃね? 気になるならヘルパー作ればいいし elementを利用するもよし
>>503 そか、メンテナンス性とか気にするならヘルパー作っちゃうって手もあるんですね。
ありがとうございます
Error: Database table tests for model Test was not found. って出てるんですが、Testsってコントローラーは作ってもTestというモデルは作ってません。 なんでこういうエラーがでるんでしょうか?
>>505 Modelがないから
$useTable = false なModelを作ってあげればよい
h()使ってないのに自動でエスケープされます。。 どういうことですか?
formヘルパー使ってたら勝手にやってくれるが
質問です authComponentを使っているのですが firefoxやgoogle chromeだとうまいことログインできるのですが IE6だとログイン→リダイレクト先のログインチェックではじかれる→ログインということで ログイン画面がループしますが、原因が不明です。 ご教授お願い致します。
>>508 それは知らなかった。でも使ってないんですよ
謎ですわ・・・
ありがとうございした。
cakephpの勉強で技評のtodoアプリを作ってみているところなのですが
第6回(
http://gihyo.jp/dev/serial/01/cakephp/0006 )をやってみたところ
タスクの追加は正常に行えるのですが、タスクの内容が表示されません。
というか入力フォームに入力した内容がデータベースのcontentに格納されていないようで
contentのtextが空になっています。
何か原因が思い当たるケースはありますでしょうか
>>511 DBの文字コードをチェックし
app/config/database.php の encoding を指定する utf8 とか
でどう?
$this->log でログ書き込めるけど、見るときどうしてる? いちいちダウンロードして見るもの面倒だし。 良い方法ないかな。
*.logを読み込み表示するプラグインをつくって 管理画面からそのページ開いてる 開発権限でログインしたときのみ見れる。 うちはShellからの軌道をよく使うからこういうのないときつい
>>513 echo $form->create("Task",array("url"=>array('action' => 'add')));
echo $form->inputs(array("content"));
echo $form->end("add");
ver.1.2以上だったら$form使ったほうがいい。
>>516 解決しました。
ありがとうございます。
formには書き換えてたんですがinputの箇所が正しく書けていなかったようです
Linux環境でCakePHPのシステムを作成しているのですが、mdbファイルを扱うには どのようにすべきでしょうか?良いライブラリなどありましたらお教えください。
>>518 datasource作るといいんじゃね?
scaffoldで、カラム名が"id"のカラムはedit画面で表示されない(=入力できない)ようですが、 これって変更できないんでしょうか? idをauto incrementで付与せず手動で付与するテーブルの管理にscaffoldが使いたいのです。
>>520 viewだけbakeして edit.ctp 修正すればいける。かも
でも素直にbakeするが吉
523 :
nobodyさん :2009/11/30(月) 20:13:43 ID:VRbng4qp
とりあえずそんな変なところから始めないで 一回部ログチュートリアルとかこなしてから来てね ばいばい
むしろそんな事ができることに驚いた
526 :
523 :2009/11/30(月) 22:01:31 ID:???
解決しました。ありがとうございました。
>>523 千里の道も一歩から、がんばってね/(^_^)/
528 :
nobodyさん :2009/12/01(火) 05:46:31 ID:iKHu3fPb
Cookie コンポーネントの質問なんですがもう二日ぐらい潰してしまったんで誰か助けてくださいorz app_controller に Cookie コンポーネントを使っています hoges コントローラーの beforeFilter メソッドで app_controller の beforeFilter メソッドを呼んでいて beforeFilter(app) のメソッド内で Cookie->write でクッキーに保存した値を hoges コントローラーの index アクション内で Cookie->read をして先ほどのクッキーを読み出すことは可能なんですが beforeFilter(app) のメソッド内で Cookie->name のクッキー名を変更するとなぜか読み出せないんですよね でもブラウザに保存されてるクッキーを確認すると、変更後のクッキー名でクッキーが保存されてるんで読み出せるはずなんですがロード出来ません 荒技で cookie コンポーネントのPHPファイルの var $name を 最初から 'CakeCookie' から任意の名前に変更してみてもロード出来なくて絶望しました $_COOKIE 使って実装するのは暗号化も行ってるし何よりフレームワーク使ってる観点から保守性が低いのでそれ以外で誰かお願いします
>>528 read 出来るときと出来ない時のコードの変更が beforeFilter(app) のメソッド内で Cookie->name のメソッドの追加の有無だけなんで
引数が間違ってるっていうのは無いです
一応自己解決(完結?)したので…
質問してから CookieComponent 調べていくと write 後、$_COOKIE で書き込んだ値を取得してみるとなぜか取得出来なくて
でもブラウザにはクッキーが保存されてるので 2回目以降のアクセスだとクッキーが読み込まれるんですよね
それで Cookie->name でクッキー名を変更しなければ、write してから read すると読み込まれているからどうやってクッキーを取得してるのかと思って調べてみると
write すると CookieComponent のメンバ変数の $__values に値を保存して read 時はその変数から取得していて
結局 CookieComponent のメンバ変数にクッキーを保存して取得してた流れみたいでした…
で、Cookie->name でクッキー名を変更を行わないと上のような処理になって、write 後 read しても読み取れるんですが
変更しちゃうと hoges_controller の beforeFilter が終わると $__values に変更後のクッキー名のクッキーを読み込んで write した値が消える事が原因だったみたいです
write しているタイミングが app_controller の beforeFilter メソッド内でやっているので Cookie->name を追加すると必ず $__values の値はリセットされるので
hoges_controller のアクションメソッドで read しないで、beforeFilter 内で read してapp_controller のメンバ変数に入れた後で
hoges_controller のアクションメソッドで変数を参照するということで完結しました…
CookieComponent って万能じゃ無いんだね…
なんで write 後、$_COOKIE で取得出来ないのかわけ判らんのですが長文でごめんなさい
>>519 datasourceのもう少し詳しい情報教えてもらえますか?
srbr ksg
しらべろ くそが?
春日じゃね?
それならhrhになるだろ
どういう暗号化だよ
効率いい
サラブレッド 高速型
>>531 datasourse系は情報が少ないよね。
>>531 ソース読めばいいんじゃね?
いやダジャレじゃなくてまじで
まあその前にmdbファイルとやらの仕様調べてこいって話だが
そーっすね!
だれかへるぷ
http://localhost/hello/bye/ ってアドレスがあったら、まず
DefaultControllerのhello actionを探して、有ったら、
それを実行。
なかったらHelloControllerのbye actionを探して実行
ってなカスタマイズしたいのですけど、よくかわりません
だれかおしえてぽ
というかそのようなことが可能かどうか
というかオープンソースだから不可能はないだろうけど・・・
とはいっても、cakeのcoreに本格的にメスを入れるほど技量はないかも。
>>543 Routingでは対応できないから一旦振り分け用のaction呼んでそこからrequestActionすればできるけど
でもそもそもそんなことするシーンが分からん
具体的な例をおくれ
546 :
544 :2009/12/04(金) 13:04:04 ID:???
>>545 CategoriesControllerを置いて、apacheで書き換えるのが良いと思うがどうか
カテゴリーの数にもよるかも でも俺も546に同じ
548 :
545 :2009/12/05(土) 15:35:56 ID:???
CetegoriesControllerってのは、545で言うDefaultControllerの役目だよね。 でもapacheでどう書き換えるのかイメージが沸かない ああぁ
cakephpでcron使いたいんだけど 「外部からのアクセス禁止でcronからのみ叩けるアクション」 を作るにはどうしたらいいですかね。
ローカルからだけ叩けるようにしとけば?
>>550 ありがとう。
function _test(){
}
だとだめだった。
レンタルサーバーだからローカルからってのもよくわからなくて。
PHPマニュアルを一読することをお勧めする
それはプライベートだろ
>>549 「cakephp コンソール」 で、
あとは分かるな
rhacoっていうフレームワーク使おうと思ったらインストールすらできん;;
>>545 ごめん。よく読み直した。
正攻法は、既定のControllerを列挙してRoutingで、それぞれのControllerに飛ばし、マッチしなかったらCategoriesControllerに飛ばす
(ちなみにResistControllerではなく、UsersControllerのregist アクションかな)
ただ、それだと、category登録時にURLとかぶってないかチェックする必要があると思うので、/a/regist のように固定のサブディレクトリを用意しておいたほうが良いかも
すれたいよんだら親兄弟と一緒にしんどいで
このスレにはスレ違いを呼び寄せる魔力でもあるんかのう
rhacoスレないからじゃない?
rhaco2のドキュメントを見て、ああこれは内輪だけで楽しむFWなんだな、と思った
564 :
545 :2009/12/06(日) 13:30:36 ID:???
>>557 それならわかる!!
なるほどっっ
ありがとーー!!
prefixルーティングしているのですが、 adminで作ったら admin用フィルター admin_beforeFilter 普通用フィルター beforeFilter みたいに実行してくれないのですか? 自分で呼ばれたurlを解析して beforeFilterの中で分岐させないと無理?
>>565 admin_beforeFilter の発想は無かったわ
でもurlを解析する必要はない
debug( $this->params ) せよ
>>565 なるほどっっっ!
$this->params['prefix']
で、取れるのねっ!!
でも、appをできるだけシンプルにしたいから、
cakeのdispatcherに
$controller->beforeFilter();
↓
$prefix = isset($controller->params['prefix']) ? $controller->params['prefix'] . '_' : '';
$controller->dispatchMethod($prefix . 'beforeFilter', null);
ってしてみちゃった!
どうなんだろうなぁ。
cakeに手を加えるのは・・・
自分の使いやすいようにcakeが進化していくのはいいけど、
cakeが新しくなったときに、大変だよなぁ。。。
ktailibrary で authコンポーネントを使ってログインNGのとき、PCからだとsessionに [Message] => Array ( [auth] => Array ( [message] => ログインできません [layout] => default [params] => Array ( ) ) ) が入るんですけど携帯用URLでログインNGの時は上記メッセージが入りません。 どうすればよいでしょうか。
みんなcakeでどんなの作ってるの? おれはmixi踏襲版
>>570 ・会員制の情報サイト(ユーザー管理、コンテンツ管理)
・企業のお問い合わせフォーム
ぐらい...
facebook踏襲版
俺はCMSの踏襲版。 姉歯みたいにならないようにきっちり作り込んでおけばあとはそれをコピペで サイト大量に作れて便利。
何かの踏襲版って、ふとしたときに気が折れますよね。 これ作って意味があるのだろうか・・って
僕は2ch.netの踏襲版
>>574 勉強になるよ。
完全オリジナルで作りたいのは技術者として当然だけど、
人のものをまねることにより、学ぶものが大きい。
まあ、これ使えると他のFWも使えるからな 業務でもそこそこ使われてるから、いいんじゃね
どっちかというとオリジナルで作るより楽だから・・・ってのが大きかったりするけど まぁ、フレームを踏襲しても中身がオリジナルだったらいいんじゃないか
ソース解析しつつカスタマイズすることによって利用価値は跳ね上がる。 irc#cakephp(注:英語)でどんなにコアな質問してみても答えが大抵1分以内に返ってくる。 あそこはヤバい
そのコアな質問とやらをちょっと書いてみてくれるか?
CMSやブログ的なものを作るとき、例えば、サイドに表示させるパーツなんかはどうしてますか? viewのエレメントからrequestActionするのが考え方としては一番スッキリするんだけど、 重くなっちゃいますかね?
582 :
579 :2009/12/08(火) 01:35:24 ID:???
>>580 そんなの書けるわけねーだろ!英語だぜ、英語!
中一の英語を読むことすらできねーのによ!!
ニューホライズンは一冊目で挫折したよ!!
ちょっと格好つけたかっただけだよ!空気嫁!!ったくよ!!
>>581 requestAction自体がキャッシュ推奨
>>582 英語できないのにcake使えるなんてすごいと思う。
>>580 なんでjoinモデルはAppModelのインスタンスで生成されるん?とか
とりあえずコアライブラリに突っ込んだ内容でも余裕。
>>584 テーブルの命名とかどうするんだろう。
komentosとか?
komentsって英語入ってるよw tyuushakusかな。
>>581 俺はrequestaction。ちょうど今、ブログ作ってます。
にしてもカレンダーがネックだね。
ライブラリがいいのがない。
Mediaプラグイン使ってる人いる? アップロードするディレクトリをドキュメントルート外にしたりできるのかな?
プラグインの中のconfig/core.phpの設定でできると思うけど。
その場合、ブラウザからアクセスするときは プログラムを通すのかな? 画像を大量に表示するときなんか、 すごい負荷かかりそうだけど・・・
通さなきゃどうやって表示するんだ? 馬鹿か? 死ぬか?
>>592 > 画像を大量に表示するときなんか、
> すごい負荷かかりそうだけど・・・
大量って、どのくらいの数を言っているのか?
>>593 何をそんなに怒ってるのかわからないけど・・・
初回はプログラム通して、画像表示+キャッシュ生成
二回目からは直接表示、とか
mod_rewrite使えばできるでしょ。
>>594 アマゾンとかの検索結果くらい?
サーバー負荷はアクセス数に左右される事が多いと思う。 大量の画像表示といっても、人気無いサイトなら負荷も一過的であまり問題にならないのでは。 それより、大量画像表示で気をつけないといけないのは、回線に負荷をかけるという事だよな
>>596 回線負荷という意味では、etagとかHTTP304ステータスコード(Not Modified)とかを自前実装する必要があるよね
media pluginは使ったこと無いからどうなってるか知らんが
命名規則で思ったんだが、テーブルがcategoriesの場合、 モデル名はcategory、プロパティでcategoriesテーブルを指定しないと駄目なんだよね。
なにいってんの?こいつ
601 :
nobodyさん :2009/12/09(水) 16:32:48 ID:5lohRgzm
waterの場合どうなりますか?
602 :
nobodyさん :2009/12/09(水) 17:09:58 ID:/sBQ8GaX
boardと言うテーブルでモデルとコントローラを作ったのですが Error: Database table boards for model Board was not found. と、boardの複数形boardsテーブルを探しに行ってしまうようです。 複数形じゃなくてboardを見に行かせるにはどうすればいいのでしょうか?
テーブル名をboardにすべきじゃないかなぁ
間違った テーブル名をboardsにすべきじゃないかなぁ
var $useTable = 'board'; 糞な掲示板なんか作る前にマニュアル読むかシネ
606 :
602 :2009/12/09(水) 20:35:39 ID:???
>>605 できました。ありがとうございます。
CakePHPってMS SQL Serverとあんまり愛称よくないですね・・・
改善してほしいな
どこがどう相性悪いのか具体的に
608 :
602 :2009/12/09(水) 20:51:30 ID:???
Warning (2): mssql_get_last_message() expects exactly 0 parameters, 1 given [CORE\cake\libs\model\datasources\dbo\dbo_mssql.php, line 407] とか出たり。 lastError()のmssql_get_last_message()のとこコメントアウトしてreturn;しちゃいましたけど・・・
↑最高にアホ
>>592 メディアをドキュメントルートから外すのは普通にやると思うよ。
そのため(ってわけでもないけど)にcakephpにメディアビューも内蔵されてるんだし。
>>610 メディアビューで、サムネイル画像50枚くらい一度に表示したら、
ちょっともっさりしてたよ。
やっぱキャッシュは必須かも。
>>611 サイトのポリシーにもよるだろうけど、
普通に画像を置くより明らかに重くなるのは目に見えてるしね。
俺はダウンロードのカウントが必要だったり、
ACLでアクセス制限したかったりそういう部分ぐらいしか使わないけど。
コントローラからもシェルからも使いたい処理って、 どこにまとめてますか? シェルからコンポーネント使うのもバッドノウハウっぽいですし・・・
モデルに書くというのは?
>>614 現在はその方法にしてます。
でもモデルに関係しない処理もあるので・・・
あと、コントローラからシェルを呼んだりすることもできるんでしょうかね?
何かの登録処理後、さっそく一回目のCRONを実行する、
みたいな処理を想定しているのですが・・・・
exec()とかで呼ぶんじゃダメなの? いや俺cakeのシェル使った事ないから専用の呼び方があるのかどうかは知らないけど。
exec("/path/to/cake/console/cake -app /path/to/app task_name arg1 arg2 ..."); って感じかねー普通に。
保存の前に確認画面を挟むとき、やはり確認画面用のctpファイルを作ることになりますか? Cool!なやり方はありますでしょうか?
modelとvendorに書いてる。 shellから使うときもあるかも。な処理はコンポーネント化しないようにしてる。 shell起動は、上にも書いてある用に``とかexec系だけど、 バックグラウンドで処理して欲しいと気が多いから(つまりshellの返答を待って欲しくない) その時は/dev/nullと&使って呼び出してる
adminをrootsで指定して、
http://localhost/admin/host/modify/[ID名] として、その中でformを
<?php echo $form->create('', array('method' => 'post', 'action' => 'regist', 'enctype' => 'multipart/form-data', 'url' => array('admin' => true))); ?>
こんな感じで指定すると、なぜか
actionが
/host/regist/admin:1
となってしまいます。
なぜか、$formの中の$option['action']['id']に、'admin' => trueが1として入ってしまい、
adminがprefix扱いでなくなってる。。。
[ID名]を入れなければ正常なんですが・・・
散々迷走して、
'url' => array('id' => '', 'admin' => true)
と追加すれば、
正常に動作することがやっとわかったんですが、
これは一体なぜ???
不可解です。。。
しかし、いつになっても、強敵はフォームヘルパーだねぇ。 順調に開発が進んでいると思いきや、 ちょっと複雑なフォームになると、もうにっちもさっきもいかなくなる。。。 でも、バリデーションというめんどくさいフォローを考えると それでも、ヘルパーを使い続けてしまう・・・ リスト形式のページで、チェックしたレコードだけ、処理をしたい。 とか書こうとしているのにうまくいかん(+_+くそーー チェックボックスだけで3時間はつぶしているぞー
>>621 複雑なフォーム というのはユーザビリティも悪くなるので
フォームヘルパーで対応できるようなフォームを作るといいと思うんだけど。
どうかな。
>>620 へえ、それで解決するんだ。
以前さんざんはまって、結局$paramsのURLをそのまま書き出したよ。
formヘルパーの逆URLルーティングはID絡むからか通常の$html->url()とは挙動が違うんだよね。
なんかそのへんのことが整理されてなくて Cakeめんどくせえなあ っておもう
625 :
nobodyさん :2009/12/12(土) 22:10:57 ID:d/+O720A
他にもあるぞ
おら、何かワクワクしてきたぞ!
627 :
620 :2009/12/16(水) 00:15:50 ID:???
>>623 きっとできるはずだ!と信じたけど、できなくて、、
でも、やっぱオープンソースの強みだね。
いざとなったらソースを見て回避方法を探せる。
同じidだけど、urlのidとactionのidがcakeの中で混同しているっぽいのよね。
idを消すと動くから。
だから、urlから必要のないidを消したら使えるんじゃないかしら。
と思って消す方法を探してみた。
けど、やっぱ階層がもういっこ深くなるとだめそうやね・。・・
おっす cakePHPってどう?いい感じ?
すみません、質問です。 newするときなんですけど、クラス指定でなく、クラス名指定でできないものですか? たとえば「Test」modelをnewするときは普通は $model = new Test(); としますが、これを $model = new Model('Test'): みたいな感じで、クラス名の文字列を指定すると、そのクラスのインスタンスが生成されるようにしたいのです。 カスなのでググってもわかりませんでした。このカスにどなたか教えてくださいませ。
>>630 つ $User = ClassRegistry::init('User');
>>631 様
ありがとうございました!こんな便利な方法があるのですね!勉強になりました!
googleにキャッシュされないんだけど仕様?
このスレにその質問で答えが返ると思ってるのは貴方の仕様?
ヘッドに肉って書いてない?
牛脂
---
http://cakephp.org/ PHP framework
---
って文章をautoLinkUrlsさせると、PHPまでリンクになっちゃうんだけど、
改行コードもリンクされるのは仕様?
コアのコード読んでみたんだけど、preg_replace_callbackがイマイチ理解できなくて
どの辺を修正するべきかよくわからん。
フォームヘルパーを使っているのですけど、validationを組んで、エラーがあると、 元の画面に戻ってくるのですが、 fileコンポネントはデータがクリアされてしまいます。 セキュリティの関係でたぶん引きづくのは無理かなーとかんぐって、 今はsessionで保存しておいてvalidationで差し戻しされたときはそこから呼び出すことに しようかなぁ。と思っているんでけど、fileが空欄の表記になってしまうのが難点・・・ なんかもっと画期的な、とか、定石な手段をご存知だったら教えてくださいー。 みんなはどうしてるんだろう。
>>640 fileはvalueを指定できないからね。ページ遷移してる限りfileを入れた状態で
表示するのは難しいのではないでしょうか。
できるかわからんが、アップロードだけは完了させてしまいfileは表示しないとか?
>>640 validationエラー時にアップロード済の場合、
ファイル名とかサムネイル + 削除リンク表示。
削除リンクをクリックするとfileが表示されるとか。
fileのvalueを指定はセキュリティ的に無理。
cake関係ないけど。
646 :
640 :2010/01/04(月) 00:11:40 ID:???
>>643 >>641 ありがとん。
アップロードは必須項目なので、
結局、ファイルを指定して、サブミットしたら、
バリデーションで差し戻し食らっても、画像だけは、
プレビュー画面を表示して、アップロード済みにすることにしました。
変更したければ、もう一度ファイルを指定して、アップロードしなおす
という感じで。。。
なんとか様になりました。ありがとー
実装直後、
アップロード→セッションに保存
した直後
セッションから呼び出し→画面表示(別URL)
という処理を作ったら、書き込んだ直後のセッション情報が
別のアクションから呼び出せない。
という現象が発生していて、1/4日ふっとばしたんだけど、
一回休憩して、気合を入れて原因を解明するぞー
と意気込んだら、、、
バグが消えて、正常に表示されるようになってました。。
不思議すぎます・・・
647 :
nobodyさん :2010/01/04(月) 16:34:28 ID:uJF3g7Nl
コントローラで$this->set("result",$result);して、ビューテンプレートにresultを渡した場合、 <?=$result ?>だと表示されないんだけど、なんでかな? この部分を<?php echo $result ?>に変えてみると値が描画されるからresultに値は入っているみたい。
649 :
nobodyさん :2010/01/04(月) 18:11:00 ID:uJF3g7Nl
>>648 ズバリです。
本当に助かりました。ありがとうございます♪
>>649 オレもViewは<?php echoの略記を使って書くの好きだなあ。
<?= $form->create('Post', array('action' => 'add', 'type' => 'post')); ?>
タイトル:<?= h($form->value('Post.title')); ?><br>
<?= $form->hidden('Post.title'); ?>
本文:<?= h($form->value('Post.body')); ?><br>
<?= $form->hidden('Post.body'); ?>
<?= $form->submit('戻る', array('name' => 'data[Post][mode]')); ?>
<?= $form->submit('Save Post', array('name' => 'data[Post][mode]')); ?>
<?= $form->end(); ?>
省略記号使うとどこからともなく変なのが沸いて来たりするから・・・
<?= の省略記号を使うとshort_open_tag = On してない環境で動かない事の他に どんな悪いところがあるの?
>>650 俺も好き。あんまり推奨じゃないみたいだけど、
まぁ何かあったら <?= を <?php echo に置換すりゃいいだけだし。
>>652 推奨しませんよ ってことぐらい。
>>652 稼働安定性が悪い場合がある。とか意味不明なエラーにハマルとかある???
ブログチュートリアルでCake勉強してます。
http://book.cakephp.org/ja/complete/219/Blog view($id = null)の$id = nullってどういう動作を書いてるんですか?
view()呼び出し時に$idを初期化(null)すると考えたのですが、せっかく読込んだ引数を
初期化するのもおかしいし、delete($id)は$id = nullになっていない事も説明つきません。
よくわかりません。だれか教えてください。
function view($id = null) {
function edit($id = null) {
function delete($id) {
function view($id = null) {
$this->Post->id = $id;
$this->set('post', $this->Post->read());
}
>>655 read()メソッドの中にこんな記述がある。
ttp://api.cakephp.org/view_source/model/#line-1028 if ($id !== null && $id !== false) {
$this->data = $this->find('first', array(
'conditions' => array($this->alias . '.' . $this->primaryKey => $id),
'fields' => $fields
));
return $this->data;
} else {
return false;
}
editメソッドに$idが指定されてなかった場合、read()メソッドが返す値をfalseにしたいから、
仮引数が与えられてなかった場合にnullを代入するようにしているんだと思う。
658 :
nobodyさん :2010/01/05(火) 22:35:00 ID:GyjRQCtP
zendからcakeに移ったが やばいね!cake! こんなフレームワークならZ・E・N・D使うわwwwwwwwwwwwwwwwwwwwwww
>>658 どうぞ zendにお戻りください。引き止めはしません。
サヨナラ。
調べてから移れ
zendの方がヤバくね? プラグイン入れないと殆ど使えない ってか、PHPが生すぎる
662 :
nobodyさん :2010/01/06(水) 13:10:36 ID:5N2miMbo
あの・・・私ね、この前までZendFramework使っていたんですけど
最近、他のフレームワークが気になって試しにcakephp(笑)インストールしたんです。
なんだろ、cakephpって浅いんです(笑)
function とか varとか・・・
なんでもarray(
PHP4が使う糞フレームワーク
>>661 プラグイン入れないと使えない?
てめぇのケツにプラグインさしとけwwwwwww
PHPが生すぎるってPHPで作られたフレームワークに向かって生wwww
その浅さやシンプルさがcakeのいいところだろ
人間としての浅さが見える文章で微笑ましいですね
665 :
nobodyさん :2010/01/06(水) 13:37:24 ID:5N2miMbo
>>663 おまえ悪口言われているよ><
俺がcakephpをPHP5で作るならZendFramework使うわwwwwwwww
664は662へのレスでしたとさ。
ageてるレスはスルーでたのむ
どれも使えない私はどうすればいいdすか?^^; ZendもCakeも難しいです〜><
チュートリアル10回やんなさい
ここはcakephpのスレです。zendはzendスレでお願いします。
zendも好きだけどcakephpもやっぱり好きで何かしら影響を受けてる。 cakephpのmodel::find()メソッドはよくできてると思うんだ。 zendのモデルにselect系の問い合わせメソッドを実装するときも、 cakephpのfind()の引数書式っぽく使えるように書いちゃう。 /** * @param string mode * @param array option */ public function getHogeList($mode,$option) { 〜〜 } そういえばフレームワークを触りだしてからsql書かなくなったなあ。 いい傾向なのか悪い傾向なのか。。。
672 :
nobodyさん :2010/01/07(木) 00:33:07 ID:hFey0NAx
おもろいよCakeは
Table A, Table B, Table C の三つのテーブルがあって A.b_id, B.c_id というリレーショナルを行っています (二つとも belongsTo) A を扱うモデルの find で recursive=2 の設定で C テーブルのカラムまで取得出来るのですが conditions の検索条件で 'C.hoge' => '123' のような事は出来ないのでしょうか? B までのカラムなら検索条件に含める事は出来るのですが リレーションのリレーション以上のテーブルの検索条件が行えなくて困ってます
あれだな。 生PHPは徒歩、cakeは車。 目的地まで行くのはめちゃはええけど、 渋滞にはまるとまったく進まないし、 目的地についても、車止めるところを求めてさ迷う
健康の為に1日1万行歩きましょう
Hetemlの共用SSL環境下では、CakePHP使えないのかな? 設定をあれこれ変えても、どうにもCSSなどの設定が合わないよ。使えた人、いる?
>>675 まあ一理ある。
時間と手間が許せるなら
足で歩いたほうが色々といいよな・・・
>>675 >>677 オレは、車の長所短所、危険性を良く理解し
交通事故を起こさない様に常に注意し、便利な「車」を最大限に活用してるなあ。
やっぱ「車」のない生活は考えられない今日この頃です。
>>676 SSLって導入するにも手間で面倒だし、
一般ユーザーはSSLのこと気にすら止めてない。
しかも情報が流出するのはSSL関係なしで流出するから必要ないような気もするけど
どうなんだろ。
仕事でサイト作る時は、何か問題が起きた時にSSLもやってないのかよ! と必ず突っ込まれるので、とりあえず設定するという感じだよね
SSL = Secret service line あまり知られてないんだがな豆知識
なるほど、SE=Service Engineerみたいなもんか 以下、ネタにマジレス禁止
興味本位でUML図みたいなの書いてるんだけど 例えばpostモデルがあったとして、 ・ユーザーがページをクリックすると、postデータ一覧が表示される [ユーザー] --ページをクリック--> [controllers/posts_controller] --function:view--> [views/posts/view.ctp] ├--データ取得--> TBL[posts] └--ページを返却--> [postデータ一覧ページ] 何が何を呼ぶか、みたいな関係図を書くとこんな感じになるとおもうんだけど この場合、modelってこの図には絡まないの? ・リレーション定義 ・登録時のバリデーション なんかは明示的にモデルに書くからわかるんだけど、 独立したモデルから単にデータを引っ張ってくる場合に、関係図的にモデルはどう絡むんでしょうか。 絡まない、が正解?
書き込んでから落ち着いて考えたら、自己解決しました。失礼しました(ヽ'ω`) ・ユーザーがページをクリックすると、postデータ一覧が表示される [ユーザー] --ページをクリック--> [controllers/posts_controller] --function:view--> [views/posts/view.ctp] ├─function:find('all')--> [models/post] --> TBL[posts] └─ページを返却--> [postデータ一覧ページ]
cakephpで掲示板サイトを作ろうと思っています 書き込みにトランザクションを使おうと考えてマニュアルを見ると saveAll()が使えると書いてありました。 しかしこれはひとつのモデルにしか使えないのでしょうか。 いくつかのモデルで書き込みを行ってからコミットしたいのですが 方法があれば教えて下さい。よろしくお願いします。
>>685 saveAllは「関連づけされた複数モデルのデータの保存」か「ひとつのモデルの複数データの保存」に使う。
それ以外の場合は、自前でトランザクションを発行すると良い
>>686 これさ、「ひとつのモデルの複数データの保存」出ない時もsaveAll()使えば、トランザクションの事気にしなくてもいいんでない?
トランザクションってなんですか? 馬鹿でも分かりやすい説明お願いします
馬鹿には知らないほうが良いことがある
トランザクションってなんですか? 天才でも分かりやすい説明お願いします
天才はトランザクションという文字を見ただけで全てが分かる
英語がわからないときには、単語を分割するとわかりやすい この場合、トランとザクションを調べれば済む
説明できないんだろwwwwwwwwwwwwww まじCakePHP使いはm9(^Д^)プギャーが多いなwwwwwww
理解しなくても作れるからな。その代りセキュリティーホールがいっぱい(笑)
作れてないじゃんw
>690 ヒント:今年の干支
山羊だっけ?
トランザクションって コミットとかでしょ? SQLのことだから別に知らなくても問題ない。 cakephpが勝手にやってくれるし。
cakephpが勝手にやってくれるし。
イヤン・・・ハクション
cakeって頭いいんだな
自律型フレームワークなんだな
オレはMS Accessっ子、ブリオクエリっ子で、RDBは線で結ぶ方法しか知らなくて、SQLは 読めも書けもしない。だからCakePHPのfindとか、saveとかメチャ好きなんだけど、 SQL書ける人は、「Cakeのfindとかsaveとか覚えちゃられねーよ。 汎用性のあるSQLで書くのが一番じゃね。」と言う人も多いのかなあ? それでもヤッパCakeのfindとかsaveとかは、直感的で効率的で便利と評価されるのかなあ?
普通に入れたり出したりしてる分には楽だけど、集計とかロジックとか入れたい時はむしろ邪魔に感じるな 生SQLをqueryに投げた時、結果の格納のされ方にクセがあってちょっと戸惑った
>>704 お前の文体嫌いじゃないぜ
SQLについては直感的というか効率&汎用性を考えて使い分けることもあるという程度かな
SQLとか楽に処理してくれなら わざわざ覚える必要無いだろ もう俺SQL構文愛してぺろぺろしたいくらいですって言うなら別だが・・
union 使ったり、 めんどくさい条件とか使うときは生SQL。 ちょとしたデータの操作はcakeを使ったます。
質問なのですが、皆さんはテーブルの結合を行いたいとき、プログラム内で随時 JOINをしているのですか? 俺はMySQL側でビューを定義して、そのビュー用のmodelを定義して、それ経由で データの取得をしてます。 プログラム内でjoinのほうが各段に速いとか、明確な優位性はあるんでしょうか?
cakePHPでなんか作って配布する場合 appフォルダのみ配布するべきか、cakeも含めたフォルダを配布する どっち?
>>710 appとvendorsに何も入っていない時のcake本体をzip圧縮した場合のファイルサイズは約1.6MB
vendorsにも何か入れる場合が多いし、高々cake本体1.6MBだから、cakeも含めたフォルダを
配布するなあ。cakeはhtdocsの下へ配置すればどこでも動くので、この配布の方が安心で手間
いらずだと思う。
>>711 アザーズ!
landとかいう無料サーバーにCakephpアップしたら時間かかったから
気になったんだよぇ〜
Cakeはリリースバージョンによって、安定板パッケージでもイロイロエラーを含んでいるので、 丸ごとパッケージにする。 ※以前、Authコンポーネントでうまく認証がかからないエラーがあった
$_POSTの値の文字コードをチェックしたり変換する場合、どこでこの処理書いてる?
>>715 appコントローラーの beforefilter に一票。
>>716 なるほど継承してすべてのコントローラに対応できますね
今までのCakePHPと CakePHP1.3は別物ですのでご注意を というより改名すべき 焦げちゃったPHPとかにね^^;
クッキーPHPとか?
cakephpのバージョンが上がるたび、覚えにくくなる。 技術の進歩とともに自分の老化が。 バージョンアップに対応しなくていいやって思ったら技術者としてだめだよね。
>>723 バージョンごとの差異を覚えるのは俺も苦手
まっさらな状態から覚えた方が覚えやすいよ
新しいJsHelperとやらでJQueryっぽいメソッドチェイン出来るっぽいね 激しく期待。つか標準でscriptaculous以外をサポートしたのって1.3からだよね $js->get('#foo')->event('click', $eventCode);
JQuery用ヘルパー作ってたけど無駄になりそうだ。 でもJQueryをCakeのAjaxHelperの書式に合わせようと思ったら結構無理があったから、 標準でこういう書き方できるようになるならいいや。
JQueryって書くとJavaっぽくなるな
?
小文字にしろ、ということだろう
mootoolsの事も忘れないでください。
最初のsqlテーブルの組み方が重要だねこれ。 ミスるphpコードが複雑になる。。。
>>732 フレームワークは規約を守ってナンボよ。
DBのデザイン間違ってたらどうにもならない
まあ自己中にはフレームワークはあわんだろうな
cakeに限った話じゃないけど function getEmail() とか function setApple() とか function のあとの、大文字にした方がいい部分ていうのは明確な決まりがあるのかな。
明確な決まりって言うか、読みにくいでしょ getemailとか setapple --------------- getEmail setApple
738 :
nobodyさん :2010/01/22(金) 02:16:00 ID:fZt9z1/I
基本キャメルケースだけど、別にアンダースコアでもいいと思う
入れてみたけどIDEって何使うのがいいのかな? Visual stadioでしか開発した事ないのでテキストエディタ まんまでは違和感が。
VSからならPDTがいいんじゃね。重いけど
744 :
742 :2010/01/27(水) 07:23:15 ID:???
>>743 Eclipse+PDTですかね。レスサンクス。
PDTとcakeを同じサーバーにインストする方法は簡単だけど、
サーバーと開発環境がリモートだと結構設定が難しそうですね。
調べないと……。
>>743 おれ、netBeans使ってる。
cakeのメソッド類を入力補完リストに表示させるため方法は、Eclipseの方法がそのまま使えた。
Eclipseより快適です
リモートデバッガならzend studioなのかな。xdebug? 俺はマカーにスイッチしてからはTextMate一本になった。 cakeのsnippetも本家theChawでgitレポジトリが作られてるし。オススメ。 マカーにスイッチした際は是非。日本語怪しいけど。
トランザクション用に、select for updateを発行したいのですが、Cakeでどうにか実現できる方法はありますか?
IDE使ってる人多いのね 自分は普通にviだわ 公式サイトのcompareページはnoindexしてほしい
ページ毎に表示変えたいんですけどどうすればいいですか? エレメンとでファイルを呼び出すって感じですか?
750 :
nobodyさん :2010/02/02(火) 06:59:25 ID:xXDrlP2U
Cakephpってプロジェクトに cakephpのファイルを毎回ぶち込んで使うって解釈でOk? PEARみたいにPHPとかにインストールするんじゃなくて
どこかを書き換えれば共通に出来る
>>750 インストールではない(解凍のみで使用可能)
基本的には、webroot/index.phpとwebroot/test.phpの定数を書き換えれば、どこにでも置けるから共通化が可能
プロジェクト名も変更可能
でもオススメはシンボリックリンク使って定数の書き換えをしないようにすることかな
753 :
nobodyさん :2010/02/02(火) 15:16:37 ID:zKiQz/op
共通にしちゃうと、特定のプロジェクトのみアップデートしたいときとかに困りそう
>>753 やっぱCakeは本体は一つで共有で運用するのが基本でしょう。
756 :
752 :2010/02/03(水) 16:21:18 ID:???
なんと! 俺が異端なのかなあ? ずっと前の勉強会で、ブルーオーシャンだかどこかも、個別にしてるって言っていた気がするんだけど。 「stableで作っても、全然stableじゃなかったりするのでアップデートするときに問題が起こるかも知れないので」 って説明してた気がする。
俺も個別。 動作確認時からフレームワーク部分が変わってしまうとバリデーションを行うのが大変。 運用後は原則変えないようにしてる。
>>756 >>752 は おいらなんだが・・・
えっと、coreを共通にするって話と、アップデートを個別に行なうって話は別だと思うよ
基本的には最新バージョンにリンク先を向けておいて、必要に応じて旧バージョンに向けることにしてる
759 :
753 :2010/02/03(水) 17:57:26 ID:???
>>758 Windowsサーバで運用してたので考え付かなかった。
確かにLinuxサーバとかだとそっちのほうがスマートだ。
Windowsにもジャンクションってあるよ
>>763 一応言っておくか「宣伝乙」
まじめな話、そういう問題じゃないだろ
ケータイに限らず、URLにコロンが含まれていておkなのかという話なのだから
誘導されてきました Cakephpのモデルって 元からDBアクセスのためのメソッドが用意されてて コントロール側でクラスを呼び出して実行すればOK? モデルクラスは定義で使うのがメインって感じですか?
>>765 そう。Controllerから
$this->User->find('all');
のように使う
モデルは、バリデーションルール他を書くだけでなく、ビジネスロジックを書くところとして使う
$this->User->originalMethod(); のように使えばよい
>>3 このCakePHPで高速Webアプリ開発の本って尼で評判悪いな。
あれは論外。
アレはそういうレベルの話ではないが、まあ、この辺でやめておく。
CakePHPガイドブックは2007年発売だけどね 単独書籍としては2冊目のはず
>>769 それでいまつくってるけど
<p><?php echo $form->input('Task/content') ?>
<?php echo $form->submit('タスクを追加') ?></p>
が
$html->inputになってる
古い版みたいだけど
1.1対応だからしゃーない 1.2対対応のガイドブック、ポケットリファレンス、実践ウェブアプリケーションあたりが良い
あきやんの本はアレだけどgihyoで連載してCakePHPを世の中に知らしめた功績がある
akiyanがどうこうとは言っていないよ。 あの本は、構成とか編集がおかしいから論外だと言っているだけ。
1.2.6のzipはダウンロードできますか? tgzは落とせるので問題はないのですが・・・。
>>779 2010/2/7 20:58現在、1.2.6 zipはダウンロード出来ませんでした乙
Windowsでもtgzは解凍すれば使えるのでしょうか?
ググれカス
782 :
779 :2010/02/07(日) 22:43:52 ID:???
>780 確認していただき、ありがとうございます。 1.2.5のzipしか落としたことがなかったので 詳しいことは分からないですが、 tgzを解凍したファイル構成は異なるものだったので cakePHPが初めてでなければ問題ないように思います。 1.2.6のzipはURLを直接たたくと落とせます (リダイレクトで失敗するようです)。
paginationって /comments/view/10/page:2 みたいなURLが普通だと思うけど、 今試してみたら /comments/view/10?page=2 とか /comments/view/10/?page=2 でも動いちゃったんだけど、これって公式にサポートされてる機能?
普通が逆だろ Cakeが独自にルーティングしてるんだよ
786 :
780 :2010/02/08(月) 20:42:28 ID:???
>>784 CakePHPのpaginatorの記法は
>>784 が言うようなのが普通でしょ?
俺も試してみたけど、どうやらcontroller側は
>>784 でも正しく解釈してくれるみたい
limitとか他のパラメーターもOKでページングも正しく動いた
どうやらnamedされたパラメータがなければGETパラメータを使ってくれるみたい
ただ、helper側はそれに併せてくれるわけではないので$paginator->next()とか使えば
基本のpaginatorの記法になるね
いやWebのURLの大原則として?と&だろパラメタは それをCakeが勝手に整形してるだけだから
790 :
784 :2010/02/09(火) 00:33:43 ID:???
>>789 スマートURLが基本なのにGETパラメーターでもきちんとpaginatorのパラメータとして扱われるって話だよ?
それとも?controller=commentsとかでも動くって話?
いやだからCakePHPだって普通のWebあぷりけーしょんなんだからさ
つうか、":"を使ったnamedパラメータの値に"?"を渡すとそこでリクエストパラメータが豚切れるのが気になる 2重3重にURLエンコードしても同じ。 ?xxx=yyyがnamedパラメータとして使えるんなら、今度からそっちを使うようにする
>>775 この本かったら序盤にDOS窓使ってBakeしろってかいてあったけど
Bakeってネットにアップするときとかにつかうわけ?
$this->dataとかの $thisって何をさしてるんですか? ビューから送られてきた値? コントローラーのこと?
>>794 PHPのクラスについて勉強してください。
Cakeのお話ではありません。
>>793 > Bakeってネットにアップするときとかにつかうわけ?
ちがうよ。グダグダ言ってないで動かしてみればすぐわかるじゃん。
動かしてみろよ。
>>775 > この本かったら序盤にDOS窓使ってBakeしろってかいてあったけど
てか、この本って「古典」だよ。古代のCakeについての歴史を勉強したいなら
とやかく言わないけど、現代はCakePHP1.2がstableだよ。
>>794 場合によって違ってくる。
なのでコントローラーやビュー、モデルで
pr($this); をやりまくれば感覚的にわかってくるよ。
>>792 最近同じようにnamedで/(スラッシュ)を渡そうとしたらダメだったんで
その部分は?でやることにした。
?xxx=yyyはnamedじゃなくて$this->params['url']でやってくるからそこから取り出せばいいよ。
PHPやWebの仕組みを知らない奴はまずそっち勉強した方がいい さすがにthisってなんですかとかUrlが?でも渡せて疑問とか プログラマとしてどうかと思う
コンポーネントでログインチェックを行い、 認証できない場合はrenderにてログインエラーページを指定していますが、render以降の処理(コントローラで定義している処理)が実行されてしまいます。 コンポーネントなのでreturnを使ってもコントローラに戻るだけですし、exitをするとrenderもされません。 コントローラでログインチェックするべきなのかもしれませんが、複数のページに実装するプログラムなのでコンポーネントにまとめています。 どのようにしたらその後の処理を行わないようにできるでしょうか?
>>801 AuthComponentじゃないんだよね?
その前提で。
renderじゃなくて、redirectじゃないかな?
Model User, Boardがあり、それぞれ、hasMany, belogsToの関係です Userをfindした際、associationで複数個取得されるBoardを、条件で絞り込みたいのですが、 これはUserを取得した後、PHPで処理するしかないのでしたっけ?
>>803 絞り込みをずっと使うならUserモデルのhasManyのBoardのconditionsを設定しておく。
でなければUser->bindModelで同じように条件を設定するかcontainableビヘイビアを使うとか。
マニュアルの「モデルを結びつける」の所はよく読んでおくといいです。
apiドキュメント、翻訳されてるのは1.1のみで1.2は英語のみなんですよね?
>>804 なるほど
必要なとこだけbindModelで設定しなおす方法もありですね
ありがとうございます
モデル、ビュー、コントローラってどうしてそういう呼び方になったの? まあ、ビューは分かるとして、ほかは関係なくないのかな。
ポカーン
モデルはともかく、コントローラはそのままじゃないか
モデルもデータモデルだからそのままだろ
こんにちは。本日cakephpを始めました。 もしよければ質問させてくださいませ。 ロリポップサーバでwordpressを運用しております。 phpmyadminでcakePHP用のデータベースを新たに作成できませんでした。 この場合、wordpressとcakephpのデータが混在しないかなと心配なのですが、 それほど心配することはないでしょうか? それとも、もう一つアカウントを契約してやらないと後悔することになるのでしょうか?
◯ホール目っていうスレタイ、次から変えた方が良くないか 初見のときセキュリティホールだらけなのかと思ったぞ ケーキの数え方にかけてるってのも伝わりづらいし
おいおい、85なんて余裕で突破してるし
誤爆った
>>4 ガイドブックってもう品切なんだね。
他にいい入門書ないのかな。
>>813 テーブル名にprefixをつけられる
たとえ複数のCakePHPを同一DBで使っても混在しない
>>814 賛同を得られる対案だせば自然に変わると思うよ
プログラム始めてでPHPを勉強中です。 初心者用の参考書を数冊読み、ある程度の文法知識、簡単なフォーム、アンケートなどは 作れるようになりました。 はやくアプリを作れるようになりたいので、背伸びしてCAKEPHPをかじることに決めました。 CAKEPHPを使うにあたって、ここらへんは予習しておけ!という部分はあるでしょうか? 【現在の知識】 ・PHPの基本的な文法知識 ・MySQLの簡単な知識 ・HTMLやCSSの基本的な知識 ・エディタはPHPeclipseなどを使用中 【勉強予定】 ・PDO(データベース) ・PHPのクラス 現在、ユーザー関数はなんとか理解できるのですが、クラスの理解があやふやです。 このオブジェクト指向の部分がわからないとCAKEPHPを使えないかと思い、悪戦苦闘中です。
>>821 やる気だけあれば あとはキミ次第だよ
ここで聞く暇があったら、アプリをひとつでも多く作るんだ!
>>821 クラスはまず基本を一読して、簡単なクラスでも書いてみればいい。
Cakeやるのにクラスは必須ではないよ。
Cake触ってからまたクラスについて勉強すれば理解が進んでるかもね。
>>822 の言うとおりまずは作り始めて分からないところを補強すればいい。
>>822 >>823 どうもありがとうございます!
まずは触ってから補強という方法でいこうかと思います。
>>814 洒落が効いてていいじゃないか。
2スレ目からの伝統だし、愛着あるなぁ。
そもそも
ホール === セキュリティホール
なんて思い込みどうでもいいじゃん。
>>814 ホールケーキをすぐにイメージできないの君だけ
だいたい、ケーキの数え方なんてのも違うし、ケーキは1台2台だ
数え方って言うより 何ホール食べちゃったよ!的なニュアンスでかわいいと思う。
829 :
nobodyさん :2010/02/10(水) 16:28:54 ID:UrqttIc/
>>784 公式サポートかどうかわからないけどpaginatorの中で
$options = array_merge($this->params, $this->params['url'], $this->passedArgs);
というふうに書かれているので、namedパラメータだけじゃなくてGETパラメータでも大丈夫だと思う
>>789 cakeではnamedパラメータとGETパラメータは別の扱いだよ
830 :
nobodyさん :2010/02/11(木) 01:16:16 ID:SsYIk7V8
質問! userModelとprofileModelがあって、 それぞれアソシエーションhasoneで連携してます。 userModelのdeleteアクションを作って実行すると、 データを削除できません。 ただ、 ・User hasone Profile ・Profile belongsto User にすると削除できます。 なぜお互いにhasoneだと削除できないんですか? (最初はdependentの設定かな、と思ったけど、関係なかったです。)
>>830 削除できない理由はよく分からないけど、アソシエーションの設定が間違っていることが原因かと
A hasOne B
B hasOne A
ということは、Aにはb_idが、Bにはa_idが必要(お互いに外部キーが必要)
(片方がhasManyならよくあるケース)
で、質問の例の場合は A hasOne B のケースで、その場合、必要に応じて B belongsTo A をする
この場合外部キーは B.a_id のみ
お互いを hasOne にする時なんてあるの? どっちかが belongsTo になると思うんだけど。
834 :
nobodyさん :2010/02/11(木) 15:08:47 ID:RWXIN9Dn
cake1.2のbakeで質問です。 User hasMany Question Quesion belongsTo User 上記のアソシエーションを設定し、Quesionのindexビューをbakeしました。 bakeされたindexビューではQuestionのuser_idではなく、 $Question['User']['name']が表示されます。 この動作は、CakePHPのフィールド名の規約(modifiedのような)によるものなのでしょうか?
>>834 そう。nameかtitleが使われる
displayFieldで変更が可能
836 :
830 :2010/02/11(木) 17:46:29 ID:6DwJ8Mj3
おはようございます。 cakePHPを勉強中なのですが、データベースの差異を吸収できると本に書かれております。 ということは、PDOとかは基本的には使わなくても、様々なデータベースに変更しやすいと考えてよろしいでしょうか?
840 :
837 :2010/02/12(金) 09:41:33 ID:???
どうもありがとうございます。 あほな質問ですいませんでした。
cakephpのlogファイルが容量増え続けるんだけど、logの記録を一切しない設定とかってないの?
>>843 あれ?debugが0であれば$this->log()使わないと記録されないという認識だけど違った?
error.log ということは何かしらのエラーがあるわけだから、 エラーの内容を解決したほうがいいんじゃね
debug0 にしてんだけど、debuglogとかerrorlogが書き込まれていく。 たしかに解決したほうがいいんだけどそこまでするようなサイトじゃないので サーバーを占有しないように log系一切無しにしたいんだけどなぁ。
エラーあっても警告しないようにFW自体改造するしか無いんでは… というか、よく気持ち悪くないね。エラー出しっぱなしで
1 <?=$result ?> 2 <?php echo $result; ?> CakePHPでは1と2は同じ意味なのでしょうか? 参考書では1の書き方で書かれているのですが、 自分の環境では2の書き方をしなければ動いてくれないのです。 動作環境はxamppの最新版です。
>>848 cakephpじゃなくても、一緒の意味。
ただし、php.iniの設定で shortopentag が有効になっていないと使えない。
>>849 もやもやがすっきりしました。
ありがとうございます!!
質問です。 トップページ(default.ctp)の中に設置しているフォームから送信された文字列を 個別ページ(view.ctp)で表示している本文の一部に代入したいんですが、 どうすればいいんでしょうか。 本文の中の代入したい部分に$wordとか入れてみても駄目だったんですが、 どこで処理すればいいんですか。 echo $post['Post']['body']; echo $word; みたいに並べることはできるんですが、これでは混ぜられそうにない。
>>851 もうちょっと具体例で示してちょ。
何をやりたいか、さっぱりだわさ
>>851 controller側でsetしてますか?
function view(){
if(isset($this->data)){
$this->set("post",$this->data)
}
}
854 :
853 :2010/02/16(火) 13:02:27 ID:???
>>851 ごめんちゃんとみてなかった。
sprintf()使うとかじゃだめなんかな
>>851 $post['Post']['body'](本文)のなかに $word の値を埋め込みたいということ?
>>851 debug($this->params) で、フォームからコントローラーにどういう値が送られてるのかを見る。
それで必要なものを$this->setでセットしてビューで表示。
みんなのエスパーぶりに感動した
いくらなんでもsetや配列のチェックぐらいはこころえてるんじゃ…?
データベースのテーブル名を "Boards"とした時、 CakePHPのコントローラ内では "Board" として、 "s" と削除した名前を指定しないといけないのでしょうか? class BoardsController extends AppController { public $name = 'Boards'; public $uses = array('Board','Personal'); } 「CakePHPによるWebアプリケーション開発」という本によると、 s がついたりつかなかったりして少し混乱しております。
>>860 ありがとうございます!
そういう規約だったのですね。熟読いたします。
>>861 こんな便利なツールあるよ。
http://www.cpa-lab.com/tech2/inflects/ 例えばDB テーブル名をchildren(子供)にした場合
DB テーブル名 =>children
Controllerのクラス名 => ChildrenController
Controller名 => Children
Controllerのファイル名 => children_controller.php
Model名 =>Child
Modelのファイル名 => child.php
不規則な複数形にもCakeは対応してる。オレより頭いい。
>>862 ああこれは便利だね。
欲をいえば、cakephpで既に使われているクラス名(Fileとか)を弾いてくれるとうれしいな。
865 :
nobodyさん :2010/02/19(金) 19:02:24 ID:o9GNlhpe
スレ違いだったらすいません。 cakephpは中小規模向けって色々書かれているのを見るんですが、 大規模、中規模、小規模の定義ってなんですか? ユーザー数ですか?機能ですか?
ぐぐれ
>>865 大規模:コンピュータシステムが大きい規模
中規模:コンピュータシステムが中くらいの規模
小規模:コンピュータシステムが小さい規模
記事を書いている人の勝手な思い込み説
>>867 大規模 アマゾン
中規模 ブックオフオンライン
小規模 街の古本屋さん
大規模:AKB 中規模:モーニング娘。 小規模:Perfume
大規模:こち亀の中川 中規模:タルるートの原子力 小規模:スネ夫
872 :
nobodyさん :2010/02/20(土) 01:35:31 ID:Zor8hgfe
大規模:大便 中規模:中便 小規模:小便
中便ってなんやねん ゆるゆるの…
屁がまじって生クリーム的にフワフワな便なら出たことあるけどな
>>875 フワフワっておいしそうだな
そんな便ならスカトロできそうだな
>>868 賛成
CakePHP1.2は小規模、中規模、大規模のオールマイティで活用出来ると思う。
symfonyは、大規模、中規模向けで、小規模には向かないと思う。
どのFWでもどの規模でも行けるよ基本的に ただSymfonyはCakeやZendに比べて動作が重い
なぜ標準であるライブラリをApp::import で読み込まないと使えないのでしょうか? どうせなら、他の機能と一緒に標準で搭載しておけば楽なのに。 あまりに機能を標準で入れすぎると重くなるからかな? 初心者の素朴な疑問なのですが、誰か教えてくださいませ。
コントローラで処理した後に、処理前のページに戻るにはどう記述すればいいですか? ググルにもキーワードがわかりません。><;おねがいします
>>880 外してるかもしれんが、元のページでURLをセッションにでも入れておけばいいんジャマイカ?
え、redirect?
>> 887 大規模ってかデザイナーがPHPわからない人のときでない限り 必要ない?
>>884 887 ってどれ?
デザイナーがPHP解ってたらフレームワーク要らないってこと?
デザイナーが作ったプログラムなんてメンテナンスしたくないぞ。
> デザイナーが作ったプログラムなんてメンテナンスしたくないぞ。 デザイナーが書いたPHP入りテンプレートの話でそ?
>>884 Symfony しっかり作るぞ(商売用ケーキ)
Cake サクッと作るぞ(おいしいケーキ)
Zend Fr 自分で作るぞ(うまいかどうかは作り手次第)
レベル低く
CakePHPと相性のよいエディターはなんでしょうか? eclipse PDT, Netbeans, notpad++ などが海外の掲示板には挙げられていましたが。 コード補完機能を出来る限り使いたいのですが、netbeansもeclipseもサポートしてないし。
俺はPDT使ってる
netbeans使ったけど、微妙だったな。 eclipse よりはマシだけど。 コントローラーからショートカットキーで モデル、ビューに飛べたら便利だと思うんだけど。 できないよね?netbeans。
TextMateにcakePHP bundleだろjk
一つのコントローラーのアクションで色々な処理する場合って、他のモデルも読み出すよね。 で、コーディングしてくとどうしてもコードが煩雑になる。 なのでそれをモデルにまとめたいんだが、まとめようとすると 「モデルから他のモデルを読み出す」 処理が必要になる。 モデルから他のモデルを読み出すのはやっぱりよくないのかな。 こういう場合はコントローラー多少煩雑になってもコントローラー内で処理を終わらせるべきか、 コントローラーが煩雑になりそうだったらモデルからモデルを読み出す処理をした方がよいのか。 どっちがいいんでしょうか。
モデルってDBのエンティティのことだろ? なんでロジック記述すんだよ?アホか。
>>897 CakePHPのモデルはDBのエンティティとしてだけでなく、ロジック書くところとしても使われる
>897 日頃modelに何書いてるんだ?
ポエム
JavaだとビジネスロジックはActionには書かずに Serviceクラスとか作ってそこに書くんだけど、 CakePHPだとActionクラスに書くの?
ビジネスロジックをActionに書き始めたのはJavaだぞ
>901 コンポーネントじゃね?
基本的なことで申し訳ないのですが、 = と => は同じような記号とイメージしてよいでしょうか? 1 $name = "boku no name"; 2 var $validate = array( "name" => VALID_NOT_EMPTY,) 上記の1の = と 2の => は似たような記号な気がするのです。 PHPを勉強するのいたって = は 右側の内容が左側の変数に入るとイメージしています。 => はどうイメージすればよいのか、よければご教授いただきたいです!
>>905 ありがとうございます!
配列だから => だったんですね。 イメージがぼんやりとつかめました。
こんな初歩的な質問をしてしまいどうも失礼いたしました。
909 :
nobodyさん :2010/02/27(土) 15:53:26 ID:jm7DAOhI
>>639 と同じ現象で困っています
どうやら改行コードがURLとしてマッチしてしまっているので、改行以降も勝手にURL扱いになってしまうようですが、
他に同じ現象の人はいませんか?
CakePHPはDBが無ければ動かないポンコツFWだって聞いたんですけど本当ですか? DB使わないソーシャルアプリ作ろうかなんて時には役に立たないポンコツなんでしょうか?
>>910 心配しなくても大丈夫
controlleに
var $uses = array(); //modelを使用しない
と1行記述するだけで、DB使わないアプリが書ける
(他にもニーズに合わせた書き方が色々あるが)
>>909 僕も同じです。
ところで
if (isset($this->params['pass'][0]) && $this->params['pass'][0] == 'csv'){
Configure::write('debug', 0);
ob_start();
}
その変数が定義されていて、なおかつ○○なとき っていうのは
上記以外にスマートな書き方ってないのかなぁ。
知ってたら教えて下さいませ。
DreamWeaverを使うならHTMLヘルパー機能は特に必要ないでしょうか? HTMLヘルパーを使うと重くなるという噂も。
>>913 htmlヘルパーは使わなくていいと思うけど、formヘルパーは絶対使った方がいいよ。
入力ミスしたりしたときに再度入力しなおさないといけなくなったりして
ユーザビリティが悪くなるから。
formヘルパー使うとnameが必ず data[Model][Field] になるのがうっとうしいよなぁ
はじめまして、こんにちは。 携帯向けHPを試しているんですが、 DoCoMoの携帯電話が外部CSSを読み込めないことを知りました。 そこで、HTML_CSS_MOBILEを見つけたのですが、 CakePHPに導入するにはどのソースに記述すればよいのでしょうか。 質問がCakePHP以前の問題かもしれず恐縮ですが、 よろしくお願いします。
916です。 CakePHPのバージョンは1.2.5です。 よろしくお願いします。 失礼しました。
>>916 Viewクラスを継承してオレオレViewを作って、renderを書き換えるとかかな。
class OreoreView extends View{
function render($action = null, $layout = null, $file = null){
$out = parent::render($action , $layout , $file);
//$out に処理
return $out;
}
}
コントローラーで、$this->view = 'Oreore';とかすれば切り替えできるし。
919 :
918 :2010/03/03(水) 17:47:15 ID:???
ああコントローラーのafterFilterで$this->outputをいじる方がいいのか。 使ったこと無かったんですんません。
>>921 afterLayout()のほうが適切だと思いますよ。レンダリング結果を操作する場合
>>923 なぜ「っ」を省略するの?
私の知っている人もそれやるんだけど。
流行ってる?
性差で調和を取り繕うのがしっくりきている潜在的ゲイの可能性あり
そう、スイーツ大好きなんだよ
>>926 ┐(´ー`)┌オイオイ
仲良くやろうぜ
>>923 afterRender()のほうがしっくりきますか。。。
ちょっとマニュアルみてみます。
何度もレスありがとうございます。
>>924 古い2ch語じゃない?
相当昔からあって当たり前すぎて
今さら疑問を持つレベルじゃないとおもうけど・・・・
UsersControllerに_getNameという、ユーザーの名前を返すメソッドを作って、
それを他のコントローラーからも利用したいんだけれども、やり方がわからん。
そういう場合はコントローラーじゃなくてコンポーネントに書くべきなのかね?
別のコントローラーのアクションを呼び出したい場合にはrequestActionを
使えばいいみたいだけど、どうもそれはviewから呼び出すように作られているので
単純にメソッド利用するのとは挙動が違うみたいだし。
>>912 それしか書き方思いつかないなあ
すみませんが、誰か教えて下さい。 CentOSに乗っけたCakePHPからSQL Server 2005につなげたいんですが database.phpの記述の仕方が分らなくて困っています。 色々調べてたところ「'driver' => 'mssql'」では繋がらないみたいで、 代わりにodbc経由なら繋がるみたいな感じでしたので odbcを設定し、isqlで接続できるところまで確認しました。 このodbcの設定をdatabase.phpにどのように記述したらよいのでしょうか? CokePHPのバージョンは 1.2.6 です。 よろしくお願いいたします。
933 :
930 :2010/03/04(木) 16:22:21 ID:???
>>931 なるほど!
コントローラーとかコンポーネントに書くというのが思いっきりBad Cakeな考えだった
ありがとー
>>923 afterRenderだと$this->outputをいじるのは間に合わなかった気がする。
というわけで自分はafterFilterに一票。
936 :
934 :2010/03/04(木) 19:04:12 ID:???
やっぱ
>>934 は間違いかもしれないので、なかったことにしてくれ。
>>935 あー。以前あったなその状況。
キレイな解は思いつかなかった。
ヘルパーからコンポーネントにアクセスするか、dry無視して重複させるか
で、前者にしたな確か
JavaならXxxUtilsクラスとか作ってstaticメソッドにするけどな。 そういう融通は効かないのか?
うんクラスにしてvendorに入れておけばいいと思う。 で、App::importか、もうしょっちゅう使うならbootstrap.phpでrequireしておいてもいいし。 コアライブラリのInflectorとかの扱いが参考になるのでは。
たしかにブラウザ判定だからそうだね でもコントローラーやヘルパーの処理が重複しちゃう時がたまにあるのよねえ
どなたかCake初心者の自分にお助けを。 ユーザーごとに、表示データを変更するにはBelongTo機能でしょうか? 【フィールド】 ・本 ・価格 ・感想 【ユーザー】 ・ユーザーA(4冊の本を登録) ・ユーザーB(6冊の本を登録) 上記のような形で、 全員のデータを表示したり、登録ユーザーごとのデータを表示したりとしたいのです。
>>941 そもそも根本的にリレーションというかデータベースを理解してなさそうだな。。。
とりあえず
users
books
reviews
の3テーブルで作り直すんだ
>>942 そうなのです。
データベースの基礎からやり直した方がよさげということですね。
了解いたしました。
945 :
944 :2010/03/06(土) 23:03:05 ID:???
データベースの基礎までやらなくても、cakePHPを使う上でのセオリーみたいなのを 勉強したらいいように思うけど。
947 :
944 :2010/03/06(土) 23:23:48 ID:???
>>946 なるほど。Cakeベースでリレーションの基本を学ぶ方向で行きたいと思います。
ちなみに、
>>945 のリンクは普通のユーザー登録で、リレーションとは関係ありませんでした。。
cake リレーション、 および アソシエーション でググって勉強したいと思います!
Security.levelをmediumに変更して使っているのですが、これだと Session.timeoutが120なので200分でセッションが切れることになります。 しかし、gc_maxlifetimeのデフォルト値1440秒(24分)以上経過すると1/100の 確率でセッションが切れるようです。 timeoutの値に応じてこの値を変更する処理をCakePHP側に仕込む、という ような話がCakePHP内で出たことはあるでしょうか。それともこれは開発者が 自分で変更すべきという指針なのでしょうか。ご存じの方教えてください。
949 :
nobodyさん :2010/03/08(月) 09:49:22 ID:qs9QxycI
すみません。どなたか教えください。 $cake bake でModelを作成しようとして、進んで行き、 バリデートの作成で 「Would you like to supply validation criteria for the fields in your model? 」 と聞かれた際に「y」で先に進んだ際に、 バリデートの種類を選択できずに、(普通なら対話式で1 - alphaNumeric 等が選択できると思うのですが…) 普通に「Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n) 」 というアソシエーションの選択の質問に進んでしまうのですが、 なぜだかお解りの方はいらっしゃいますでしょうか?
AuthComponentとmodelのvalidateって、どうやって併用するんでしょう? model.validateが成功したらAuthComponentのログインをしたんですが、 方法が全然分りません。 すみませんが、誰かヒントでもいいんで教えて下さい。
>>950 何をやりたいか良く分からんなあ
validate後saveして、すぐログイン状態にしたいってこと?
952 :
950 :2010/03/08(月) 17:05:53 ID:???
AuthComponentだと認証に失敗した場合のメッセージしか無いんで、 ユーザーID未入力や、パスワード未入力といった個別のエラーメッセージを表示したいんですね。 model.validateを、そのまま実装すると認証エラーのメッセージとvalidateのメッセージが同時に表示されてしまうので、 validateのメッセージだけを表示したいです。
cakephp1.2 のページネーションって SQLから取得したデータを加工した場合って ページ数とか求めることできないかな。 例えば 100件のデータがある場合 ・現在の表示件数 min max ・前のページ < 1 2 3 4 5 > 次のページ ってやりたいんだけど。 pear の pager 使って代用しているんだけど、重い。。。
>>954 ありがとう。
paginatorヘルパーを上書きすることで解決しました。
956 :
935 :2010/03/08(月) 22:37:46 ID:???
>>937-940 いろいろ参考になる情報ありがとうございます。
一応vendorに置く方向で作っていますが、毎回newしなければいけないのが不便と言えば不便ですね・・・
>>762 でハマった
何で:なんかで区切るんだ、デフォは=にすりゃいいのに
ほんまやな
<?php echo $html->link(__('Delete', true), array('action' => 'delete', $id), null, sprintf(__('Are you sure you want to delete # %s?', true), $id)); ?> 上記はbakeで作成されたHTMLヘルパーのlinkです。 このlink(__('Delete', true), 部分の (__ やtrueは何か意味があるのでしょうか? 普通に $html->link('Delete','array('action' => 'delete',..... がマニュアルに書いてある書き方だと思うのですが。 どういう意味を持つのか気になって今夜は眠れません。
__の中は翻訳用文章で、あとで一括で多言語化できる nero
>>960 ありがとうございます。
これで安らかに眠ることができます。
アーメン
>>964 ありがとうございます!
「第 2 引数で自動的に文字列を echo 出力するか」 という意味なのですね。
ちょっと気になると頭がモヤモヤするのですが、おかげでスッキリです。
同時に複数のテーブルを更新することはできるでしょうか? 例えば、下記のようなイメージで動かせないかと思っているのですが、 うまくいきません。 【form側で渡す】 <?php echo $form->create('Book'); echo $form->input('Book.name'); echo $form->input('Comment.comment'); echo $form->end('Submit'); ?> 【コントロール側で複数モデルに入力】 class BooksController extends AppController { var $uses = array('Book','Comment'); function edit() { if (!empty($this->data)) { $this->Book->save($this->data)); $this->Comment->save($this->data)); } }
>>966 アソシエーションしてるならsaveAll
してないなら、さきにvalidateだけかける
>>967 ありがとうございます! ハマリまくっていた問題が一気に解決した。。感激。
アソシエーションしているので下記になりました。
function edit($id = null) {
if (!empty($this->data)) {
$this->Book->saveall($this->data);
$this->redirect(array('action' => 'index'));
}
if (empty($this->data)) {
$this->data = $this->Book->read(null, $id);
}
}
上書きではなく、データ追加の動きになってしまったけど、一歩前進。
モバイルとPCを判定してviewだけ分けているのですがキャッシュするとどちらかの画面がキャッシュされて モバイル・PC関係なく表示されます。 view単位でのキャッシュもしくはキャッシュに引数(モバイルかPCか判別させる)を指定することはできますでしょうか?
>>969 モバイルとPCでURLは違うの?
キャッシュヘルパーはURL(正確にはビューの$this->here)を元にキャッシュファイル名を作ってるよ。
>>970 レスありがとうございます。
URLは一緒で変数($mobile)でviewを振り分けています。
Cache::writeでviewをきゃしゅするしか方法はなさそうですね;;
972 :
nobodyさん :2010/03/15(月) 18:25:42 ID:5XgthJTC
スミマセン。インストール方法がGoogleで検索して、調べてのですが、 イマイチよく分かりません。 どなたか、詳しくご教授いただけないでしょうか? 環境 OS:MacOSX 10.5(Leo pard) MAMP + PDT を使用して開発環境を構築したいです。 Cakeのバージョンは1.2。
公式のチュートリアルわかりやすいよ
HTMLの部分はどのように書くのがお勧めでしょうか? 1 DreamWeaverなどを使用するか 2 手打ちでやる 3 HTMLヘルパーを使った手打ち 私は初級者なので1のやり方でいこうと思っていたのですが、 プロの方にDWよりマニュアルで書くのを覚えたほうが正式なフォーマットで 書けるから後々楽だと言われました。最初は難しいけど、覚えれば簡単だと。 そうは言ってもDWなどで直感的にサクサク作れるほうが圧倒的に早いのでは ないかな?とも素人として思っちゃうのですが、どうでしょうか? HTMLヘルパーを駆使したなら、かなり手打ちが楽になるのでDWと同じぐらい 早くなるかもとも思ったりしますが、ヘルパーは重くなったりして実際使われていない と聞いたこともあります。
補足: DWをお勧めしない理由として、正式なフォーマットで書けないから。 正式なもので書けないと、異なるブラウザで表示が変わるようになってしまうと言われました。
>>974 僕は全部DWでやってるけどね。
とりあえず表示する レベル までならcakephpのヘルパーや手打ちでいけるかもしれないけど
ある程度凝ったデザインしようと思うとDWが使いやすい。
ヘルパーを優先的に使いながら 1 の dw を使用 がベストだと思われます。
デザイン関連の話題なので便乗で質問です。 smartyと併用、っていう方は多いんですか? phpはcakeから始めたのですが、いまいちsmartyを使うメリットが見えないんです。
自分は
>>976 さんとは逆で、PHP側のビュー構造とデザインの整合性を
取るなら、初習の段階でDW(のレイアウトビュー)に頼るのは
なるべくやめといたほうがいいよってアドバイスすることが多い。
確かにいろいろわかってるなら便利なツールにもなりうるんだけど。
ヘルパーはそのままだと余計なタグがいっぱい付くのがちょっとウザい
>>977 smartyってメリット無いと思うけど。
今はデザイナでもflashやphpやらなきゃいけない状況だし、無駄にややこしいsmarty覚えるならphp覚えたほうがいい。
見た目をスッキリさせるのがいちばんの利点だと思ってる。 実に些細な点だけど、気持ちいいんだなこれが。 <?php echo $var['example']; ?> <?php e($var['example']); ?> {$var.example}
<?= $var['example'] ?>って使っている人いるのかな smarty無しでsmarty並にすっきりするけれど、XHTML行頭のXML宣言で引っかかる
そろそろ次スレか
>>981 下手にPHPをわかってるデザイナがテンプレート内で無茶なことをしないようにSmartyを採用するというのは聞いたことがある
できあがった点プレをプログラマーが軽くチェックすればすむ話だとは思うけど
>>983 short_open_tagは使わないのがセオリーだとおもう
ビューでもifとかforeach回したりとかはするんでしょ? あとcakeならヘルパー使ったりすることになったらsmarty使っても結構ぐちゃぐちゃになってしまいそうな 気がするんだけど。 smartyの見た目のすっきりさは好きだけど、 かけた手間の分ほどすげースッキリするっつうわけでもないかな。と思ってる。
そういうこともあって一時ほどは聞かなくなった印象>Smarty
smarty は FW 採用と同時に消えていったみたいな感じかな。 重いし,結局やることやらなきゃいけないし,(x)htmlじゃないし。 blitz みたいなエクステンションが標準になればいいのに。
煽りじゃなくどういう脳みそしてんだと思ったw
>>988 /cake/basics.php
にどこでも使う関数は書くといいよ。
vendorに置いてbootstrapでApp::import('Vendor', )すればいいんじゃね?
992 :
991 :2010/03/17(水) 20:54:08 ID:???
App::import('Vendor', 'Hoge'); なら使うときは Hoge::method(); とかね
1.3になってlibsってフォルダが増えたけど、 ここには何をいれるの? vendorsとの違いは何??
次スレ立ててくる
春になりました。 梅!
1000なら自作アプリ公開!
(;゚Ж゚;)ブホォ
/ ̄\ | | \_/ __|___ / \ / \ l | ( | \ 〃_/ >'⌒ ̄ ̄、,\ / \ / ィ ,ノ'ヾ ヽ ( / ), l ) ノ _,/ 、,, | /⌒ ̄ ̄ ̄ | l 、_ ,ノ ,/ | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| . └┬:‐┬───┬‐────┘ ノ ,‐‐,) 丿,‐‐,) ┼ヽ -|r‐、. レ | (,∠/ (,∠/ d⌒) ./| _ノ __ノ
1000ならクリームが古くて全員腹痛
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。