トップページ⇒php
1001コメント303KB

【PHP】フレームワーク CakePHP 10ホール目【v1.3】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/11/01(月) 21:43:26ID:???
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい

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

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0482nobodyさん2010/12/23(木) 12:21:57ID:???
というかHtmlHelper重いから使わないほうがいいとか言ってる奴は、
CakePHP重いからピュアなPHPで書いたほうがいいって言ってるのと同じなんだけど。
速度気にするならビューやDBやらをキャッシュすればいいだけだし。
本末転倒もいいところだわ
0483nobodyさん2010/12/23(木) 12:47:08ID:???
こういう、画像に対して、サイト内の画像をリンクするのはヘルパーでどうやるのでしょうか?

<a href="/test/img/sample_mail.jpg" id="sampleMail">
<img src="/test/img/new/sample_mail.png">
</a>


このスレを参考に、こんな感じで試したけど上手くいかない。。
echo $html->image(
"new/sample_mail.png",
array(
'url' => 'sample_mail.jpg',
'id' => 'sampleMail',
)
);
0484nobodyさん2010/12/23(木) 13:04:15ID:???
IDとか付くときはurlだけ使ったほうがいいよ

<a href="<?php echo $html->url('/img/sample_mail.jpg');?>" id="sampleMail">
<?php echo $html->image('sample_mail.jpg');?>
</a>


一応こういう方法があるんだけど。
echo $html->link(
$html->image("sample_mail.jpg"),
"/img/sample_mail.jpg",
array('escape'=>false)
);


ID変えて入れなきゃなんないなら>>483みたいなimage()でやるのは無理
0485nobodyさん2010/12/23(木) 13:07:11ID:???
あーごめんID入れるの忘れてた

echo $html->link(
$html->image("sample_mail.jpg"),
"/img/sample_mail.jpg",
array('escape'=>false, 'id'=>'sampleMail')
);
04864832010/12/23(木) 15:03:20ID:???
>>484

凄い!
urlだけ使う方法があるとは、考えてみればカンタンだけど盲点でした。

>>485 のやり方で、上手くいったのですが、
id変えて入れなきゃとはどういう意味でしょうか?

なんにせよ、素晴らしいリプライをありがとうございます!
0487nobodyさん2010/12/23(木) 15:12:54ID:???
IMEの予測変換が邪魔したみたいだわ

× ID変えて入れなきゃなんないなら
  ↓
○ ID入れてやんなきゃなんないなら


つまりhtml->image()ではAタグにidやらclassやらを指定できないってことね。
04884832010/12/23(木) 22:17:18ID:???
>>487

