【PHP】フレームワーク CakePHP 6ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/03/09(月) 10:55:37ID:3PTy4GqZ※sage推奨
※日本語マニュアルURLを貼るときは、http://book.cakephp.org/ja/view/1/ のようにしましょう(末尾のエンコードされたタイトル部分は不要)
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0451nobodyさん
2009/06/04(木) 00:33:50ID:???0452nobodyさん
2009/06/04(木) 09:04:20ID:???0453nobodyさん
2009/06/04(木) 09:07:40ID:???↓
なまあたたかい
↓
ぞんざい
0454nobodyさん
2009/06/04(木) 19:04:13ID:???きれいに並べたいんだけどなんかないのですくわ
0455nobodyさん
2009/06/04(木) 20:16:55ID:???http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1874&forum=9
0458nobodyさん
2009/06/05(金) 16:59:50ID:???条件付の paginate したいときはコントローラー内で書くしかないのでしょうか。
何となく、SQL の発行とはかモデル内でやった方が良いかなぁと思うのですが、、
0460458
2009/06/05(金) 19:17:20ID:???ありがとうございます。
>>198-208
コンポーネントでやってみることにします。
私は何でもコントローラーに詰め込んでしまう傾向があるので、
MVC の基本から学んでみることにします。
0461nobodyさん
2009/06/05(金) 20:41:11ID:???0466nobodyさん
2009/06/05(金) 21:44:01ID:???http://www.infinity-blue.jp/archives/58
とっくの昔についてるわ
0468nobodyさん
2009/06/07(日) 23:06:58ID:IWMv9X2i回帰的にHABTMってできるんでしょうか?
例えばpostsなんてテーブルがあって、
posts_postsなんて結合用のテーブルを用意して、
一つのテーブルを回帰的に多対多にするとか。
無理?それとも不幸になる?
0469nobodyさん
2009/06/08(月) 00:56:23ID:???リンク押すとすぐに表示される場合もあれば、10秒くらいかかることもある。
キャッシュは使ってるんですが、なにかもっと速くする方法ないでしょうかね?
0470nobodyさん
2009/06/08(月) 01:10:18ID:???0471nobodyさん
2009/06/08(月) 13:14:53ID:???ttp://www.tonttu.net/tec/cakePHP/cakephpHABTMwith.html
これじゃね?試してないが
0472nobodyさん
2009/06/08(月) 15:41:57ID:???なんかネックになってるSQLがあって、10秒くらいかかってるんじゃね?
キャッシュが効いてる時はすぐに表示されると言うだけで
0474nobodyさん
2009/06/09(火) 19:13:55ID:???ビヘイビアで設定しても呼び出し方が分からず困ってます。
TreeBehaviorとか決まった名前のビヘイビアしか作れないのでしょうか?
0475nobodyさん
2009/06/09(火) 20:07:13ID:???0476nobodyさん
2009/06/09(火) 21:20:39ID:???複数のモデル内 => ビヘイビア
複数のコントローラ => コンポーネント
です。
名前は hoge ビヘイビアでも abesouri ビヘイビアでも何でも作れますよ。
あなたはコントローラー内でのモデルの使い方がいまいちわかっていないと思います。
0477nobodyさん
2009/06/10(水) 09:41:54ID:???>>476のようにcomponentで実装するのが良いでしょう
より簡単なやり方としては。
app_controller.phpで共通する処理を書いてあげると、すべてのcontrollerで利用できます。
※ただし、URLでアクセスされないように、function _hoge() のように _ をつけてね
0478nobodyさん
2009/06/10(水) 13:01:47ID:???テキストフィールドに文字列を入力してエンターを押しても候補が表示されず、
1文字削除すると、候補が表示されます。
どうすれば直るのでしょうか?
0479478
2009/06/10(水) 13:28:23ID:???何か対処法はないでしょうか・・・
0480nobodyさん
2009/06/10(水) 14:28:19ID:???レスありがとうございます。
呼び出し方として
モデル->ビヘイビア
ではなく
コントローラ->{モデル,ビヘイビア}
ということでしょうか?
おんなじ処理(たとえばPV集計など)を書くのにコンポーネントだとMVC的に間違っている気がするのですが
0481nobodyさん
2009/06/10(水) 14:29:41ID:???core.php内で設定する以外でお願いします。
0483482
2009/06/10(水) 15:39:30ID:???0484nobodyさん
2009/06/10(水) 15:44:47ID:???まだいまいち状況がつかめていないが。
共通の処理というのが特定のモデルを使うようなものであれば、
そのモデルを各コントローラーから呼んであげればよい
モデルを使わないのであれば、各コントローラーで処理する
各コントローラーの処理を共通化するのは>>476-477
0485nobodyさん
2009/06/10(水) 16:28:13ID:???どういう場面で使えばいいのかわかんなくて、一度も使ってないんだけど
0486nobodyさん
2009/06/10(水) 20:31:17ID:???必要無いものを無理に使う必要はないと思う。
0487nobodyさん
2009/06/10(水) 21:59:36ID:???0488nobodyさん
2009/06/10(水) 22:43:22ID:???わけわからん
全然スイーツじゃねぇし
0489nobodyさん
2009/06/10(水) 23:06:08ID:???しかし、もう我慢できない!
スイーツな名前だけどスイーツには使いこなせませんっ!
異論は認める
0490nobodyさん
2009/06/10(水) 23:07:35ID:???マニュアル主義的なところあるし
0491nobodyさん
2009/06/11(木) 01:11:50ID:???手を出さないのが無難とはわかりつつも、わざわざグローバル関数として
用意されているのだから、便利な使い方があるに違いないと邪推してしまう
>>487
e()って何だよと思って調べたらecho()か
だいたいechoは()でくくらないで使う方が普通だと思うし
それを考えると、逆に使いづらくなってるような
俺が使うのはhと、デバッグ時にprくらい
気分でenvとか使っちゃうことがあるけど、
自分でも何で使ってるのかわからない
0492nobodyさん
2009/06/11(木) 01:36:39ID:???いっそのこと逆にsystem.out.print()とか作れよw
0493nobodyさん
2009/06/11(木) 02:49:59ID:???0494nobodyさん
2009/06/11(木) 13:27:45ID:???e(h())ってなるのがいやなので、eh()ってのを作って使うとより便利だけどね。
0495nobodyさん
2009/06/11(木) 13:50:01ID:???0496nobodyさん
2009/06/11(木) 14:49:44ID:???基本的に勝手にエスケープされるのでほとんど使わない
そういやCakeだとLIKのワイルドカードの%と_がエスケープされないけど
これは自分でエスケープしなきゃいけないのかね
フレームワークでは意図的に入れたワイルドカードか不意にポストされた
ワイルドカードか判断できないってことなのかな
0498nobodyさん
2009/06/11(木) 15:42:25ID:???0501nobodyさん
2009/06/11(木) 21:09:45ID:???0502nobodyさん
2009/06/12(金) 00:59:17ID:???んー、検索フォームで%をポストされると、そのままワイルドカードに
なっちゃうんだよね
hoge%fugaで検索すると%hoge%fuga%にマッチするのを探しちゃう
本当なら%hoge\%fuga%になってほしいところなんだけど
まあ、そこまで問題ではないのかもしれないけど、意図しない動作なので気になる
0505nobodyさん
2009/06/12(金) 06:51:54ID:???function afterLayout(){
$view =& ClassRegistry::getObject('view');
$view->output = mb_convert_encoding($view->output, 'SJIS');
}
らしい。ttp://blog.ecworks.jp/archives/506
0506nobodyさん
2009/06/12(金) 09:56:19ID:???%は、エスケープされないみたいだね。
シングルクオート、ダブルクオートはエスケープされてるから、仕様っぽいな
0507nobodyさん
2009/06/12(金) 10:18:18ID:???function wildcard($text ,$escape = true ,$left = true ,$right = true ,$wc = '%') {
return (empty($left) ? '' : $wc) . (str_replace($wc ,'\' . $wc ,$text)) . (empty($right) ? '' : $wc);
}
0508nobodyさん
2009/06/12(金) 12:57:59ID:???%ほげほげ
って入力されたら、インデックスがあたらなくてサーバを簡単にあぼんできるってこと?
0509nobodyさん
2009/06/12(金) 13:44:17ID:???ユーザーからの入力値を受け付けて、なおかつワイルドカードで始まらない
like文っていうのはあまり想像できないけどな。
0510nobodyさん
2009/06/12(金) 16:10:41ID:???0511nobodyさん
2009/06/12(金) 19:58:24ID:???どこで出ているのか、特定できなくて困っています。
コントローラの最後にechoを入れるとゴミデータの前、
VIEWの最初に文字を入れるとゴミデータの後に
表示されるので、コントローラとViewの間で表示されていそうなんですが
どこがあやしいかわかりますか?
これをしてみれば?みたいなことがあれば教えてください。
0512nobodyさん
2009/06/12(金) 20:30:44ID:???0513511
2009/06/12(金) 21:14:17ID:???文字コードが誤って判定されていました。
http_outputを設定することで解決しました。
httpだと問題なく動作していたんですが、httpsにしたとたん
問題が発生しました。
SSLでは文字コードの判定が違うんでしょうか。
>>512
ゴミデータは?でした。
0514nobodyさん
2009/06/14(日) 05:26:58ID:???e(); は echo の略だから 1文字しか短くならない。
だから使わないんだよね。
0515nobodyさん
2009/06/14(日) 17:49:59ID:???0517nobodyさん
2009/06/15(月) 05:54:41ID:???これも
ttp://pc11.2ch.net/test/read.cgi/hosting/1236253865/
0518nobodyさん
2009/06/15(月) 20:19:10ID:???この質問って回答するの難しい?
0519nobodyさん
2009/06/15(月) 21:55:12ID:???0520nobodyさん
2009/06/16(火) 01:02:44ID:???0521nobodyさん
2009/06/16(火) 22:49:42ID:???CakePHP1.2ガイドブック
6/27発売 キタ━━━━━━(゚∀゚)━━━━━━ !!
0522nobodyさん
2009/06/16(火) 22:58:46ID:???0523nobodyさん
2009/06/16(火) 23:00:25ID:???0524nobodyさん
2009/06/17(水) 12:27:40ID:???最近のCakePHPではPostgreSQLでまともに動きますか?
それと、バグは収束傾向でしょうか?
0526nobodyさん
2009/06/17(水) 17:52:25ID:???こんなもんなのかと思える
ただのPHPと違ってユーザー数は一桁違うだろうからね
0527nobodyさん
2009/06/18(木) 12:52:15ID:???Componentでsmartyをつかいたいのですが、
<?php
class Mail_sendComponent{
//メール内容生成------------------------
var $smarty;
var $tmp_path;
var $url;
function make_mailbody($tmp_path,$url){
App::import('Vendor','smarty/Smarty.class');
//合成
$this->smarty->assign("url",$url);
$out = $this->smarty->fetch ($tmp_path);
return $out;
}
}
?>
エラー内容
Fatal error: Call to a member function assign() on a non-object in /パス/mail_send.php on line 18
どしたらいいのでしょうか・・・・
0528nobodyさん
2009/06/18(木) 12:58:09ID:???0529527
2009/06/18(木) 13:09:19ID:???そもそものコピペの流用なのですが、
vendor("smarty/Smarty.class");
↓
App::import('Vendor','smarty/Smarty.class');
に変えただけなのですが・・・・
$this->smarty =new Smarty();
とか、そういう方向でしょうか・・・?
0530カナディアンマン
2009/06/18(木) 16:07:17ID:???出力されたHTMLで、 data[User][job] の後の括弧の中身が空欄なのですが、これは正常ですか?
チェックボックスにチェックをしてFormを送信しても値が取れないんです。
出力されたHTML
<input type="checkbox" name="data[User][job][]" value="1" id="UserJob1" /><label>ヒキ</label>
<input type="checkbox" name="data[User][job][]" value="2" id="UserJob2" /><label>ニート</label>
<input type="checkbox" name="data[User][job][]" value="3" id="UserJob3" /><label>フリーター</label>
VIEWの記述
echo $form->input('job', array('label' => '仕事', 'type' => 'select', 'multiple' => 'checkbox', 'options' => $jobs));
コントローラーの記述
$jobs = $this->User->Job->find('list');
$this->set(compact('jobs'));
0532カナディアンマン
2009/06/18(木) 17:00:36ID:???data[User][job]の中身がNULLでした。
0533カナディアンマン
2009/06/18(木) 17:09:12ID:???僕の質問の仕方がわかりづらいと思うので、少し変えます。
>>530のHTMLでチェックボックスをONにして送信しても、empty(data[User][job]) がTRUEになります。
チェックボックスがONになっているという情報はどのように取得できるのでしょうか?
0535nobodyさん
2009/06/18(木) 17:42:48ID:???0536534
2009/06/18(木) 18:08:35ID:???$this->data
ね
debugをオンにしてないってオチじゃないよね?
0537nobodyさん
2009/06/18(木) 18:57:33ID:???debug( $this->data );
を、controllerに記述して中身を確認しましょう。
そしたらあとはカラムの型に応じて適当に処理すべし
0538nobodyさん
2009/06/18(木) 20:08:09ID:???そのほとんどはデザイナ会社が勘違い(or 背伸び)で取ってきた案件が多いな。
だから>>521のような本が伸びるんだろう。
0539カナディアンマン
2009/06/18(木) 23:28:34ID:???debug( $this->data ); をしました。
結果
Array
(
[User] => Array
(
[hoge] => 1
[job] =>
[hogehoge] =>aaa
)
)
やっぱりjobの中に何も入ってないです。
0541nobodyさん
2009/06/19(金) 00:05:29ID:???HABTMなら
http://book.cakephp.org/view/85/Saving-Related-Model-Data-HABTM
$form->input('Job.Job');
ってまだHABTMやったことないけど
0542カナディアンマン
2009/06/19(金) 00:39:16ID:???var $belongsTo = array(
'Job' => array(
'className' => 'Job',
'foreignKey' => 'job_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
HABTMではありません。
あと、申しわけないのですが、VIEWの記述は>>530のヤツには少し間違いがありました。正しくはこれです。
出力されたHTML
<input type="checkbox" name="data[User][job][]" value="1" id="UserJob1" /><label>ヒキ</label>
<input type="checkbox" name="data[User][job][]" value="2" id="UserJob2" /><label>ニート</label>
<input type="checkbox" name="data[User][job][]" value="3" id="UserJob3" /><label>フリーター</label>
VIEWの記述 (※inputの後は'job_id'でした)
echo $form->input('job_id', array('label' => '仕事', 'type' => 'select', 'multiple' => 'checkbox', 'options' => $jobs));
コントローラーの記述
$jobs = $this->User->Job->find('list');
$this->set(compact('jobs'));
0543カナディアンマン
2009/06/19(金) 00:48:30ID:???VIEWの記述
echo $form->input('job_id_hoge', array('label' => '仕事', 'type' => 'select', 'multiple' => 'checkbox', 'options' => $jobs));
「$form->input(」の後ろを「job_id_hoge」にしたらうまくいきました。
Userテーブルに存在する列と同じ名前だとうまくいかないみたい?
何でかわかりませんが・・・。
0544nobodyさん
2009/06/19(金) 07:52:35ID:???なんだjob_idなのか。
habtmじゃないとしたらUser.job_idにはint型ひとつしか入らないでしょ。
だからUser.job_idは複数選択できちゃだめ。
で、field にないデータが欲しいときは、架空のフィールド(例User.jobs)を作ってあげるイメージ
そしたら、multiple checkbox でも何でもできるから、$this->data['User']['jobs']に所望のデータが入るってこと。
データが消えたのは重複するjob_idが存在したか、もしくはモデルのデータを参照したとかかな?
0545nobodyさん
2009/06/20(土) 02:06:37ID:???<?php
class TitlesController extends AppController {
var $name = 'Titles';
var $scaffold;
}
?>
としたところ、
viewアクションで
Undefined variable: title
が発生してしまいました。
いろいろ調べたところ、
$controller::set()で
titleにセットすると、
$titleにセットされずに$view::pageTitleにセットされるのが原因のようです。
titleを別の名前にするのが手っ取り早いとは思うのですが、
何か他に解決方法はないでしょうか?
0546nobodyさん
2009/06/20(土) 09:35:43ID:???viewアクションだけ自作するのがよさげ
nullチェックと$this->set('title' ,$this->Title->read ・・・ くらいしかしてないから
0547545
2009/06/21(日) 00:44:37ID:???特定のアクションだけ自作とかできたんですね。
ありがとうございます。
しかしtitleが使えないとなると、なんて変数名でセットしようか・・・
こういうところで悩んでしまってぜんぜん進まない;
0548nobodyさん
2009/06/21(日) 06:29:42ID:???generateTreeList でツリー構造の連想配列で取得できないのでしょうか。
ttp://book.cakephp.org/ja/view/228/Basic-Usage
例えばこんな感じ。
$ary = array(
'id' =>1,
'name' => 'カテゴリ',
'children' => array(
'id' => 2,
'name' => '楽しみ',
'children' => array(
array('id' => 3, 'name' => 'スポーツ',
'children' => array(
array('id' => 4, 'name' => 'サーフィン'),
array('id' => 5, 'name' => 'スケート'),
),
),
array('id' => 6, 'name' => '友人',
'children' => array(
array('id' => 7, 'name' => 'ジェラルド'),
array('id' => 8, 'name' => 'グウェンドリン'),
),
),
),
),
);
■ このスレッドは過去ログ倉庫に格納されています