納得。ありがとうございます。
0489nobodyさん2010/12/23(木) 22:53:41ID:???
俺はむしろurlだけ使う方法を採用してるな。
その方がソースも綺麗で分かりやすいし。
0490nobodyさん2010/12/27(月) 11:08:36ID:???
遅いレスだけど $html->link使わないときは
こんな書き方もあります
<?= $html->tag('a',
 $html->image('sample_mail.jpg'),
  array(
   'id' => 'sampleMail',
   'href' => $html->url('/img/sample_mail.jpg')
  )
) ?>
タグ書きたくない病なので$html->tag結構使ってる
(1.1系だったら$html->contentTagだったかな)
0491nobodyさん2010/12/27(月) 11:12:50ID:???
ショートタグ使うなや
0492nobodyさん2010/12/27(月) 11:25:34ID:???
http://bakery.cakephp.org/articles/markstory/2010/12/26/happy_holiday_yule_cake_-_cakephp_2_0-dev_released
Happy Holiday yule cake - CakePHP 2.0-dev released
0493nobodyさん2010/12/27(月) 11:36:15ID:???
>>490書くならタグ書いたほうがましだろ
何のメリットもないww
0494nobodyさん2010/12/27(月) 11:38:09ID:???
>>490
素直にタグ書けよw
0495nobodyさん2010/12/27(月) 11:48:25ID:???
>>492
例外処理がまともになるのかな。予期せぬ例外もきちんとcatchしてくれるならうれしい。
0496nobodyさん2010/12/27(月) 14:44:58ID:???
490です メリットなくはないよ
たとえばこんな感じで繰り返し書くときに見通し考えてタグ書きたくないときとか
<?
/* サブメニュー定義(実際はcontrollerからsetしたり) */
$subMenuList = array(
'テスト1' => array('image' => 'test1.jpg', 'url' => '/hoge/test1', 'id' => 'test1'),
'テスト2' => array('image' => 'test2.jpg', 'url' => '/hoge/test2', 'id' => 'test2'),
);
/* 繰り返し処理でli要素作成 */
$subMenu = '';
foreach($subMenuList as $menuName => $menu) {
$subMenu .= $html->tag('li', $html->tag('a',
$html->image($menu['image'], array('alt' => $menuName)),
array(
'id' => $menu['id'],
'href' => $html->url($menu['url'])
)
));
}
?>
<? /* サブメニュー出力 */
echo $html->div('submenu', $html->tag('dl', $subMenu));
?>
ビューの中でこんな感じでサブメニューを出力させたりするのに使ったりしてるよ
自前のヘルパー作ってもいいんだけど
まあこんなやりようもあるということで
0497nobodyさん2010/12/27(月) 15:16:21ID:???
だから誰もとくしねえコードかいてんじゃねーよ
<li>って書いてたほうが他の人も分かりやすいわ
一人でオナニーやってろ
0498nobodyさん2010/12/27(月) 15:57:22ID:???
へーい すいませんでした
0499nobodyさん2010/12/27(月) 16:57:32ID:???
それで慣れちゃったんだろうけど、
俺はそのコードを触りたくないな
0500nobodyさん2010/12/27(月) 17:01:43ID:???
>>496
>見通し考えてタグ書きたくないときとか
見通しを悪くしたいとは、変わった方もいらっしゃるんですね
0501nobodyさん2010/12/27(月) 18:16:04ID:???
プログラムやる人にまともな人なんかおらんわw
0502nobodyさん2010/12/27(月) 18:24:31ID:???
>>501 なんで論点ずらそうとしてるの?本人なの?
0503nobodyさん2010/12/27(月) 18:30:13ID:???
脇目もふらず一直線に突き進んでたら、
相当見当違いの事やってたってのはよくあることだな。

その書き方は本末転倒だと言わざるをえない。
0504nobodyさん2010/12/27(月) 18:50:48ID:???
まあ、そこまでやればある意味でCake Wayだなw
html全く書かないとかやりとげたら真のBakerだwww
0505nobodyさん2010/12/27(月) 18:55:27ID:???
<?php foreach($items as $k=>$v): ?>
<li>なんちゃらry</li>
<?php endforeach ?>
でよくね?
0506nobodyさん2010/12/27(月) 20:25:01ID:???
Cake2.0が来るのか
胸熱だな
0507nobodyさん2010/12/27(月) 22:28:01ID:???
Zend並に使いやすくなってくれていればいいが
0508nobodyさん2010/12/27(月) 23:24:26ID:???
俺的にはもう少し軽くなる方が良いな。キャッシュ使わなくても。
サーバのモジュールを切るみたいに、必要じゃない機能を使わないようにして欲しい。
0509nobodyさん2010/12/28(火) 00:31:21ID:???
ttp://book.cakephp.org//view/1183/Data-Sanitization
にあるように、
App::import('Sanitize');
class MyController extends AppController {
むにゃむにゃ
}
とやると、エラーになります。

class MyController extends AppController {
MyFunction()
{
App::import('Sanitize');
むにゃむにゃ
}
}
とやるとエラーは出ません。

App::import()
ってどこに書けばいいのでしょ?
0510nobodyさん2010/12/28(火) 00:43:55ID:???
おでこにでも書いてろ
0511nobodyさん2010/12/28(火) 01:58:16ID:???
>>508
>>492 に、Lazy Loading 云々って書いてあるから、期待はしてる。
PHP5.2.6より上のバージョンに最適化するなら速度や何かはどうにかなってくれるといいな(願望)
0512nobodyさん2010/12/28(火) 02:55:16ID:???
>>509
せめてエラーの内容を書いてくれ。
初期化中になんかエラーになってるんじゃないの?
0513nobodyさん2010/12/28(火) 09:20:27ID:???
>>510
現状、おでこは狭いです。
10年後にはおでこと頭頂部が連結される見込みですが…

>>512
Fatal error: Class 'Sanitize' not found in viewのテンプレート on line 65
みたいな感じです。
レンダリングの段階で出てます。
0514nobodyさん2010/12/28(火) 12:31:58ID:???
viewの65行目に何書いてあるか書けよ
言われたことしかしないのか?
学校か?
死ねよ努力しろよ
0515nobodyさん2010/12/28(火) 13:48:07ID:???
>>509
とりあえず分からなかったらAppControllerの前にでも書いておいたらよい。
0516nobodyさん2010/12/28(火) 15:14:10ID:???
俺は使う直前でimportするようにしてる。
0517nobodyさん2010/12/29(水) 18:02:39ID:l8k3UmR3
教えてください。
cakephp 1.3 で、AuthComponents, AclComponents を使っているのですが、ログイン後に、
$this->set('user',$this->Auth->user());で、ユーザー情報は取れるのですが、
$this->set('group',$this->Auth->user('group'));
とやってもグループの情報が取れません。
Userのモデルには、
var $belongsTo = array(
'Group' => array(
'className' => 'Group',
'foreignKey' => 'group_id',
)
);

と記述しているのですが。

どうやったら、Groupのモデルが引っ張ってこれるのでしょうか。

0518nobodyさん2010/12/30(木) 12:51:41ID:???
カテゴリがあってそのサブカテゴリがあって、
サブカテゴリの詳細を出したい時、URLってどうしてます?

カテゴリ:/category/details/1  (CategoryコントローラーのID1の詳細)
サブ:/category/sub/1  (カテゴリID1内にあるサブカテゴリ一覧)
サブ詳細:/category/sub_details/1/1 (上記のサブカテゴリID1の詳細)

categoryというのがコントローラーで2つめがアクションです。
「カテゴリ内のサブカテゴリの詳細」を出す時、上記のようなURLにしているのですが、
いまいちURLが分かりづらくも感じてるので、他の人はどうしてるのか質問しました。
0519nobodyさん2010/12/30(木) 13:40:10ID:???
最近Cakeで作ったWEBサイトを携帯、もしくはIphoneやAndroidに対応したいのですが、
wordpressみたいにプラグインいれてハイ終わりって感じにはならないですよね。

トップページはフラッシュはないけど、動的にフォームを
追加、削除するjavascriptとかも入ってるし。
0520nobodyさん2010/12/30(木) 15:30:21ID:???
1.3.2使ってるんだけどApacheのエラーログ見たら
Fatal error: Call to a member function deleteAll() on a non-object in /apppath/cake/libs/cake_session.php on line 790
てのが出まくってるんだけど、これは何でどうしろってことなの?
0521nobodyさん2010/12/31(金) 01:11:49ID:???
CakePHPは何故失敗したのか
0522nobodyさん2010/12/31(金) 13:20:30ID:???
1.3.6のBakeってなんでVer下がってんだ
0523nobodyさん2011/01/01(土) 05:08:55ID:???
>>521
普及度では大成功だろ
PHPと同じで導入しやすいから普及してしまった
0524nobodyさん2011/01/01(土) 14:23:41ID:???
導入した俺は失敗だよ
バグあるし重いし、別のフレームワーク使って作り直さなきゃどうにもならん
0525nobodyさん2011/01/01(土) 16:13:29ID:???
CodeIgniterが気になって調べてたら殆どの人がcakephpに戻っててワロタ
0526nobodyさん2011/01/01(土) 16:59:33ID:???
Cakeには不満はあるが、他に選択肢がないって感じかな
0527nobodyさん2011/01/01(土) 18:01:25ID:???
俺としては「重い」と「ファイルが多い(FTPアップに時間がかかる)」
を改善してくれたら全く文句ない。
0528nobodyさん2011/01/01(土) 18:20:39ID:???
tarで固めちゃっターらいいよ
0529nobodyさん2011/01/01(土) 20:07:37ID:???
あああ
0530nobodyさん2011/01/01(土) 23:35:34ID:???
初笑いだ
0531nobodyさん2011/01/02(日) 00:46:25ID:???
普及してるか?
使ったことあるって人は多いだろうけど使い続けてる人が少ないような
0532nobodyさん2011/01/02(日) 15:48:13ID:???
なんで?FWに慣れたらやめづらいと思うが
0533nobodyさん2011/01/02(日) 16:07:37ID:???
>>521

>/apppath/cake/libs/cake_session.php on line 790

を見れば?
インスタンスされてない変数のメソッド呼び出し
05345332011/01/02(日) 16:09:32ID:???
>>520
の間違いだった orz...
0535nobodyさん2011/01/02(日) 17:10:40ID:???
そこはCakeの関数でしょ?
Cakeのバグってことだよね?
0536nobodyさん2011/01/04(火) 10:40:40ID:???
>>520
よく分からんけど、なんかそこで使われてる必要なモデルが無いんじゃないか?

>>519
プラグインってより、layoutの切り替えじゃないか?
スマートフォンも普通にhtmlを解釈するわけだし、
viewやelementを上手く作ってればlayoutの切り替えで何とかなるかもね。

>>518
URLが気に入らなかったらControllerで変な小細工するよりも、
Routesで対処する方がいいんじゃないか?

>>517
AuthComponent::user()の引数はフィールドの指定じゃないか?
ソースコード見てみたけど、アソシエーションを解釈してくれそうには見えない。
User belongsTo Group なら、$this->Auth->user('group_id')は出来そうだけど。
0537nobodyさん2011/01/04(火) 11:21:02ID:???
>>536
無いんじゃないか?って俺に言われても。
Cakeのセッション機能使っただけなんだが。Cakeが直せよ。

セッションまわりは他にも不具合があってかなり怪しい。APC入れたら動かなかったりとか。
0538nobodyさん2011/01/04(火) 11:27:39ID:???
いやそれは当然だと思うが・・・
セッション管理とキャッシュが食い合わせ悪いのはCakeに限らないだろ
0539nobodyさん2011/01/04(火) 11:39:09ID:???
>>537
それこそ俺にそう言われても。
1.3.2なんて古いの使って無いから790行目がどういうコードかわからんし、
どこでどんな原因があるのか分からんよ。
ただ、Coreのコード中でも、そこでModelのメソッドを呼んでるぽいから、
そのModel作り忘れとかもありえるんじゃないかと思っただけだ。
0540nobodyさん2011/01/04(火) 14:29:06ID:???
1.3系のAuthを使ったログインのサンプルって無いですかね?
cookbookを見ながらログインを作ったのですが、
なぜか、
ログイン時間が切れる→ログインフォームに戻る→再ログイン→エラー
になります。

エラー後に同じIDとパスワードでログインすると、ログインできるので
セッションエラーか何かだと思いますが、原因が掴めません。
0541nobodyさん2011/01/04(火) 20:12:48ID:???
cookbookのACLの開発例にログイン・ログアウトが含まれていたよ。
あれではだめですかね
0542nobodyさん2011/01/05(水) 03:42:32ID:???
cookbook面白いなーつい夢中になる
0543nobodyさん2011/01/06(木) 03:35:43ID:???
でもリンク切れが多い。>>541が言ってるACLの開発例もリンクおかしいし
0544nobodyさん2011/01/06(木) 04:44:02ID:???
リンク切れは、データベースのslugカラムがVARCHAR(45)で短すぎるかららしい。
一旦フッターのリンクから英語に移動して、見たいページ開いてから、
URLに自分で/jaを継ぎ足す事で見れる・・・
0545nobodyさん2011/01/06(木) 05:04:44ID:???
リンク切れているときはenのページを探してみて、jaへのリンクがあるか調べること多いですね

ところで、cookbookはcakephp製みたいですけど、ソース公開されてるんですか?見てみたい
0546nobodyさん2011/01/06(木) 06:47:11ID:???
https://github.com/cakephp/cookbook/

たぶんこれだと思うけど。
0547nobodyさん2011/01/06(木) 10:27:47ID:???
>>546
おお、ありがとうございます。
ローカルで動かしてみようといろいろやってますが、けっこう大変そう
入れろといわれたヘルパーは一通り用意しましたが、Zendのモジュールがどうとか
のエラーで心折れました
0548nobodyさん2011/01/06(木) 14:34:07ID:???
>>544
なるほどなー。ってそれがわかってるなら直してくれればいいのに。
0549nobodyさん2011/01/06(木) 14:42:37ID:???
そういうの多いよね。tinyint使っちゃ駄目とか。
0550nobodyさん2011/01/06(木) 15:06:26ID:???
つうかcakeのマニュアルにstringの時はvarchar(255)って自分で書いてるのにねw
0551nobodyさん2011/01/06(木) 17:17:19ID:???
CakePHPでPostgresって怖くて使えない。
そういう細かいはまり所がちらばってそうな気がしてなぁ。
海外じゃMySQLが主流だから、目玉の数も十分じゃないだろうし、
野良プラグイン使う事を考えるとなぁ。
Postgresのほうが好きなんだけど。
0552nobodyさん2011/01/07(金) 22:34:13ID:???
Web屋とかの制作実績見るとPostgresばっかりな気がする
MySQLのライセンスの問題?
0553nobodyさん2011/01/08(土) 01:34:02ID:???
Perlが主流の頃はPostgreSQLが主流だったんだよ
PHPが流行し始めてMySQLと組み合わせて解説本書かれるようになって10年くらいか?
今じゃすっかりPHP+MySQLが主流みたいになってるな
0554nobodyさん2011/01/09(日) 11:14:02ID:???
CakePHP以前の初歩かもしれないですが・・・、
たとえば「都道府県」→「市区町村」をフォーム上で両方ドロップダウンにして
都道府県で選択した値で市区町村を動的に変えようと思ったとき、
CakePHPならどういう方法をとるのが適切でしょうか?

ざっくりした処理の流れ程度でいいので、みなさんのやりかたをご教授
いただければありがたいです。
0555nobodyさん2011/01/09(日) 12:23:33ID:???
「CakePHPなら」ってのが良く分からない。
単にXHRで呼ばれるアクションを別に1個用意しましょう、ってんじゃ足りない?
それともJavaScriptが分かってない?
0556nobodyさん2011/01/09(日) 12:56:06ID:???
>>554
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=443&forum=12
0557nobodyさん2011/01/09(日) 20:56:38ID:???
book.cakephp.orgを見ながらcakephpの勉強をしているのだけど
バリデーションの定数(やエラーメッセージ)をどこかにまとめたい場合はどこにまとめるのが作法ですか?

http://book.cakephp.org/ja/view/150/
この「独自のバリデーションルール」だとマジックナンバーになってるけど、
実際の開発ではどういう方法があるかを知りたくて。

app/config/bootstrap.phpにまとめるものですか?
0558nobodyさん2011/01/10(月) 00:55:02ID:???
>>557
自分はvalidation.phpとか作ってConfigure::load()してる。
bootstrapにゴリゴリ設定詰めてもそりゃ動くけどね。
05595572011/01/10(月) 02:26:32ID:???
>>558
app/config/validation.phpにずらずら定数を書いておいて
app/models/<使いたいmodel>.phpの先頭でConfigure::load('validation');
という意味であってます?

bootstrapだとvalidation.phpが必要ないmodelでも読み込んじゃうから良くないという感じでしょうか?
0560nobodyさん2011/01/10(月) 04:57:04ID:???
app_model.phpじゃだめなん
0561nobodyさん2011/01/10(月) 12:16:49ID:???
>>559
bootstrapで常時読み込むよ。モデルごとに分けたりなんかしない。
配列の階層構造とかデフォルトのメッセージとかは面倒なのでビヘイビアで処理させてる。
0562nobodyさん2011/01/10(月) 12:31:41ID:???
bootstrapに全定数とかテーブルとか全部書くと便利だけど
全体の動作が重くならない?
0563nobodyさん2011/01/10(月) 13:51:26ID:???
>>562
プロファイリングすれば分かるけど250行ぐらいの設定ファイルで0.4msしかかかってないぐらいには軽い
0564nobodyさん2011/01/10(月) 14:10:59ID:???
0.4msってだいぶ重いんじゃね・・・?
05655632011/01/10(月) 15:22:42ID:???
どんだけシビアな世界に生きてるか知らんが1リクエスト100msかかってる環境でこれなんだ
がなー
これが重いと言われるとどうしようもない
0566nobodyさん2011/01/10(月) 17:30:16ID:???
CakePHPのApp::import()を1回分や、
無駄に発行するSQLの処理コストで吹き飛ぶ
誤差程度だと思うよ。0.4msなんて
bootstrapにある設定のコスト気にするより、
recursiveや取得するフィールドをきっちり調整した方がいいと思う。
0567nobodyさん2011/01/10(月) 17:45:15ID:???
久々にすごいハマってるんだけど知恵貸してくだしあ

Session.startは true
Security.levelは medium

のときに、
ログインページがSSLなんだけど、

非SSLページを遷移してる時は当然セッションIDのCookieは「あらゆる接続・・」で維持され読み取れるんだけど、
SSLのログインページを開いた時点で「セキュリティーで保護された接続・・」に限定されてしまい、
非SSLに移るとセッションは消えるという現象が起きまして。。

Security.levelが medium以下であればSSL・非SSLでのセッションは維持されるとあるのにおかしいなとソースを読みまくり、
一日かけてやっとたどり着いた原因が
SSLページでrequestActionしていると、セキュアのみのセッション(セッションID保存Cookie)に変更されてしまうというものでして、

で、回避するには、
Coreをいじるか、requestActionを使わないしかないように思うんですが、
同じような問題にぶち当たって解決された人いませんか?
05685572011/01/10(月) 20:13:38ID:???
おぉ。レスが増えてた。
>>560
モデルってわけでもないからapp_model.phpじゃないのかな?という疑問もあり質問して聞いてみたくて。
作法みたいなのがあればそれに倣おうと。
>>561
常時読み込んでも対して違わないんですね。参考になります。

app_model.phpかbootstrap.phpで常時読み込んでみてパフォーマンスが気になるレベルになったら次を考えてみます。
みなさんありがとうございます。
0569nobodyさん2011/01/10(月) 20:16:23ID:???
>recursiveや取得するフィールドをきっちり調整した方がいいと思う。

実際これってかなり大事だけど忘れがちだよね。
めんどくさいってのもあるもんな。
0570nobodyさん2011/01/10(月) 20:38:05ID:???
Containable使えばいい
0571nobodyさん2011/01/10(月) 20:39:10ID:???
LazyModelも忘れずにね。
0572nobodyさん2011/01/10(月) 21:33:48ID:???
567です。自己レスです。

どこかでparams['requested']を調べてSessionを開始しないようにすればいいと思いつつも
beforeFilterでは時既に遅し、__constructではparams[request]は取得できないとなやんだんですが、

http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1847&forum=8
こんなページを見つけて、ConstructClassesってメソッドを初めて知った。

ここに↓でどうやら意図したとおりに動いてる模様。
public function constructClasses(){
if(!empty($this->params['requested'])){
//Sessionを使わない
Configure::write('Session.start', false);
}
parent::constructClasses();
}

汚しましたーさーせん。
0573nobodyさん2011/01/12(水) 12:17:20ID:???
結構Cake使っているサイト増えたきたね。
会員数が数万単位でも違和感なく使える。
だから、Cakeが重いと感じるのは
ソースの書き方やキャッシュの使い方が悪いのかな・・。
0574nobodyさん2011/01/12(水) 16:36:48ID:???
コントローラからモデル名を取得しようとした時の方法が知りたいです。
cookbookには$this->ModelNameと書いてありますが実際にやってみるとそれでは取れず。
http://book.cakephp.org/ja/view/53

で、thisを覗いた所、
$this->modelNames[0]
$this->modelClass
の2つがあったのでどっちがいいのかなと思って気になりました。
0575nobodyさん2011/01/12(水) 16:38:52ID:???
$this->modelClass
0576nobodyさん2011/01/12(水) 18:08:05ID:???
Cakeって1モデル1コントローラーを前提としてるの?
そんな簡単にいくことってほとんどなくね?
0577nobodyさん2011/01/12(水) 18:29:16ID:???
そうか?半数以上は1モデル1コントローラーで問題ないよ。経験上。
複数モデル使うときは明示すればいいだけだし
0578nobodyさん2011/01/12(水) 22:06:01ID:???
俺の場合はほとんど、1コントローラー複数モデルだけど、
配列で複数指定できるんだし、全く問題ないぞ。
0579nobodyさん2011/01/12(水) 23:23:24ID:???
>>575
ありがとう。それでいきます
0580nobodyさん2011/01/13(木) 00:09:54ID:???
CakePHP:1.3.6
DB:Firebird 2.5

にて、下記を参考にBLOB型のカラムに画像を登録しようとしています。
http://c-brains.jp/blog/wsg/10/06/05-074544.php

viewとcontrollerのソースはこのサイトのままにmodelを自分で追加。
テーブルはcontentsカラムの型をBLOBに変更しています。
(Firebirdにmediumblob型が無いため)

この状態でファイルのアップロードをするとimages_controller.phpの33行目
$this->Image->save($image);
の実行時に下記エラーがでてしまいます。

Dynamic SQL Error SQL error code = -104 Unexpected end of command
SQL:INSERT INTO "image" ("filename","contents") VALUES ("filename.jpg","?????????")

※?????????は画像ファイルのバイナリの文字列(と思われる)が入っています。

contentsの登録部分(30行目)を削除すると成功するため、BLOB型の部分が
うまくいっていないのは確かだと思うのですが、どなたか解決策をご存知の方はいませんでしょうか。
0581nobodyさん2011/01/13(木) 01:29:47ID:???
ひとつ聞きたいんだが、他者のソースやプラグインを例題に出されたら
回答者がそれを設置してみないと答えられないんじゃないか?

そしてあんた、自分の中で答え出てるじゃん。BLOB型の部分がおかしいって。
それなら、元のソースに問題があるんだろ。作者に聞けよ。
0582nobodyさん2011/01/13(木) 12:11:03ID:???
その参考にしたサイトで使ってるのはMySQLかな?
よくわからんがMySQL以外のRDBMSをCakeのDataSourceとして使うには覚悟が必要だな
あとFirebirdは知らんけど画像はDBに格納するよりファイルとして保存するのが一番だな
■ このスレッドは過去ログ倉庫に格納されています