【PHP】フレームワーク CakePHP 13ホール目【v2.0】
テンプレって何かあるの? いいよね別に
☆
人
ノ::oゝ
ノ;;;;; ゝ
ノ::o;;::。ゝ __旦_
ノ.: ::◎;::::ゝ ∠二二二/\
ノ..&, ,.....].ゝ""_~_~_~_~_~_(三三三三()三()
/~,へニニニニ7 「从erry ]’mas |三三()三()ヽ
!<介> ,ヘ .,ヘー―,ヘ―‐.,ヘ┘ ,ヘ .<介> i
. |ヽ。.,,_ <介> <介> <イト> <介> <介>.,_,,。ィ
| ~~"""'''''''''ー―-゛-"-――'''''''"""~~ : :|
| ::|
人 | ::| 人
,.(::0::)‐| ::|‐(::0::)-、
ヽ__ ヽ。,, _,,。ィ ___ ノ
/ 人"''''''''ー―-――――''''' 人 "´ \
(_ イ ,(::0::) へ 人 .へ (::0::) ト 、_ノ
ヽ。 _/ .\ (::0::) ./ \_ _ノ
4 :
nobodyさん:2011/11/09(水) 15:16:38.80 ID:JcIEC3Dm
モデルの$this->query()ってSQLインジェクション対策してないよね?
してないわけねーだろうが
すれたておつ
/ ̄ ̄ ̄\
/ ─ ─ \
/ (●) (●) \ 2.0の日本語訳まだなの
| (__人__) |
\ ` ⌒´ /
/ |
(_ ) ・ ・ ||
l⌒ヽ _ノ |
| r ` (;;;U;;) )__)
(_ノ  ̄ / /
( _)
8 :
nobodyさん:2011/11/10(木) 00:22:15.33 ID:tPbiz4Np
MySQLでカラム名をすべて大文字で作成した場合に
findしたときのカラム名もすべて大文字で返ってきてしまうんですが、
これを小文字で返ってくるようにするにはどうしたらいいですか?
テーブルを作り直すというのは無しで。
11 :
10:2011/11/10(木) 01:35:58.79 ID:???
翻訳が進みにくい+協力者が集まりにくい
がごっちゃになってしもうた
翻訳したら本の出版依頼が来るかもしれないぞ。
ブログかwiki使ってやってみたら?
正確に翻訳するってむずかしいじゃん
15 :
nobodyさん:2011/11/10(木) 10:14:20.96 ID:Y5PvVcC5
CakePHPってアソシエーション設定して普通に開発してると、
気がついたら1ページで100クエリ発行してたりするから困る
1ページで100クエリ、あるある
なんちゅーフレームワークだと思った
>>16 つまり、いちいちbindModelで付け足していくよりも、
最初からモデルにアソシエーションを書いて
そこから必要な分だけ取り出すって形かな。
それはそれで便利そうだけど、
「ユーザ」モデルに「日記」「写真」「プロフィール」とかの
関連モデルと結合する場合、bindModelの方が軽い気がする。
19 :
nobodyさん:2011/11/10(木) 16:03:19.22 ID:Y5PvVcC5
>>17 だからクエリ減らすために、
デバッグログをビューに出すやつで、
このクエリはこのファイルのここで実行された、みたいなログも一緒に出してくれたらいいんだけど
誰か方法しらない?
あれはCake専用のレイアウトじゃないと出ないのでは?
って事はないよな・・・個別に貼り付けできるはずなんだが
>>18 その例だとどうbindModelが軽いのかよく分からないが
コンテイナブルビヘイビアだと、順序やIDのつながり方をモデルのアソシエーションに集約できるから
普通は純粋にテーブルの取捨選択だけをcontainで指定すればいいし、順序を変えたいならcontainで上書きすることもできる。
>>19 てかコンテイナブル使っても何しても、CakePHPは入れ子の2階層までしかJOINしてくれない
だからそれ以上の階層になると、1レコードとってくるのに WHERE id = ??? のようにして1クエリ発行される。
JOINしたら1発で取ってこれるような情報でも、100クエリとか発行するのはそのせい
>>21 俺の出した例は大きく分けて2パターンの利用方法がある。
A:特定会員のコンテンツを取得
B:コンテンツ内のデータ(そのデータにユーザモデルをJOIN)
この場合、モデルにすべて書くと再帰的に複雑になるだろ?
AはUser→Diary、BはDiary→User
Aでfindした時、User→Diary→Userみたいになってエラーになる可能性がある。
だから、必要な時だけbidModelを使ってその都度足していけばいい
って考え方なんだけど、何か間違ってるかな?
>>23 A:
$this->User->id = $id;
$this->User->contain(array('Diary' => array('Article')));
$data = $this->User->read();
(Articleはおまけで付けた)
B:
$data = $this->Diary->find('all', array('contain' => array('User')));
いずれにしろ再帰はしない。bidModel書くのが手間ではないならそれでもいいと思うが。
>>22 findのjoinsオプション使うと明示的にJOINできるよ
デフォルトだとクエリ多発するのは確かにそうだね
でもhasManyのときはJOINにコストが結構かかるから、この仕様のほうが効率いいことが多いとかそんな話を聞いたことはある。
眉唾で聞いてたけど。
26 :
nobodyさん:2011/11/10(木) 23:52:27.25 ID:tPbiz4Np
CakePHP2.0でfindとかやったときの例外処理ってどのように記述すればいい?
try {
$this->User->find('all', $params);
} catch (xxx) { ←ここら辺
xxx ←
}
>>25 joinsってなんかうまく動かないの俺だけか
joinしたテーブルの下にjoin付けられる?
付けられるぞ。
アソシエーション云々考えなければ、
joins使う方が一番思い通りに出来るよ。
翻訳ブログ立ち上げたとたん
>>14の2.0向けドキュメントが消えている
なんてこったい
設計について質問させてください
例えばmixiでいうコミュニティーをユーザーが作れるとします。
コミュニティー作成者(管理人)は
設立段階で、
メンバーになる人達がコミュニティーに登録する際、
コミュニティー内で利用する
メンバーIDのフォーマット(バリデーションパターン)を指定する必要があります。
メンバーIDのフォーマットはどんなパターンにも
応じられる仕組みにしたいです。
例えば
コミュニティーAでは 477-794-954 のような(数字三桁)-(数字三桁)-(数字三桁)フォーマット
コミュニティーBでは英数半角なら何でもOK
コミュニティーCでは47472のような数字五桁
上記のようにメンバーIDは多岐に渡ります
こういった場合はどのようなテーブル設計、
またフローで対処するのが一般的ですか?
コミュニティー内でのメンバーリストでの
メンバーIDによるソートなども考えて実装したいところです。
メンバーIDのフォーマットを選ばせるってのがよくわからない。
そこがすでに一般的じゃないからなんとも。
むずかしすぎてわからないぜ
JsHelper使って$this->Js->request();を使いjavascriptでアクションを呼び出しました。
methodをgetにするとレスポンスが返ってくるのですが、postにするとレスポンスが返ってきません。
原因なにかわかりませんか
>>32 メンバーIDのカラムは一つだけど
コミュニティーごとにバリデーションパターンが違って
コミュニティ作成者が指定出来るようにすることが出来るのか?ということです。
>>31 バリデーションルールをcustomにして、customバリデーションの中でコミュニティー毎にルールを書けばいい
>>35 beforeValidation使えば出来ると思う
CakePHP1.3系の自作behaviorについて
詳しく説明されているサイトをご存知の方いらっしゃいませんか?
独自のbehaviorを作成するにあたって、参考にしたいんですが
なかなか、細かく説明されているものが見当たりません
>>36 一般ユーザーが簡易に
バリデーションパターン(コミュニティー管理者任意)をフォーム画面からカスタマイズさせるのって
どういう形で入力させるのが
一般的なんでしょう?
あまり、この手のものは前例を見たことがないので
Cake1.3のSessionについて質問
初回のみURLにOAuthパラメータが付加されてくるのでチェックして認証できたら
$this->Session->write( $key, $params );
と保存。
これ以外にはどこにもSessionにwriteするコードはない。
2回目以降のアクセスでセッションを読む。
$this->Session->read( $key );
すると空になっている。
調べてみると初回の認証成功の後に、2つほど新しいキーで空っぽの値が保存されている。
これは何が起きていてどうすれば直るのでしょうか。
ぐぐってCAKE_SECURITYを変えたり、RewriteCond %{REQUEST_URI} !\.(cgi|css|gif|jp?g|png)$をやってみたけど駄目でした。
jsもできないとうまく使えないかな
じつはセッションに保存してなかったとか
CakePHPのフォーラム活気がないんじゃないの?
ふつうあんなものなの??
登録してハンドルで投稿するのがめんどい
無責任に書くつもりも無いけど、名前背負ってまで書き込みたくない
というのは2chみたいな匿名コミュニティに慣れてる人には多いんじゃ無いだろうか
Railsのスレのほうが活気ないから
CakePHPに移ろうかと思うんだけど
日本でのシステム構築はどちらが有利?
シェアとか利点とか
はいどうぞ
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 1 1 Java 17.874% -0.63% A
2 2 C 17.322% +0.61% A
3 3 C++ 8.084% -1.41% A
4 5 C# 7.319% +1.61% A
5 4 PHP 6.096% -1.72% A
6 8 Objective-C 5.983% +2.79% A
7 7 (Visual) Basic 5.041% -0.43% A
8 6 Python 3.617% -2.06% A
9 11 JavaScript 2.565% +0.90% A
10 9 Perl 2.078% -0.39% A
11 10 Ruby 1.502% -0.40% A
12 20 PL/SQL 1.438% +0.78% A
13 13 Lisp 1.182% +0.09% A
14 15 Pascal 0.991% +0.21% A
15 21 MATLAB 0.955% +0.32% A--
16 12 Delphi/Object Pascal 0.872% -0.77% A
17 23 ABAP 0.847% +0.25% A--
18 22 Lua 0.635% +0.02% A-
19 16 Ada 0.622% -0.07% B
20 19 RPG (OS/400) 0.620% -0.04% B
21 Logo 0.592%
22 Transact-SQL 0.550%
23 Visual Basic .NET 0.533%
24 Assembly 0.529%
25 COBOL 0.522%
26 Scratch 0.522%
27 R 0.500%
28 Scheme 0.453%
29 NXT-G 0.447%
30 Fortran 0.440%
世界的に見ると、Yiiの伸びがすげーのな。
日本だとcakeの圧勝だけど。
YiiとCodeintegerスゲーじゃんと思いながら調べていくと
結局CkakePHPに戻ってしまう
そんなに英語嫌なの?
アホなの?
まぁ良いフレームワークならユーザーも増えて情報も増えていくだろう
Yiiはかなり有望だと思うよ
/ ̄ ̄ ̄\
/ ─ ─ \
/ (●) (●) \ 有望だけじゃなにがいいかわからない
| (__人__) |
\ ` ⌒´ /
/ |
(_ ) ・ ・ ||
l⌒ヽ _ノ |
| r ` (;;;U;;) )__)
(_ノ  ̄ / /
( _)
>>55 ・シンプル
・軽い
・柔軟
・だけど大規模もいける
/ ̄ ̄ ̄\
/ ─ ─ \
/ (●) (●) \ CakePHPもおなじじゃないのか
| (__人__) |
\ ` ⌒´ /
/ |
(_ ) ・ ・ ||
l⌒ヽ _ノ |
| r ` (;;;U;;) )__)
(_ノ  ̄ / /
( _)
CakePHPは日本語情報が相当そろってるでしょ。
個人のブログでも盛んに発信されてるし。
Yiiは有望なんだろうけど、いかんせん個人での発信者が少ない気がする。
開発画面のフッターはかっこいいと思う。あれは使いやすい。
CakePHP辞典のようなリファレンス本があればいいのにね。
やっぱネットで調べるよりも本を見ながらの方が開発しやすいし。
皆は
会員登録
メールによるクリック本登録
パス忘れたときのメールによる再発行
なんかは自分で作り込んでるの?
いらないだろ
>>60 自分で作り込んでるの?ってどういう意味だ?
誰かが作った物をそのまま流用してるって事か?
そんなわけねーだろ。
>>60 この一連のユーザー登録機能、
フレームワークによっては標準搭載もあるよな。
んじゃ、CIやYIIって
cakephp+ktailiblary以上に携帯サイト作りやすいの?ん?
>>60 adminが登録するタイプの案件しかやった事ない。
みんな携帯サイトつくってばかりということか
>>60 自分で作ったよ。CakePHPで。
テストも自動化したかったから、
ニセのSMTPサーバー作ってそこに送信→ファイルに保存。
それみてCakePHPについてたブラウザをエミュレートするモジュールが
クリックなんてことしたなぁ。
もう3年以上前になるかな。今なら便利な何かがあるかもね。
Ktai Libraryって個人が作ってるショボいやつでしょ?
絵文字の対応が弱かった気がする
Modelにvalidateを記述してもスルーされてしまうんですが、何故でしょうか?
<?php
class Contact extends AppModel
{
var $name = 'Contact';
var $useTable = false; //データベースのテーブルを使用しない
var $validate = array(
"name" => array(
"rule" => 'notEmpty',
"message" => '名前を入力してください'
),
);
}
?>
コントローラ
function index() {
if ($this->data['Contacts']['mode'] == 'confirm') {
if (!empty($this->data)) {
$this->Contact->set($this->data);
if ($this->Contact->validates()) {
$this->render('confirm');
return;
}
$this->render();
return;
}
(以下略)
>>71 >var $useTable = false;
↑こういう場合は、$_schema を設定する必要があった気がする。
var $_schema = array(
'name' => array(
'type' => 'string',
),
);
>>70 setしたデータがあってるか、validatesする前にvar_dumpしてみたら?
ContactsとContactがごっちゃになってそうだけど。
>>47を見る限りCIはタガログ語とインドネシア語の情報が豊富そうだぞ
まずはそっちの語学学習からだな
>>71 俺みたいにappを分けてて、
modelファイルも同一の物があるんじゃねーの
CakePHP2.0でhelperを読み込んだらviewからしか開けません
これってふつうですか?controllerから前は呼べた気がするんですが
前からもコントローラーでApp.importしたが
test
CakePHPの勉強会いってるひといる?どうですか
単なる馴れ合いです
勉強会でコネ作れればいいんだろうけど、俺は毎回孤立するか、名刺交換しても連絡取らないからな
まあ自分みたいなアマグラマーは少ないからしょうがないと思ってる
連絡取るってことは=金が発生するって事だからな。
大の大人がただの情報交換で連絡取り合うのはあり得ないし。
さ、寂しいこと言うなよ。
僕は
>>82君の声を耳元で聞きたくて連絡取ってるわけだし、いつだって君のことを見てるよ
まじかよ。行く気がへっちゃったよ
相手が自分と相応の知識持ってたら、無償の情報交換も成り立つんだけどな。
viewについてですが条件分岐が多くてif文だらけになるんですが
なんかスマートなやりかたってありますかね
そういうのはうちでは全部盛り込んだ。
なにを盛り込んだのよ
ど、どくを・・・
viewからコントローラーやモデルを呼び出すことはできますか?
出来ます
96 :
nobodyさん:2011/11/17(木) 23:19:43.07 ID:t9LRBQJB
一つのIPに対してバーチャルホスト切って運用する場合に
ドキュメントルートってcakephp/app/webrootでいいの?
トップはいいとして他のページを表示しようとすると
Not Foundになっちゃうんだけど。
ちなみにcakephp直下をドキュメントルートにするとうまくいく。
cakePHPを最近使い始めました。
mod_rewriteを使って、実際のパス名と違うパスでアクセスさせているんだけど
paginatorで作成されるURLが、実際のパス名のほうになってしまいます。
どこかの定数を変更したりすれば上手く行くでしょうか?
htdocs/foo/app/webroot/index.php
こんな感じで index.php を置いているとして、でも各種都合により
実際のリクエストは
http://domain.com/bar/baz/controll1/action1 こんな形で来ます。
このとき、mod_rewriteで^/bar/bazを/foo/に置き換えているんだけれど
このときmod_rewriteのフラグに[PT]を入れないと画像などがHelper経由の画像のパスが、
/var/foo/というような、おかしなものになってしまい
[PT]を入れるとpaginatorで生成されるURLが/foo/になってしまう。
ざっと見た感じでは、問題はDispatcherなのかと思うんだけど
app下のファイルでうまく設定は出来ないでしょうか。
>>96 バーチャルホストのドキュメントルートを、各のドキュメントルート直下を指定するといい。
>>97 mod_rewriteは基本触らないでRouterでやった方がいいと思うんだけど
>>98 「各のドキュメントルート直下」というのは
例えば、/var/www/cakephp/のこと?
それとも、/var/www/cakephp/app/webrootのこと?
/var/www/cakephp/
これでいいのでは?
cakephp標準で.htaccessが付いてるし。
2.0でhelperからcomponentを呼びたいのでやりかたおしえてください
あとcomponentからhelperを呼ぶようにするのとどっちがいいですか
普通にPHPクラスを作って、両方から呼び出してください。
CodeIgniterがライセンス変更されて使いづらくなったらしいけど
Cakeは大丈夫かな?使い始めてから突然変更されたらかなわんな
>>99 mod_rewriteが使えるならRoutesよりmod_rewriteが推奨のように見えます。
http://cakephp.jp/old_doc/ch04s03.html > "Routing"(ルーティング) は、(中略)見栄えの良い URL (pretty URLs) をより設定しやすくし、
> mod_rewrite がなくても動くようにするため、 Cake に追加されました。
> しかし、 mod_rewrite を使用するなら、アドレスバーははるかに整理されます。
>>104 今cake使っててCIかyii浮気しようと思っていた俺は、浮気先が一つになったので選ぶ必要がなくなった
オープンソースの宿命だから、そのときはそのときでしょうがない
なんで浮気しようと思ったの?
>>106 えとね。mod_rewriteは○○○ってURLを×××に変えることはできるけど、
×××を○○○に変えることはできないんだよ。
オープンソースの宿命なの?
あとから規約変えるとか詐欺だろ
最近はてブでFuelPHPってのが話題にあがってた
触ってみた?
>>109 mod_rewriteで出来ないことまでやろうとしてるんじゃなくて、
mod_rewriteとRoutes両方で出来ることなら、
mod_rewriteでやったほうがいいんじゃないか。
>>99はmod_rewriteは基本触らないという意見のようなので。
>>111 そんなに便利そうに思えないんだよな。
オレオレの域を抜けてないというか
CodeIgniterが死亡した今Yiiとの一騎打ちになったか
>>111 触ってない
「CIより多少マシ」というコメントがついていたけど、まさにそんな感じだと思った
CIも結局盛り上がらなかったし、既にCakeとかSymfonyというフレームワークがある状況だと、
いいフレームワークが出来てもいかにそれを流行らせるかが問題だと思う
暇そうなプログラマー雇って提灯記事とドキュメントの日本語訳書かせまくるしかないんじゃない?
なんで訳さないといけないんだよ
お前らが英語勉強しろよ
Cakeが流行ったのは提灯記事のおかげだったのか
いいえ、提灯ではない記事のおかげです
>>117 cake初期の頃ブログ書きまくってたけど、「CakePHPがRoRに対抗するフレームワークになるんだ!俺がそうするんだ!」
みたいな変な使命感もってやってたよ
今はすでにPHPでフレームワークがたくさんある、しかもCakeなどのメジャーになったモノがたくさんある状況で
新規のフレームワークに手を出す人は少ないだろうから、まずはそのフレームワークのエヴァンジェリストが必要なんじゃ無いかと思う
>>119 確かにCakeの記事は玉石混交しててバリエーション豊かだった気がする。
Zend Frameworkとかもあんま流行ってる感じしないしな。
cakeネタで書こうと思えばいろいろあるんだけど
twitterとか使い出したら、なんかわざわざブログに書くのめんどくなったよ
Cake1年ほど業務で使ってみたけど
開発スピードは速い
実行スピードは遅い
バグは多くも少なくもない
という印象
俺も同じ意見。
実行スピードの遅ささえ解消されれば、最強なんだがな・・・
Controllerからviewヘルパーを呼ぶと
Fatal error: Call to a member function hoge()がでてしまいます
コントローラには
$helpers = array('Hoge');
とかいて
$this->Hoge->hoge();
と書いているのですが
コントローラー内で呼ぶ場合、newしないとだめだよ。
>>125 ありがとうございます
$this->Hoge = new HogeHelper();
このように書いたら
Fatal error: Class 'HogeHelper' not found が$this->Hoge = new HogeHelper();と書いた行ででてしまいました
最初に読み込んだりしますか
App::Importしないと。
>>127 ありがとう
できなかったからもう寝るお
なぜにググることすらしないのか
馬鹿だから
131 :
nobodyさん:2011/11/21(月) 21:57:23.12 ID:hMc6lKUo
LinuxでPHP5.3.6をソースからコンパイルして使ってるんですが、
CakePHPの内部でfindメソッドの戻り値にモデル名をセットしている箇所に問題があり、
モデル名の代わりに0がセットされるようになってしまい困ってます。
原因はPDOStatement::getColumnMeta()でtable名が返ってこないためです。
ちなみにxampp環境のPHP5.3.8だと問題なく動作しているのですが、
PHP5.3.6に問題があるのでしょうか?
ソースからコンパイルなんてするの
オプションいろいろ付けたかったらするでしょ
135 :
nobodyさん:2011/11/23(水) 19:20:56.88 ID:vIVNUlWb
hetmlhelperで相対パスにリンクを張ったらhttpのアドレスからだとhttpにリンクが張られてしまうんですが、
httpsに張るようにするには絶対パスしかないですか?
>>135 Htmlヘルパーを拡張したMyHtmlヘルパーを作ればいいじゃない。
舞Htmlヘルパー
app_html.phpかな。
CakePHPでサイト作るとしたらふつうだいたい何ヶ月くらいかかるの
自分で学習して作るのか、外注して作るのか、作るサイトの規模はどれくらいかとか書いてくれないと、ピンキリとしか言いようが無い
OpenPNEのようなSNSを自分で作る場合はどのくらいかかりますか?
142 :
nobodyさん:2011/11/25(金) 03:48:39.39 ID:ms97YqHe
Cakeのwebrootにあるcss.phpて動作してる?
App::import('Vendor', 'csspp' . DS . 'csspp');とかやってるけど、そんなもの存在してない気がするんだが
Cakeのwebrootじゃなくてapp/webrootだった
>>142 そのサイトの他ページは見てないからviewがどうなってるのか知らないけど、
フォームの送り先URIがおかしいのでは。
>>143 cssppをダウンロードしてVenderにぶち込めってことじゃないの
css.phpのコメントにでも書いてあると思うが
/ ̄ ̄ ヽ,
/ ',
| {0} /¨`ヽ、
l ト.__.i●
ノ ー─'
ノ ',
●をダブルクリックするとクチバシが伸びるぞ!
人人人人人人人人人人人人人人人人人人
) (
) 伸びるわけねーだろ! ( _/\/\/\/|_
) ,rrr、 ( \ 試したやつ /
⌒Y⌒Y⌒Y⌒Y⌒Y| |.l ト⌒Y⌒Y⌒Y⌒Y⌒Y/つ))) < バーカ! >
⊂ ヽ | __ ☆ __ _/ 巛 / \
/ ̄ ̄ ヽヽ ,`ー \ | |l / \ __つ  ̄|/\/\/\/ ̄
/{゚} 、_ `ヽ/|| , \.|||/ 、 \ ☆ / ̄ ̄ ヽ,
/ /¨`ヽ {゚} | / __从, ー、_从__ \ / ||| / 丶 / ',
| ヽ ._.イl ',/ / / | 、 | ヽ |l ノ//, {゚} /¨`ヽ {゚} ,ミヽ
、 ヘ_/ノ ノ/ ) `| | | |ノゝ☆ t| | |l \ / く l ヽ._.イl , ゝ \
\___ ノ゙ ─ー `// `U ' // | //`U' // l / /⌒ リ ヘ_/ノ ' ⌒\ \
/ / W W∴ | ∵∴ | (  ̄ ̄⌒ ⌒ ̄ _)
/ ☆ ____人___ノ ` ̄ ̄`ヽ /´ ̄
>>145 遷移しなかったのですが、一応解決しました。
原因は、
フォームの
<form method="post" action="./result">
↑ここがおかしかったみたいです。
CakePHP2.0について
■app/Model/Test.php
<?php class Test extends AppModel{public $name = 'test';}
■app/Controller/TestController.php
<?php class TestController extends AppController{function index(){$test = $this->Test->find('all');debug($test)}}
データベースはSQLiteに設定してありますが、データベースを使わず、
モデルTest.phpに書いた変数$nameの値をコントローラから読み込みたいのですが
Fatal error: Call to a member function find() on a non-object
というエラーが出て困ってます
どなたかアドバイスお願いします
cakephp使ってるやつはもっとブログいっぱい書いてくれ。使い方がよくわからないし
>>146 見たけどなんも書いてないし
こういう作りかけで放置?みたいなのがCakeにはちょこちょこ見られて嫌だな
>>152 2.0ではcss.phpは無くなってるし、全体的にちぐはぐだった部分が整理されてきてる感じ
>>150 よくわからんが
Test.phpはtest.php
TestController.phpはtests_controller.php
じゃないのか。
>>141 たぶんその質問をするレベルからなのだろうから、集中してやっても半年
下手すれば3年
勉強するために本を購入しようと思ってるんですけど、
お勧めの本とかを聞くのはスレ違いですか?
もし平気ならお勧めの本を教えてください。
「奉仕を主とする事業は栄え、利得を主とする事業は衰える」
「ほかの要因はさておき、我々の売上は、ある程度賃金に依存しているのだ。
より高い賃金を出せば、その金はどこかで使われ、ほかの分野の商店主や卸売り業者や製造業者、
それに労働者の繁栄につながり、それがまた我々の売上に反映される。
全国規模の高賃金は全国規模の繁栄をもたらす」
奥田 碩(日本経団連名誉会長 元トヨタ自動車会長)
>>156 CakePHP辞典とネットの情報でおk
>>158 PHPは何となくわかるんだけど、ビジネスロジック?をmodelにどう書いたらいいかとかがわからない、、。
ネットで調べてもDBのアクセス方法とかしか載ってないし・・・。
>>159 おいおい、その程度の知識かよ・・・
それなら「はじめてのMySQL」的な本とかかって、DB回りを勉強しろよ。
MVCについても全く概念が無いようだから、
ネットの解説記事を見て、オレオレフレームワークでも作る練習しろ。
その後にCakeやった方が捗るよ。
知識なんていらないからね
必要なかったら本買わずにソースだけ見てやってください
echo $this->Form->input('birthdate',array('type'=>'date'));
上記で出力した項目のValidationについて教えてください。
上記で年・月・日のドロップダウンリストが出力されます。
2011・2・31を選択して保存すると、2011-03-03として保存されます。
ありえない日付を選択されたのでエラーとしたいのですが、標準でできますでしょうか?
>>163 モデルの$validateでruleをdateにしたらエラーに出来ないか?
165 :
nobodyさん:2011/11/29(火) 23:21:26.10 ID:xETpRXat
Viewの必要のないXMLを返すような場合に
Viewを作らずにすますにはどうすればいいですか?
>>160 オレオレフレームワークのつくりかたどっかにないかな
>>166 俺のところでは出来るが
>>168 これ、ページネーション(paginate)を使いたい場合は使えないんだよな・・・
>>169 すみません、バージョン教えてもらえますか?
こちら2.0です。
バージョンだわ。俺は1.3系使ってるし。
いよいよ2.0の話題が増えていくのか
app/webroot/files/sample.phpから
app/views/layouts/layouts.ctp
を参照したいんですけど、相対パスってどうなりますか?
むずかしいもんだいだね
すみません../../views/layouts/でいけました
webrootなので複雑に考えてました
逆にlayouts.ctpから参照するときは
files/sample.phpなんですね
2.0系って、従来のプラグイン使えるのかな
移行ガイドにはそのあたり触れられてないのが気になる
178 :
nobodyさん:2011/12/02(金) 02:48:35.30 ID:LODTi230
CakePHP + Oracleってあまり相性良くない?
Oracleってオートインクリメント使えないんだけど
CakePHP側でうまくやってくれるとか?
そもそも使えるの?
オートインクリメントが使えなかったら
RDBMSとして成り立たないだろ。
お前があほなだけ。
Oracle側でシーケンスとトリガーでやります
182 :
nobodyさん:2011/12/03(土) 00:46:21.36 ID:ewJKbRKA
CakePHP2.0でSqlite3のファイルにアクセスしたいんだけど
どうもうまくいきません。以下のようなエラーが出ます。
Missing Database Table
Error: Database table xxx for model Xxx was not found.
もしかして、CakePHP2.0ではsqlite3のファイルにアクセスできない?
Missing Database Table って言ってんだろw
>>182 Model.phpが無いんじゃないの?
cake bakeしてみたら。
CakePHP辞典の人が2.0バージョンも出してくれたらいいのにな。
今は明らかに情報が足りなすぎる。
sqliteいいの?mysqlしかつかったことない
システムが違う。
sqliteはテキストデータにRDBMSっぽい書き込みをして使用する。
189 :
nobodyさん:2011/12/04(日) 02:37:58.60 ID:vxdOAUX9
sqliteはPHP5からのデフォルトバンドルだぜ?
しかもDBサーバを立てることもなく一つのファイルで完結だ。
俺はこんないいものを知らない。
同意せざる終えない。使い勝手良すぎ
app/app_controller.phpを作って、
function beforeFilter(){
echo '<!--'.$this->params['controller'].'-->';
}
とやってみたんですが、特定のコントローラだけ$this->params['controller']で出力されません
何が原因なんでしょうか?
他とその出ないコントローラの違いで思い当たるのはそのコントローラにもbeforeFilterが指定してあることくらいです
192 :
191:2011/12/04(日) 15:50:38.27 ID:???
>>191に追記です
コントローラ値が空なだけだと思ったら、どうやたapp_controller自体実行されてなかったようです
(普通に文字を出力させてもでませんでした)
御教示いただけたら幸いです
>>191 コントローラ内のbeforeFilter内で
parent::beforeFilter();
ってやってる?
194 :
191:2011/12/04(日) 16:19:33.30 ID:???
>>193 それでした
app_controllerを作ったのがはじめてだったので、決まりごとを理解してませんでした
ありがとう御座いました
195 :
nobodyさん:2011/12/07(水) 14:22:49.37 ID:XLyuG92u
cakephp 1.3.13を使ってcakeError()の情報をXMLで返したのですがうまくいきません。
通常のデータは以下のようなことでViewをXMLにしています。
var $helpers = array('Text', 'Xml');
public $components = array('RequestHandler', 'Security');
function beforeRender() {
$this->RequestHandler->respondAs('xml');
$this->viewPath .= '/xml';
$this->layoutPath = 'xml';
しかし、app_error.phpに
function errorXXXX($params) {
$this->helpers[] = 'Xml';
if ($this->controller->RequestHandler->isXml()) {
$this->controller->RequestHandler->renderAs($this->controller, 'xml');
}
$this->controller->render('errors', 'default');
とやってデバッグすると、内部の$outに正常にXMLが入っているのですが、クライアント
にわたりません。なにか特別のことをしなければならないのでしょうか。
検索処理で該当データなしの場合、「(検索条件)に一致する情報は見つかりませんでした。」みたいなメッセージを出力させたいのですが、
どこにどう記述するべきでしょうか?Controller?View?
View
Viewに決まってるだろ
>>196 controllerかmodelで分岐させて、controllerでset
viewの出したい箇所に変数を<?php echo $message ?>
201 :
199:2011/12/07(水) 23:45:59.78 ID:???
うちはmodel::findのif(empty($data))の分岐でviewに渡す文字列またはarray。
viewの方にもif(isset())で文字列またはarray(リスト表現)
CakePHPはPHP5.3に完全対応できないだろうな。
PHP5.3の恩恵を受けることのできるフレームワークはfuelphpしかない。
CakePHPの時代も終わりか。
アクセス修飾子にvarが使われてる時点で、すごい気持ち悪い。
DebugKit、2.0の環境で使えてます?
LAMP環境で
var $components = array('DebugKit.Toolbar');
とAppControllerに書くと、画面が真っ白になる・・・
xampp環境だと問題ないんだけど。
Lithiumはどうなったのよ
Cakeオワコン過ぎ
技術情報とかぐぐっても2009年とかの前のバージョンの記事しか出ないし
便利なプラグインなんかも大体その頃に作られてて、今は放置
大きめの英語の掲示板で技術質問をしても、1日1個の書き込みもない過疎っぷりでレスが付かない
おワットる
逆に他のフレームワークだと書き込みは多いのか?
以前のような盛り上がりは無くなったね
っていうか、前のバージョンでもさほど動作が変わらないから書き直すほどでも無いしなあ…
でもそういうバージョンの違いがあってもちょっと直すだけで動くと言うことを新規参入者は知らないから、
今から始めようという人には不親切な環境かもね
cookbookも日本語になってないし
えー
find('all')かfindAllかとか、大きな違いで戸惑うと思うけどなあ
他にも色々変わっていて困ったことがあった
>>210 そのくらいは最初にブログチュートリアルで学ぶかマイグレーションガイド見てください
212 :
nobodyさん:2011/12/10(土) 06:31:35.05 ID:dP9DBevc
早く2.0のcookbook日本語化しろよ。
どんだけ情報少ないんだよ。
ちんたらしてるとユーザー逃げるぞ。
よっしゃ、まかせろ!
214 :
nobodyさん:2011/12/10(土) 21:39:38.00 ID:XSFB8P6r
掲示板に画像UPの機能付けようとしてて、現在メディアプラグインを
使おうとしてるんですがうまくいきません。
「The file cannot be transferred from or to location.」と表示されて
先に進めず、力量不足で問題の切り分けもできない状態です・・・
メディアプラグインを使われてる方、アドバイスお願いします。
現在の環境はMacでXAMPP,php5.29,cakephp1.3,mediaplugin1.3です。
>>214 使ったことないからわからんけど、軽くググった感じだと、たぶんファイルの書き出し先がちゃんと指定されてないんじゃね
ログイン機能があったのですがChromeだけセッションが保持されなくなってしまいました。
なにか原因としてかんがえられますか
217 :
216:2011/12/11(日) 19:19:22.12 ID:???
すみません
Cookie削除したら解決しました
>>215 レスありがとう御座います。
現状を報告すると、
xamppのtempフォルダまではちゃんと、ファイルが上がってました。
しかしそこからプラグインが指定している、weroot/media/transfer/img/
フォルダには移動されていませんでした。
パーミッションを777にしても駄目だったので今からソースを追ってみます。
進展があったらまた、こちらに報告します。
>>219 パス間違えました
webroot/media/transfer/img/ です。
221 :
215:2011/12/11(日) 21:11:51.64 ID:???
>>220 サーバー側までファイルは来ていて意図するところに書き出せないと言うことは、やっぱりそういうtypo系のミスじゃないかなー
あとはファイルを置くディレクトリの階層浅くして別のところに作って試してみるとか
>>221 少し進展があったのでご報告します。
今までチュートリアル系のブログを見ながら試していたのですが
最新のヘルプを見るとadd.ctp(登録用view)に追加する記述が変わっていました。
今まで
echo $form->create('Hoge',array('action'=>'add','type'=>'file'));
echo $this->element('attachments', array('plugin' => 'media'));
新しい
echo $form->create('Hoge',array('action'=>'add','type'=>'file'));
echo $form->input('file', array('type' => 'file'));
新しいもので試した所、ファイルはアップロードされていましたが
$hasManyで設定したテーブルにファイルの情報が保存されていませんでした。
----
プラグインの制作者様が細かいバージョンで仕様変更されているようなので
注意して進めていきたいと思います。
また、進展がありましたら報告します。
Cakeの実行速度が遅いので、なるべく急いで他のフレームワークに移行したい場合
おすすめがあるとしたら何でしょうか?
移植のしやすさと得られるパフォーマンスの改善のバランスが良いもの
んなもん経験者にしかわからんと思うが、もしいたら
なるべく急いで他のフレームワークを取得できるなら
Cakeの実行速度を上げる方法を学んだ方が良いですよ。
>>223 どこがネックで遅いのか書くとより良い回答が期待できると思う。
どこがネックかもわかってないなら、まずやることはフレームワークの移行ではない。
App::import()が遅いです
227 :
222:2011/12/12(月) 15:26:43.56 ID:???
メディアプラグインで画像アップロード機能を実装しようと
してましたがもう無理です。
添付されたヘルプと、ソースを追って行った時の処理が違うので
修正する為のコストが多すぎます。
こんな事なら最初から全部自分で書けばよかった。
こんなガタガタのフレームワーク使ったら、そうなるわな…
MVCの本当に基本フレームワークとしては普通に使えるから
それ以上の機能は自分で書いた方がいい
てか、画像アップロードの仕組みってそんなに難しくないんだから
自分で作ればいいのに。フレームワーク使う前の関数・クラスとかあるだろ。
フレームワーク使うと、何故かフレームワークの機能を使わなくちゃならない気分になるんだよな
俺もCakeのヘルパーとかプラグインとか最初試して、結果試した時間は全部無駄になったな
結局自分で作って元気に動いてるよ
App::import()が遅いなら普通にinclude・requireすればいいのと一緒だな
CakePHPで、DBが死んでる時はこっちのコントローラに分岐ってことをやりたいのですが
DB接続できないとモデルのコンストラクタがエラーになって、そこで処理が止まっちまいます
これを避けるにはcake以下を直接書き換えるしかない?
pluginは有志開発だから、過剰な期待しちゃいかんよね
メディアプラグインは2.0でうごくん?
235 :
222:2011/12/12(月) 22:21:11.57 ID:???
>>234 1.3でぼろぼろだから2.0は厳しいと思う。
作者がgithubで「自分の為に作ってるプラグインで、今忙しいごにょごにょ」
って言ってたから自分で修正できないならやめとけ。
結局、誰の助言も聞かずに自分で探して終了か。
画像アップロード如きで「セキュリティが〜」とか言っちゃう奴が
他人の作ったプラグインをすんなりと受け入れるというのが
おかしいとは思わないんだろうな。
頑なに意思を変えないなら、人に質問しなきゃ良いのに。
なんか陰湿でキモい
うかつに質問も出来ないこんな2ちゃんねるじゃ
自分で分かるならわざわざ質問するなとは思わないか?
>>240 自分の中で80くらいがんばって無理だったらネットで質問しつつ後の20の努力をする。
質問に回答もなく、後の20がんばっても無理だったら諦めて違う方法を模索する。
いや、回答出してるじゃん
CodeIgniterは覚えたからCakePHPも覚えたいと思うんですけど難しいよ
モデルってデータベースに接続しないといけないの?
モデルに変数でデータを入れててコントローラーからそれらの変数を取得ってできないの?
グローバル変数みたいなことか?出来ると思うけど。
あと、データベース使わなくても使えるよ。
Railsのせいでモデル=データベースの1テーブルって
間違った考えが広まってしまったよな。
4
モデル名とコンポーネント名が重複してるとコンポーネントの方が優先されてモデルにアクセスできなくなるのって仕様?
UserモデルがあるところにUserコンポーネントも作っちゃうと$this->User->save()とかがundefined methodになってしまう
同名ならそりゃそうだ
またCakeの関数と重なるアクション名を付けてうまく動かなかったよ
すぐ参照できる一覧とかねーのかよ
つーかPHPてnamespaceないわけ?なにこの糞言語
>>251 PHP5.3以降ではnamespace使えるけど、
Cake2.0は動作環境にPHP5.2系も入れてるので互換性のために仕方ない部分もあるのでは。
FuelPHPみたいに最初からPHP5.3以降で作られてるやつはコアでnamespaceサポートされてたりするし。
PHPって後からつけたしつけたし、つぎはぎみたいな言語だし
フレームワークは苦労するわな
>>250 やっぱそうなのか
一つのモデルに対して、同名のコントローラーとコンポーネントを作れると名前がそろっていて綺麗なんだがなあ・・・
たとえばUserModelに対してeat_cake_countをアップデートする処理とかはUserComponentに書きたい
そういうときはUsersComponentって名前にすればいいのかな
なんかその辺のコンポーネントの分け方(ネーミングルール)のセオリーみたいなのがよくわからないんだよね
UpdateComponentって分け方にすると、とんでもなく巨大なファイルになりそうだし
それはモデルに書くべきじゃないの?
コントローラーは薄く、モデルは厚く
>>251 せめて
function actionIndex()
function actionView()
みたいな作りになってればいいんだけどね。
258 :
257 :2011/12/16(金) 13:34:08.67 ID:???
自己解決 <php がありませんでしたw
1つのレコードの1つのカラムを更新したい場合、
findで目的のレコードを取り出してsaveするのと
updateAllで1つだけ更新するのとでは、どちらが速いですか?
<php じゃ動きません
一人で開発する分にはフレームワークいらない
CakePHPだと逆に遅くなる。
PHPは頭よりも手を動かしてなんぼだと思う。
フレームワークは頭を動かす比重が大きくなる。
設計部分が特にそう。
極端に言えば変数が上書きされないようクラス化しておけば実運用では問題ない。
スパッティーコードにもメリットはあって頭使わなくても最速でコーディングできる。
関数の共通化を考える時間があれば手を動かしてた方がいい。後でリファクタリングで十分。
一生のうちPHPで書くアプリケーションが3つほどまでで、書き直しを一切しないというなら完全に同意してもいい
>スパッティーコードにもメリットはあって頭使わなくても最速でコーディングできる。
ワロタ
学生の課題ならそれでいいんじゃね
セッションが設定した時間内で切れてしまうのですが、
原因として何が考えられますか?
core.phpでは以下のようになっています。
Configure::write('Session.timeout', '31536000');
Configure::write('Session.start', true);
Configure::write('Security.level', 'low');
ちなみに、サーバーにアップロードすると自動的に切れてしまうのですが、
ローカルでは大丈夫(もしくは切れるまでの時間が長い)なんですよね・・・
Configure::write('Session.save', 'php');
Configure::write('Session.checkAgent', true);
あと関連しそうな設定は上記になっています。忘れていました。
他のsession関連の設定はコメントアウトされています。
1つのレコードの1つのカラムを更新したい場合、
findで目的のレコードを取り出してsaveするのと
updateAllで1つだけ更新するのとでは、どちらが速いですか?
>>266 findする意味がわかんないんだけど。
saveするだけが一番早いだろうに。
select id from posts where user_id = 3;
update posts set title = 'hogehoge' where id = 5;
と
update posts set title = 'hogehoge' where user_id = 3;
さてどっちが速いかね
user_idがユニークでインデックスあたってれば、後者のほうが速そう
>>268 後者が速いよな。
CakeではupdateAllか。それ以外方法ないよな?
272 :
nobodyさん:2011/12/17(土) 19:59:48.04 ID:6Ny+9Cbj
エレメント使うと Starting to render ってHTMLにコメントが入っちゃうんですけど
これ消す方法ないですか?
274 :
nobodyさん:2011/12/18(日) 04:48:44.53 ID:9T9v3cA3
CakePHP2.0 + SQLite3で
arning (512): _cake_model_ cache was unable to write 'default_"xxx"' to File cache [CORE\Cake\Cache\Cache.php, line 310]
みたいな警告が出るんですが同じ症状の人いません?
>>223 どこが遅いかの原因解明をまず行うべきです。
SQLレベルなのか、画面描画なのか、CakePHPのせいなのかetc
ユーザー数増加によるアクセス過多も問題になることはありますね。
根本的に解決しない可能性もあります。
>>259 やりたい事をそのまま2つの処理で書いて、debugでSQLが出力されますので、
それをMySQLのオプティマイザーなどの時間が計測できる機能で実際に試してみては?
レコード数の多い・少ないにも関連しそうなので、
テストする際には1か月後、1年後などの予測されるレコード数で実行することを忘れずに。
HABTAMで関連付けられた、投稿-タグのテーブルの検索ってどうやるんでしょうか。
やりたいことは、特定のタグを持った投稿を取得する、という単純なものです。
配列は以下のようになっていて、ConditionにTag.name => $tagname などとしても取得できませんでした
Array
(
[0] => Array
(
[Post] => Array
(
[id] => 60089
[message] => testtest
)
[Tag] => Array
(
[0] => Array
(
[id] => 8
[name] => タグ1
[PostTag] => Array
(
[id] => 26
[post_id] => 60089
[tag_id] => 8
)
)
[1] => Array
:
:
)
)
え、そういう問題?
>>278 SQLでとってくる方法はないですか?
「タグ1と関連づいた投稿を全て取得する」というfindができれば教えてほしいんですが、、、
Cakeってさ、findでデータ取ってきた時に
モデル名のキーが頭に付くのがジャマでしょうがないよね
仕方ないからいつもこうやってる
$data = $this->find( ....
$data = $data['モデル名'];
>>277 findするときに、joinsオプション使って明示的にJOINする
>>281 俺は↓する
$data = $this->User->find('all');
$user_data = $data['User']
これだとどのモデルか分かりやすいし。
ただし、アソシエーション使ってる場合などは、適切でないかも。
>>281 $this->data = $data
ってやると、formヘルパーの値valueに自動でセットするためにキーがついてからね。
おれはあんまり気にしたことがない。
>>284 find('all');ってテーブルの全レコード取り出してるの?
あんまりそういう機会ないなあ
あとfind('all')だと配列が返ってくるから、2行目はエラーになるんじゃないか
>>281 じゃまくせえとは思うけどアソシエーションを考えると仕方ないなと思ってそのまま使ってる
CakeEntity使えよ。色々捗るぞ
>>264だけど、
Configure::write('Session.timeout', '31536000');
↑これってセッションファイルが破棄されるまでの時間じゃないのかよ!!!ややこしすぎ
>>288 紹介している人のブログ見たけど、いまいち何が捗るのか分からん
別に配列で指定しても見た目で分かるじゃん。
そんなんだからぺちぱーなんだよ
ぺちぱーってなんですか
PHPer
パーラー(Pearler)ほど洒落た言い回しではありませんね。
ログインの実装のデファクトスタンダード的な方法ってあるの?
ログイン維持しておくのはセッションで?クッキーで?
セッションなりクッキーにユーザーIDだけ保存する?ユーザー情報も保存しておく?
ユーザー情報って具体的に何?
セッションで。名前とか権限とかよく使いそうなデータもいっしょにセッションに入れておく。
AuthComponentだと、usersテーブルの情報だけ持ち回してくれるんだっけ?
その都度SQL叩いてるんだったか、どっちだったか忘れた。
ってかCakePHPってアプリケーションにアクセスするだけで
セッション発行してるけど、なんのために?
中規模のサイトだったらsessionファイルが何万も作られて怖いんだけど
>>301 親切心での自動発行じゃ無いかな
いらないんならSession.startをfalseにしておこうぜ
>>302 falseにしたら
$this->Session->setFlash
のメッセージが表示されなくなったニダ
というか、2.0だとSession.startの設定出来なくなった?
俺も2,0にしたいけど書き換える部分めっちゃあるだろうからめんどうだわ
なんでCakeなんて使って作っちまったんだろうなあ
今更変えられないし
>>306 変えられないのはお前のせい。
正しくフレームワークを使っていれば
自分の作ったコードとフレームワークを分離させられる。
いやいやいやw
時間と手間をかければできる
1.3使ってる、それなりに大きなサイトあるだろ。
そのサイトで問題ないんだから、使い方が悪いだけだ
ふと気づいたんだけど、1.2系でさえまだメンテナンス続いてるのね
最終版と銘打ったものが出ない限り、クリティカルなバグを含んでなければコアをアップデートする気になれない俺は無精すぎる
動いてるシステムに手を入れたくない気持ちはよく分かる。
そうそう
寝た子を起こすようなことになってしまったら嫌だし
メジャーバージョンは動いているシステムだとアップデートするのはきついね。
マイナーバージョンは以前あったセキュリティコンポーネントのバグとかあるから注視しないといかんと思うけど。
1.3.13を使っています。
ビューキャッシュって$autoLayoutがfalseの場合、
キャッシュファイルが生成されません。
レイアウトを使用しない場合、キャッシュが生成されないのでしょうか?
>>315 その状況でのみキャッシュ生成されないんならそうなんじゃない?
layout/empty.ctpとか作ってコンテンツだけを単純に出力するレイアウトにして適用すれば回避できそうだけど
317 :
315:2011/12/24(土) 17:08:20.11 ID:???
>>316 ありがとうございます。仮のレイアウト作る方法で出来ました。
ただビューキャッシュについては上手く行かないことが多くて、
例えば、core.phpに
Cache::config('default', array('engine' => 'File', 'prefix' => 'aaa_'));
としてもキャッシュファイルにprefixが付きません。
pathを指定しても、指定した箇所にファイルが生成されず、
普段通りapp/tmp/cache/viewsに作られるだけだし・・・
1.3.13をダウンロードして初期設定以外変えてないのですが
どうにもキャッシュ設定の変更が上手く行きません。
ググっても問題を見つけられないし・・・
分かる方いたらアドバイスお願いします。
318 :
nobodyさん:2011/12/25(日) 03:30:55.85 ID:S4Adtqyt
CakePHP2.0でSessionの設定関連がcore.phpに見当たらないんですが、
セッションの有効期限を変更するのってどこをいじればいいんでしょうか?
319 :
318:2011/12/25(日) 03:57:41.58 ID:???
自己解決。
一箇所に固まったのね。
PaginatorHelperって使ってる?
自分で作るよりそんなに楽なの?
>>320 標準であるから使ってる。既にあるものを再作成しちゃいけない。
SQL文のパラメーターを自分でエスケープする時ってmysql_real_escape_stringでいいんだよね?
conditions に array("MATCH(title) AGAINST ('".mysql_real_escape_string($keyword)."')");
みたいな感じに書くと「DBに接続できてないからmysql_real_escape_stringは使えないっすよ」的なエラーが出るんだけどどうしたらいいんだ
>>323 cakeディレクトリ以下をmysql_real_escape_stringでgrepすることぐらい思いつかなかったの?
>>323 cakeディレクトリ以下をmysql_real_escape_stringでgrepすることぐらい思いつかなかったの?
>>323 App::import('Sanitize');
Sanitize::escape($keyword); とか
>>321,322
でもDBの値を変更して出力する場合には
対応してないですよね?
>>327 ページネイトでDBの値を変更するってどういう用途?
webrootをpublic_htmlにして、それ以外のフォルダはドキュメントルートの外に起きたい場合はどのように設定するのでしょうか?
↓のように見える件について報告はしたけど返信もこないんですけど
たいしたことないから修正されないんですかね?
実際に個人情報とか漏れてるわけでもないので別に問題ないっちゃ問題だいけど。
ちょうどフレームワーク名に使おうか迷っててcakephpにも興味あるんですが
cakephpてurlにクエリをつけるとこういうページが表示されるものなんでしょうか?
http://mystone.aeriagames.jp/?
うわー、urlに?を含めたこと無かったからびっくり。
>>324-325 以前は入っていたような気がするんだけれども、2.xになってから使われてないっぽかったので、よくわからんので質問したんだ
説明不足ですまぬ
>>326 さんくす!
333 :
315:2011/12/27(火) 17:42:17.16 ID:???
どなたか
>>317についてはわかりませんか?
もう何日もググって試してやってますが、
ビューキャッシュファイルにprefixが付きません・・・
>>329 webroot/index.phpでパスを指定する
>>328 DBから一覧を取得してその中の日付のフォーマット変えたり、
0か1で入っている性別を男と女に変換したりとか。
>>330 これは特殊例だな
多分トップページだけCakeのルーティングを外しているか特殊なmod_rewrite書いたりしてるはず
ソース読めないんで確かなことは言えないけど。
まあそもそも1.2の初期バージョン使ってるようなサイト参考にされても困る
>>335 1.3ならvirtualField使った方が良いのでは。
日付のフォーマット変えるのは自分は表示する時にしてるけど。
>>335 DBの値を変更って、SQLのINSERTとかUPDATEかと思った。
DBから引いたデータを加工するなら、viewでやろうがmodelでやろうが好きにすればいい。
そのあたりはpaginateでもfindと同じこと。争点にする意味がわからん。
Cakeはデータがただの配列だから、
こういうときつらいよな
Yiiはオブジェクトなんだっけ?
Cake使ってるWebサービスはあるけど、アプリはあるの?
アプリってなんぞ
意味不明ワロタ
mixiアプリとかのことかな?
すみません。webアプリのことです
webサービスとwebアプリの違いは?
wikipediaによると
・Webサービス(ウェブサービス)とは、HTTPなどのインターネット関連技術を応用して、SOAPと呼ばれるXML形式のプロトコルを用いメッセージの送受信を行う技術、またはそれを適用したサービス。
・ウェブアプリケーション(Web application)は、ウェブの機能や特徴を利用したアプリケーションソフトウェアのことである。
ウェブアプリケーションの一例としては、ウィキペディアなどで使われているウィキやブログ、電子掲示板、銀行のインターネットバンキング、証券会社のオンライントレード、電子商店街などネット販売のショッピングカートなどを挙げることができる。
その定義通りだとして(違和感はあるが)、逆にWEBサービスとして使われてるのを見たことないな
>>335 v2.0でもvirtualfieldだな
Paginatorのソートは、sqlに投げてるだけっぽいから、
加工後の値でソートしたいなら、virtualfield使うのが一番楽
SOAPやRESTfulな環境で使うイメージがわかない。
SOAP使ってないとWebサービスにならないのか
って、んなわけねーだろ!
俺は↓な風に思ってたけど・・・
Webサービス→mixiとかtwitterとか
Webアプリケーション→OpenPNEとかWordpressとか
Webサービス∈Webアプリケーション
$this->User->save(array(
'id' => $user['User']['id'],
'lastlogin' => date("Y-m-d H:i:s", time()),
));
↑こうやってlastloginにユーザーのログイン時間を保存しているんですが、
ローカルではちゃんと保存されるのに、
全く同じコードをアップロードした本番サーバでは
保存されないのはなぜ??
databaseの設定ミスとかじゃないよね?
webrootをpublic_htmlに変更し、それ以外を全部ドキュメントルートの上に置くというのは難しいですか?
MVCについてお聞きしたいのですが
学年
クラス
生徒
を管理するときに
コントローラ・・・学年
アクション・・・・クラス
id・・・・・・・・・・・生徒
とするのか
コントローラ・・・学年/クラス
アクション・・・・・生徒
とするのどちらがよいでしょうか?
前者の場合はモデルへデータを追加するだけで管理できますが
紺者の場合はモデルへデータの追加とアクションの追加を行いますが
どちらが定番といえますか?
>>353 本番サーバとやらのログを貼らないのはなぜ??
359 :
353:2011/12/29(木) 12:45:18.65 ID:???
>>356 まともな日本語でおk
「管理」の用法が特殊で意味がわからない
あと、MVCについて誤解してないか?
>>359 webサーバ、データベース、cakeあたりのログ
>>360 分からない奴は黙っていたほうが良い
恥を書いて荒らしなる道に行くから
わからないままは恥ずかしいので、
是非教えてください
荒らす気はありません
>>356 その例なら学年とクラスは一緒じゃないか?
カテゴリ・サブカテゴリの関係性だろ?
なかなか斬新なMVCの解釈だなw
年末で暇なのか、賑わってるなー。よきかな
>>356 学年、クラス、生徒は全部モデルだよ。
正確に言えば、モデルが扱うデータとその属性だよ。
ま普通に考えれば、生徒がたくさん入っている生徒達データがあって、
学年とクラスは、生徒一人ひとりの属性。
コントローラはURLとモデルが持っているメソッドへの変換を行うものと考えればいい。
そして、メソッドの戻りをビューに変換する役目も持っている。
コントローラはあくまでURLとデータの変換をするだけで
学年とかクラスとかそんなものを扱う所ではない。
>>356は俺たちの煽り耐性を試してるんだと思う。
MVCを勘違いしていることはよく分かる。
MVCを理解していない人は非常に多いが、こういう勘違いをする人はレア
cookbookさえ読めば解決だと思う
MVCでラーメンは作れますか?
cookpadさえ読めば解決だと思う
MVCはなくても電気は足りるよ
MVC 2014年10月から引き上げ決定
MVCが異音出してて壊れそうなので買いに行きたいんだけど、そろそろ値段は落ち着いてるのかな
おれが、おれたちがMVCだ!
MVCとは違うのだよ、MVCとは!
MVCであることを強いられているんだ!
早くMVCになりたい!
MVC48がレコード大賞だってよ
さあ、ケーキ作りに戻ろうか。
2
新年だし1.3系のシステムを2.0系に作り直してみるぜ
それは貴方にいかなる利益をもたらすのか?
勉強にはなる。
「使わない機能を切る」みたいな機能があればいいのにな。
なんでもかんでも読み込むから重くなるんだと思う。
>>388 他にも2.0で新規に作ったシステムがあって、それと同時に開発してるから、バージョンが違うとややこしい
あとコードが汚いからイチから書き直したいというのもある
いずれにせよ、古くなったバージョンからはさっさと離れたい
2.0って?p=1みたいな感じでもキャッシュは効くのかな
1から作りたいなら、いっそのことCake風オレオレフレームワークを作れよw
俺はそんな感じの作ってるよ。
cakeやるんだったらbakeって覚えとかなきゃマズい?すげぇかったるそうなんだけど。
楽できなくてもいいなら問題ない
>>395 まぁ使う方が楽なんだろうけど、やんないならやんないで別にいいって部類ならスルーしちまおうかと思って。
てか、bakeやらなくても1回作った物をコピーすれば良いだけじゃん。
同じような箇所が結構あるだろ
>>394 cakeに用意されているサンプルデータでいいから、1回はbake体験した方がいい。
ひな形とはいえ、MVC全部を作ってくれるのは助かる。
bakeやった方が良さそうという事がわかった。サンクス。
フォームヘルパーをカスタマイズしたいときって多いと思うんだけど、どうやってる?
1.helpers/form.phpをapp以下にコピーして改造
2.FormHelperを継承したMyFormHelperを作成
1→Cakeのバージョンアップ時に問題
2→ビューでの変数名がFormじゃなくなるのが嫌
>>400 半角スペースは投稿時に省略される。
>.2.FormHelperを継承したMyFormHelperを作成
今回はこっちを採用した。html5の input email を使いたくて、FormHelperを継承した。
JavaScript系のヘルパー使うのって普通にjQueryのコード埋め込むのと比べてメリットありますか?
PHPファイルで使える
結局MyFormHelperをビューで$this->Formという変数名で使うことはできないの?
>>404 namespaceでも使えば出来るんじゃないの?
誰かAppModelをオーバーライドして
複合主キーにも対応させてくれないか?
断る
変数は必ずpublic/privateつけて、メソッドはpublicなら省略するのが俺ルール。
つけたほうが一貫性があっていいとは思うんだけど、
public function 関数名
と書くと、public functionが長すぎて、ぱっと見たとき関数名に目が
行きにくいんだよな。変数は常にpublic/private意識しておくけど、
メソッドはほぼpublicで問題ないし。
public付けないと気持ち悪くね?
1.3時代からpublic付けてたんだが。
414 :
nobodyさん:2012/01/05(木) 12:39:38.01 ID:6HbHp9Xn
CakePHPを勉強し、自前のウェブサイトを構築したおかげで、ウェブサービスの企画があっという間できるようになった。
頭の中に、ウェブサービス構築のための常套手段が植え付けられたからだと思う。
CakePHPというよりもフレームワークを使用するメリットと言った方が適切かな。
2.0になって、404吐かせるのがcakeErrorからthrow new NotFoundException()に変わったせいか、
AppControllerのbeforeFilterでsetした値が404の時にビューに反映されないようになった?
全ページでヘッダー部分に表示させてる共通データの部分が、404の時だけundefined variableになってしまう
SQLログ見るとデータ自体は取ってきてるみたいだけどsetしたはずのデータがビューに反映されない
>>413 コア見るとpublicつけてるみたいね
コアと共通表記にしたいのならpublicつけるべきだと思う
>>415 ビューがClassRegistyに登録されなくなったから、ビューの別インスンタンスが生成されて
それが使われる。
あとデフォルトのExceptionRenderer(というか、CakeErrorController)はbeforeFilter()まで実行しない。
beforeFilterで例外飛ばすときもあるじゃん?
というわけでExceptionRendererを継承したクラスを作ってそれを使うのがお勧め。
_getController()でもオーバーライドすればいいじゃないの。
>>417 ありがとう
なんか取り回しが悪くなった気がして仕方ないがw
419 :
nobodyさん:2012/01/06(金) 01:07:10.01 ID:yz+Wi1W6
Model::find('all')のfieldsにサブクエリを使いたいんだけど
どうすればいいですか?
セッションファイルってどれだけ溜めてもいいもん?
云万になるとlsが遅くなる気がするけど、
PHPがセッションファイルを直接取ってくるんならとくに大丈夫なのかな
>>420 全列挙する必要がある ls には O(N) 必要
それに対して目的のファイルが判っている場合は O(log N) に収まる
古いファイルシステムだとまた話が変わってくるが
>>421 100万あっても無視できる程度になりそうですね
ファイルってインデックス化されるん?
そらされるか…
インデントはスペース派なんだけど、
Cakeはタブだよね?
スペース派の人どうしてる?
Cakeに合わせてる?
プロジェクトや会社によってはPEAR規約(っぽいもの)で開発してたりするよ
routes.php
>>424 自分で書いたコードはスペースインデント
routes.phpとか既に用意されているファイルはタブインデント
一人プロジェクトだから細かいことは(゚ε゚)キニシナイ!!
携帯からアクセスがあったときは、
app_controller の before_filter で
header('Content-Type: application/xhtml+xml; charset=Shift_JIS');
という風にHTTPヘッダの content-type と charset を設定して、本来
Content-Type: application/xhtml+xml; charset=Shift_JIS
このヘッダが送られるはずが、
Configure::write('debug', N);
この設定を、0(デバッグ無し)に変更すると、
Content-Type: text/html
と、出力されてしまう。
(3 にするとちゃんとxml用のヘッダが送られるのは確認済み)
このケースが逆なら、手動でヘッダを送る前にデバッグ情報が送られているのかなと思うのですが、
デバッグ無しにすると、別のヘッダが送られているのが不思議です・・・。
どのファイルのどこでHTTPヘッダが送られているかって確認できましたっけ?
430 :
429:2012/01/07(土) 08:33:08.99 ID:???
大事なことを言い忘れていました。
>>429の現象はさくらの本番サーバにアップしたときにのみ起こります。
開発環境のlocalhostではdebugの値に関係なく、
意図したHTTPヘッダが送られています。
アドバイスいただければ幸いです
一部のアクションでしか使わないコンポーネントを全部ロードするのは無駄ですが
アクションに応じて、ロードするコンポーネントを変更することはできないのでしょうか?
>>432 リンク先は違う情報だったけど要は
App::import('Component', 'Mailer');
$Mailer = new MailerComponent();
$Mailer->initialize( $this );
$Mailer->startup( $this );
ってやればいいのかな?
>>431 2.0からコアの機能で動的に読めますが、1,x系は拙作のHackプラグインを使うことによって
期待する機能が提供されます。
https://github.com/hiromi2424/hack_plugin Alias->loadComponent('Mailer');
startupするかは第3引数にtrueを指定すればOKです。
ドキュメントが整備されてないのですが需要があればします。
あとプラグイン名が厨二病臭いですが厨二病なので諦めてください。
>>434 ありがとうございます
拝見しましたが、思ったより長いですね
>>433のやり方じゃ駄目で、このようにきっちりやるべきなんでしょうか
>>435 短期的には
>>433のやり方でも問題ないです。
メールのマネージャー程度のコンポーネントならまず大きな問題は起こりえないでしょう。
長期的に見れば、2.0で導入されるやり方に近いほうがより良いと思います。
わかりました、ありがとうございます
コードはありがたくいただきます
2.0でこのAdminAuthComponentがちゃんと動いている人いる?
http://www.1x1.jp/blog/2008/01/cakephp_adminauthcomponent.html 開発環境では問題なかったんだけれども、レンタルサーバーに上げてみたら
> header("WWW-Authenticate: Basic realm=\"Please Enter Your Password\"");
のところが効いてないのか、Basic認証のダイヤログが出ずにAuthorization Requiredと表示されてしまう。
HTTPヘッダーを見てみたところ、開発環境(正しく動いている環境)では
>HTTP/1.1 401 Authorization Required
となっているのが、本番(正しく動かない環境)では
>HTTP/1.1 200 OK
が出てしまっている。
ちょっと
>>429の状況に近いかも知れないけど、自分の方はdebugの値に関係なくheaderがちゃんと送信されてない感じ
439 :
438:2012/01/07(土) 21:49:27.70 ID:???
すまん、自己解決
CGI版のPHPだとBasic認証効かないのね
2になってからちょっと軽くなった?
1.xと比べてシャキシャキ動いてる気がする
2.0.5ぐらいになってるけど、バグは減った?
なに、動きが軽くなるなら乗り換えたいが
何となく軽いと言うだけでベンチを取ったわけじゃないので話半分に聞いてくれ
そうか、ベンチ取った人とかいないのかな
446 :
nobodyさん:2012/01/09(月) 00:29:39.74 ID:pfm1AGOc
controllerでfindするときのorderを
'order' => array('Person.secondname ASC')
のようにしているんですが、複数のorder条件をつけるのはどうしたらいいですか?
具体的には苗字順に並べるようにしてるんですが、苗字がない人は下の名前(Person.firstname)を参照して五十音で並べたいです
自己解決しました
$options['order'] = array(
'Person.secondname, Person.firstname ASC'
);
で$optionsをうしろにくっつければいけました
orderがarrayになってるんだから分かるだろ?
コントローラーで
function index($param){
とアクションを作っていて、URLで
コントローラー名/index/パラメータ
と呼ばすに
コントローラー名/パラメータ
とやっても動くようにするにはどうすればよいでしょうか
ぐぐるとRoutesを使う例が出てきましたが、それだと他のアクションが使えなくなるようでした
アクションとして存在しない時のみ、indexのパラメータとして扱うことはできないでしょうか
>>450 $paramが数値なら、ルーティング規則でその部分に(数値であることの)正規表現を書けば
いける。詳しくはぐぐって。
だめだったらカスタムルートオブジェクトを作成してひーこらするしかない。頑張って。
その部分にってのは紛らわしいなごめん
Router::connect()の第3引数で指定するってこと。
調べ中ですがまだうまくいっていません
ちなみに$paramは文字列で、複数ある場合もありますが大丈夫でしょうか
数値ならってわざわざ書いたのはなんでだと思う?
cakephpのサイトだけ紹介してるサイトないかな
456 :
nobodyさん:2012/01/09(月) 23:34:27.49 ID:SU3KFcHv
2になって、AuthComponentがかなり洗練されたね
CakePHPでページを表示すると下の方にsqlを200件だしているような表示になります
これは実際に200件実行してるということでしょうか
すると問題ありますかね
件数取得してるだけじゃないのか?
sqlを200回実行してるわけねーだろ
>>458 ありがとうございます。
(default) 262 queries took 46 ms こう表示されてました。
>>459 262回クエリ投げてるな
どんなページだか知らないがさすがに多すぎると思う
っていうか、自分で実装したコードなんだろうからクエリ回数くらい検討つくだろう
アソシエーションで勝手にいっぱい持ってきているのならcontainableで引っ張ってくるデータを厳選すればいいぞ
>>460 ありがとうございます。
containable調べてみます
containつかったら88 queriesまで減らせませした
463 :
nobodyさん:2012/01/10(火) 03:05:48.92 ID:Rzgwr3Tg
CakePHP2.1alpha を早速いれて試してみたが、エラーメッセージ(スタックトレース)がかなり見やすくなってる
Cakeって気付くとめちゃめちゃクエリ投げてるよね
遅い原因の一つはこれか?
今頃気づいたのか
Yiiにしとけ
CakePHPはオワコン
466 :
nobodyさん:2012/01/10(火) 12:07:44.08 ID:+4VQFJJn
v1.2の話なんだけど
aテーブル
bテーブル
a_bテーブル
があるとして
a にhasAndBelongsToManyを設定して
a_b にbelongsToを設定したら、このbelongsToがスルーされる。なぜだかわかる?
削除用に設定したいんだけど、毎回bindModelするしかないのかな。
Yiiってほとんどのレンタルサーバーで使えないじゃんw
PDO使うからか?
Yiiっていいの?
>>466 recursive設定するのはどうかな
最近2.0使ってるんだけど、本番環境時に/foos/barとか適当なURLにアクセスすると
表向きは404返してくれるんだけど、error.logにmissing controllerが記録されるようになった気がする
テスト環境時はmissing controllerエラーを表示してくれてOKだけど、本番でそれがerror.logに記録されるのはなんか変じゃないか?
/robots.txtとか/favicon.icoとかにアクセスがあったら、ひたすらerror.logに記録されちゃってるし(ファイルがない場合)
それ、php.iniの設定では?
473 :
471:2012/01/10(火) 22:52:12.56 ID:???
>>471 説明不足ですまぬ
/app/tmp/error.logに記録されまくって困っている
>>471 .htaccessでなんでもかんでもCakePHPに渡すようになってる事が問題
設定でExceptionHandlerがログを取るかどうかが指定できたような気がする
今再インストール中で確認できないが
476 :
471:2012/01/11(水) 19:36:53.02 ID:???
2.0ではController::cakeError()の代わりにどうやってエラー画面出すの?
479 :
nobodyさん:2012/01/12(木) 20:06:56.05 ID:srRhUW1K
480 :
nobodyさん:2012/01/13(金) 01:39:04.98 ID:ayVGOPQu
通常セッションの有効期限はcore.phpで設定すると思いますが、
コントローラーの中で動的に変更したい場合どうすればいいですか?
Cakeで作られたサイトのフォーム見ると、
<input name="data[Post][title]"
じゃなくて
<input name="title"
になっている場合があるのですが、
これって単にフォームヘルパーを使ってないだけですかね?
それともフォームヘルパーでnameを配列にしない方法があるのでしょうか?
Cakeのヘルパーは使えないことで有名だからな
関数で帰ってきた配列を代入せずに、
そのまま添字付けることって可能?
test()['test']
みたいな
やってみりゃいいじゃん
できなかったから他の方法ないかなぁと思って
内部的に戻ってきた配列に添字つけて参照するだけだし、
難しそうではないんだけどなぁ
あーよく俺もそれできたらいいなと思う
つーかCake関係ないやんそれ
function getValueFromFunc($func,$key) {
$a = $func();
return $a[$key];
}
cakeってパラメータにメタ文字使えないんじゃ
490 :
nobodyさん:2012/01/16(月) 17:55:18.55 ID:l7Fd5fgU
>>485 PHPの公式コミュニティ行って頼んでこいよハゲ
1.3.10使ってるんだけど、cccが3のレコードのaaaとbbbを更新したくて
$this->updateAll(array('aaa' => 1, 'bbb' => 2), array('ccc' => 3));
だと失敗して
$data = $this->find('first', array('conditions' => array('ccc' => 3), 'field' => array('id')));
$data['ModelName']['aaa'] = 1;
$data['ModelName']['bbb'] = 2;
$this->save($data);
だと成功する。今まで2年ぐらいCake使っててこういうの初めてで、何故だかわからないんだけど
わかる人いる?
>>492 1個目の例で失敗しそうにないけど、何て出て失敗するの?
Cake2.0を使ってます。モデル内でコンポーネントを使っていて
PHPUnitでそのモデルをテストすると
Fatal error: Class 'Component' not found in /path/to/Controller/Component/HogeComponent.php on line xx
と怒られる。
ちなみにモデル内でのコンポーネントの呼出はこんな感じ。
App::uses('HogeComponent', 'Controller/Component');
$hoge = new HogeComponent(new ComponentCollection());
Call Stackの最後にはinclude( '/path/to/Controller/Component/HogeComponent.php' )とあるんだけど
これはコンポーネントのインクルードでなにか問題があったということかな?
コンポーネントが見つかりませんというエラーメッセージについて分かる人いたら教えてください。
496 :
nobodyさん:2012/01/17(火) 02:58:24.75 ID:7jQnUKTc
斜め読みだけど、その HugeComponent の冒頭に
App::uses('Component', 'Controller');
と付け加えればよいのでは?
それならテストコードにつけるべきだな。
モデルでコンポーネント使う設計についてはもはや何も言うまい
>>496 斜め読みすげえ!
エラーが消えてテストできるようになったよ。サンクス!
499 :
nobodyさん:2012/01/17(火) 11:04:16.23 ID:7jQnUKTc
>>498 CakePHPは、2になってクラス階層を意識する場面が多くなったと思う。
2.1ではさらにその傾向が強くなっている。
2で開発しているのだったら、今のうちに2.1にアップグレードしておくのをおすすめする。
2.1ってそんなに変わるのか?
リリースによれば2.0と完全後方互換があるらしいけど
1.3で開発してるけど、後々問題になりますか?
>>501 1.3→2系の移行は結構な手間になるから
新しく作るなら2にしといた方がいいんじゃないすかね。
フレームワークのほうが面倒になるとか本末転倒だな
>>501 ディレクトリ階層がかなり変わったので、別物と考えた方がいい。
みんなはもう2系で開発してるの?情報少なくないか?
ゼロから始める人には入門情報が少なくて厳しい状況かも知れないね
でも1.x系の開発経験あれば、マイグレーションガイドを見つつ書いていけば何とかなる
何とかならなかったときにはこのスレがある
508 :
nobodyさん:2012/01/18(水) 11:54:09.09 ID:1MLy4CWB
v2のメリットは、実行速度の向上につきると思う。
問題は、既存の資産が直接使えなくなったこと。
特にAuthまわりは、完全に変わってしまっている。
これまで、直接 Auth コンポーネントをオーバーライドして機能拡張していたんだけど、すべて書き直して、プラグイン化した。
*機能拡張の内容は、「ユーザ登録確認メールの送信」「オートログイン」「SSL対応」「権限チェック」。
しんどかったけど、今後のプロジェクト間での使い回しと拡張性が確保できた点では、それなりのメリットが見込めそう。
メール送信も大きく変更された部分だが、これはすばらしい出来。
Authが異なるのは辛いな・・。
メール送信や画像アップロードはライブラリ作ってるけど、
Authはフレームワーク全体に関わることだからな
510 :
nobodyさん:2012/01/22(日) 17:25:08.97 ID:MxKFDdQF
1.3系での話しですが、日本語メールを送る場合
EmailComponent::templateで指定したファイルの文字コードは
UTF-8もしくはShift-JIS、どちらが正しいのでしょうか?
文字コードで迷ったらutf-8がいいですよ。
あとあと楽です。
全角含まないで保存すると元に戻るのが煩わしい
function add() {} // 保存アクション
function edit() {} // 編集アクション
↑8割方同じ処理をしているアクションがあるときどうしてる?
俺はaddに同一処理かいて、
エラーや編集のときの個別処理だけeditに書いてるんだけど、
アクションのURLが違うからエラーでの書き込みフォームに戻る処理などが難しい
editでreturn;するとeditビューが呼ばれてしまう
514 :
nobodyさん:2012/01/23(月) 11:36:23.68 ID:Vo1w/brb
echo $form->select('Order.prefectures', array(
'北海道' => '北海道',
'青森県' => '青森県',
'岩手県' => '岩手県',
'宮城県' => '宮城県',
'秋田県' => '秋田県',
'山形県' => '山形県',
'福島県' => '福島県',
'茨城県' => '茨城県',
(中略)
'鹿児島県' => '鹿児島県',
'沖縄県' => '沖縄県'
), 1, array('empty' => null, 'class' => 'orderform')) . PHP_EOL;
と書いたんですが、出力をみると一つ目の北海道にselectedがついてなくて、
<option value="福島県">福島県</option>
option value="茨城県">茨城県</option>
と茨城県だけ頭の<が出ないです
茨城の項目を削除すると、次の栃木の頭の<が消えるので福島が原因かと思ったんですが
福島を消しても栃木が消えるので8個目が消えるという感じかも知れないんですが
解消する方法ご存知でしたらお教えくださいますようよろしくお願いいたします
日本語文字コードじゃね?
>>515 ありがとうございました
google chrome の問題だったみたいです
>>513 俺はaddとeditは一緒にaddの中に書いて、idがあるかどうかで条件分岐してるわ
アクション分けたいならfunction _addOrEdit()みたいなのをつくって、共通処理はそこに突っ込めば?
cake2.0でdatetimeのフォームから送信した年月日が,配列のままDBに格納されようとしてエラーが出ます。
deconstructが効いていない理由がわかりません…助けて。
view:
echo $this->Form->label('birthday', '生年月日');
$minY = date('Y')-100;
$maxY = date('Y')-18;
echo $this->Form->datetime('birthday', 'YMD', null, array('monthNames' => false, 'minYear' => $minY, 'maxYear' => $maxY, 'separator' => array('年', '月', '日')));
コントローラ:
if(!$this->Hoge->save($this->request->data)) {
$this->Session->setFlash('データの登録に失敗しました。');
}
Formヘルパー(separatorの配列対応):
//$opt = implode($separator, $selects);
$opt = "";
$i = 0;
if (is_array($separator)) {
foreach($selects as $select) {
$opt .= $select.$separator[$i];
$i++;
}
} else {
$opt = implode($separator, $selects);
}
520 :
519:2012/01/24(火) 23:16:35.15 ID:???
連投すまんぬ。もうひとつ捕捉。
DBにdate型とかでbirthdayフィールドが存在しなければ
Model::deconstruct()はきっと何もしてくれない。
Model::deconstruct()のメソッド内にある
$type = $this->getColumnType($field);
で有効な値が取れて初めて機能する模様。
なんともはや。。。
2.1でAppControllerとかのファイルが無くなっているんだけど、
これは今後のバージョンで無くすということ?使うなということ?
522 :
521:2012/01/25(水) 16:40:31.53 ID:???
すまん、libの中から消えただけで、appの下に標準で含まれるようになったのか。
2月中に2.1正式版出るかなー
今2.0でリリースすると中途半端な気がして、2.1のリリースを待機している・・・
Cakeからの移行先って何か考えてますか?
そろそろPHP5.3仕様のフレームワークに移りたい・・・
あと、データが配列なのももう嫌。
今のところ、正式版でてるのはSymfony2かFuelPHPかな?
Yiiも次期バージョンでは5.3を使うらしい。
なんで配列は嫌なの?
配列嫌ならRoR行こうぜ
>>525 たとえば、ビューがifだらけになっちゃうことなどです。
バーチャルフィールドである程度は対処できますが、
限界がありますし・・・
PHPUnit3.6インストールしたら、debug()とか出力されなくて
マニュアルを確認すると
「TipAll output is swallowed when using PHPUnit 3.6+. Add the --debug modifier if using the CLI or add &debug=1 to the url if using the web runner to display output.」
test.phpで走らせてるので、URLに&debug=1をつけたのですが
何も出力されません。わかる人いたら教えてください。
環境
CakePHP 2.0.5
PHPUnit 3.6.9
>>527 そんなこと無いけど。
どういう場面でviewがifだらけになるのか、想像つかん
1.3.14ですが、webrootの中にフォルダを作り、
同名のコントローラにアクセスすると、そのフォルダを読みに行ってしまいます。
例
/webroot
└/test
└index.php
の場合、
http://example.com/test/ でアクセスすると、/webroot/test/フォルダ内のindexファイルを探す
同名のフォルダがあった場合、コントローラーを読み出すようにするには
どうすればいいのでしょうか?
>>524 配列が嫌って、PHP全否定じゃないですかw
>>530 仕様
別名にするか.htaccessを書き換えるしかない
sqliteってすごく便利だったのね
ページネーションのソートの際に、対象フィールドのリンクには
<a class="desc" のようなclass名が付くと思うのですが、
1.3.14では付きません。なにか設定方法が変わったのでしょうか?
1 -> 2 -> 3
と遷移する画面があるとして、1でPOSTされたdataをそのまま3で使いたい時
どうすればいいかね?
2でinput hiddenで埋め込むしかないの?
なんで2.0になってから404 Not Foundもapp/tmp/error.logに記録されるようになったん?
ボットの適当なアクセスでerror.logが更新されまくって困るんだが
>>523 今、2.0系で開発してるんだが、2.1系とどれくらい互換性あるのかね
2.1まで待てばよかったかなぁ・・・
find("all")で全レコードをviewで一覧出力したあとで,
リンクをクリックすると絞り込み検索して,結果を一覧表示させる方法がわからないです。
全レコードの出力はindexアクションなんだけど,
絞込検索の方は,また別にアクションを書く必要があるの?
それともindexアクションの中で絞り込むことってできるの?
最初の一覧表示を「全部が含まれる絞り込み」と考えればコードは一つ。
>>538 2.1は2.0完全互換なので問題なく動くはず
ただ2.1でも重要な部分のアップデートがあるから、その辺はどちらにせよそのうち直すことになりそうだけど
542 :
sage:2012/02/03(金) 01:46:58.38 ID:???
Roadmaを読むと3.0でネームスペースの導入とオブジェクトを返す仕様にするとあるな。
543 :
sage:2012/02/03(金) 01:48:56.31 ID:???
RoadmaでなくてRoadmapな!
× Roadma
○ Readme
スペルは正しく書きましょう
CakePHPつかえば彼女できるの
ちいたん Yiiつかってまた戻ってきた
やっぱり人口が多いのが一番だね英語知らないから
ちいたんもYiiもcodeIgniterも
俺的にはオレオレと変わらないと思ってる。
多少動作が重くても、扱える人口が多いことに意味がある。
>>547 明らかにYiiはCakePHPより優れてるよ
日本人の使用者人口が増えれば日本語のリソースも増えてくると思うし
英語がダメな人はもう少し待つほうがいいかもな
>>548 本当にYiiが優れてるのなら、もっとブログで情報発信したりスレに書き込んだりしてくれよ
軽く触った感じではCakePHPに次いでいい感じだったけど、ユーザー少なそうで本腰入れる気になれない
ユーザーいないから情報出なくて、情報出ないからユーザー増えないという悪循環にはまってる感じがする
で、自分しか使ってないなら=オレオレと変わらないんじゃね?
って考えになるんだよな。
頑張って俺様のためにドキュメントを増やし給え
未だに英語がわからん奴とかいるわけがない
都市伝説だろ
明日電車に乗ったら隣の席の人に英語で話しかけてみてください
英語が分からんわけではないが、日本語情報が無いと裾野が広がらないと思う
はやくして
英語わかんねえんだよ
わかればこんなFW使わねえよ
こうやって技術者格差って広がっていくんだな
cakeが一番わかり易い
今の時代、英語と中国語出来れば、どの職業でも食いっぱぐれないだろうな
そんなことされたら警察呼ぶわ
英語ができればこんなスレにはいない
英語できるんだけど、どこに行けばいいの?
英語でおk
which site is the best discussion forum for cakephp? give me urls.
Hi, Guys!
what's up?
I'm stealth marketing now.
Oh really ?
571 :
nobodyさん:2012/02/08(水) 12:19:03.41 ID:FLeGKhAC
a peace of cake!
Fack YOU 板違いだにょ
lol
>>572 oh... miss spell
repeat after me
"Fuck You"
thank you,good gay!
O mae mo naa
your "CakePHP" is common file, on libs or vendors?
579 :
572:2012/02/08(水) 18:39:58.51 ID:???
小学生かこいつら
>>578 if you use 12.x, on vendors.
if you use 2.0.x on libs.
フォームヘルパーの使い方について質問です。
○商品A ○商品B
■■■ ■■■
○がラジオボタンで、■が商品の画像だとします。
フォームヘルパーのoptionsに配列で選択肢を指定したら
横並びの入力項目が出来るので、
画像付きのこういった表現が出来ません。
どうすればいいのでしょうか?
>>582 配列で一気にラジオボタン出すんじゃなくて、別々に出せばいいんじゃないの
>>583 いけました。仕様を勘違いしていました。ありがとうございます。
質問です
pagenatorのhasNextのような関数を、コントローラー内で呼ぶにはどうすれば良いですか?
ぐぐってもビューでヘルパーを呼び出す方法しか出てきません
コントローラー内で、次のページがあるかどうかで分岐する処理が書きたいです
1.3です
質問です
cakephp2.0.6 php5.3.6 apache2.2.17
という環境でcakephpをインストールし接続してみたのですが
Missing Method in AppController
Error: The action webroot is not defined in controller AppController
Error: Create AppController::webroot() in file: app\Controller\AppController.php.
このような文がでて接続がうまくいきません。どなたかご教授お願いします。
(cakephp1.3だとちゃんとRelease Notes for CakePHP 1.3.14に表示されます。)
エラーメッセージを良く読め
>>587 すみません、いろいろとググったのですがみつからず困ってました。
AppControllerにアクションwebrootがみつからない
ファイルapp\Controller\AppController.php作ってwebroot()を作れ
っと言われてると思うのですが、実際に作るとphpでのエラーがでてしまいます。
Fatal error: Class 'AppController' not found
申し訳ありませんが、ヒント頂ければと思います。
>>588 app\Controller\AppController.php
には正確にはどう書いた?
とうか、そもそも、どういうディレクトリにインストールして
どこにアクセスしてる?
httpd.confの設定がおかしいと想像。
document rootと、http側のrootが一致してないと見た。
webrootが正常に読み込めてないな。
そのあとのエラー的に、
>>590の言うとおりパスがおかしいんじゃないかと。
あとhttpd.conf内でmod_rewriteは設定してるよな?
まずはhttpdの設定を見直すよろし。
>>591 mod_rewriteの設定ですが#ははずしてあります。
ごめんさい記述みすしていました
正確には
ディレクトリはC:\Users\fruit\Desktop\www\php\cake\2.0\app\Controller\AppController.phpに保存しています
でした 。wwwをlocalhostとしています。
>?>←これはなかったので付け足しました
php.iniで、それの有無に関しての挙動が変更できる。
現在のPHPのデフォルトは、「閉じタグ ?> が無い事が標準」となってる。
初学者なのは分かるけど、いきなりフレームワークに手に入れるとか愚の骨頂。
どれだけの人数がテストしてると思ってるの?
>>595 そうだったんですね。初めて知りました!
ありがとうございます。
>>589,590,591
一通りhttpd.confをみなおし、ルートも確認し
>>595のとおり?>もはずしてみましたがやはり直りませんでした。
どなたかわかりそうな方いましたら、よろしくお願い致します。
>>597 ルートを確認したっていうことだけど、
httpd.conのDocumentRootはどう書いてあるの?
>>598 DocumentRoot "C:/Users/fruit/Desktop/www"
<Directory "C:/Users/fruit/Desktop/www">
このように設定してあります。
脱線だが、デスクトップにファイル置いて開発するとか、みんなそうしてるの?
アクセス権限とか切り分けが面倒になるから、俺はドライブルートから
浅い所にファイルを置くんだが。
>>600 俺はMac使ってるけど
cake本体は /Library/ の中、appは /Users/俺/ウェブ開発/○○アプリ って感じ。
jquery関係とかよく使うアセットはcake本体側に入れとけば複数app作るの楽だし
>>599 ・http.confにOptions FollowSymLinksの指定がしてあるか
・そもそもmod_rewriteはLoad Moduleされてるのか
・apacheのエラーログ確認
・各.htaccessにrewrite baseの設定が要るかも?
>>600 ふつうはしない。
が、初心者はだいたいそうする。
>>604 ヘルパーはApp::importで読み込んでnewすれば使えるけど、
わざわざ呼ばんでも
debug($this->paginate)とかdebug($this->params)とかやったらなんかヒントあるんじゃね?
>>602 Options FollowSymLinksは記述してためしてもAppController.phpのエラーが返ってきます。
Load Moduleはしてあります
apacheのエラーは
[Sat Feb 11 08:43:04 2012] [error] [client 127.0.0.1] PHP Fatal error: Class 'AppController' not found in C:\\Users\\fruit\\Desktop\\www\\php\\cake\\2.0\\app\\Controller\\AppController.php on line 2
となっていてブラウザ上でみるphpエラーと同様になってます
rewrite baseを設定してみたらcssが読み込まれなくなりました
>>606 携帯からなんで詳しい設定名わからんけど、
index.phpをインデクスファイルとして読み込む設定になってないんじゃないの
1.3でjoinしているカラムをソートするにはどうすればいいのでしょうか?
$paginator->sort('投稿数', 'Post.total_num')
みたいにビューに書いてもソートされません。
609 :
608:2012/02/14(火) 00:16:33.57 ID:???
自己レスです。virtualFields使えば出来ました。
今まで使い方を理解してませんでしたが、
$this->User->virtualFields = array(
'total_num' => 'COUNT(Post.user_id)'
);
みたいにすればいいんですね。
CakePHPかRubyOnRailsを習得するなら
どちらを優先的にすべきですか?
RORのほうはサーバーの構築からが必要だったりでお気軽感覚では出来ず導入のための敷居は高い気がします。
しかし、Deviseというプラグインがあったりするので、いちいちユーザー登録や、ユーザー管理、ログイン管理の機能を作らなくても済んだりします。
一方でCakePHPなら未だに情報交換が活発になされてますし、あまり環境にこだわらずフォルダごと、ぶちこめば大抵うごいてくれます(データベース設定やパーミッション等はありますが)
両方出来る人とかに聞きたいのですが、どちらがオススメですか?
趣味か仕事かどっちだ?
仕事で使うならこれからはCodeigniterだよねやっぱり
今からCake覚えて何かいいことあんの?
>>610 好きな方か、仕事で教えてくれる環境にある方。
ぶっちゃけやることは変わらん。
615 :
nobodyさん:2012/02/14(火) 15:53:13.31 ID:XKQCpFOZ
CakePhp2.0初心者で勉強しています。
セッションを使用して、異なるコントローラー間でデータの受け渡しを行いたいのですができません。
使用方法が間違っているのでしょうか?
異なるコントローラー間で以下の2行を実行しています。
$this->Session->write('id','hogehoge');
$hoge = $this->Session->read('id');
core.phpのセッション設定は以下の設定です。
Configure::write('Session', array(
'defaults' => 'php'
));
>>615 上の一行をあるコントローラでやって、
下の一行を違うコントローラでやってると言う意味だよね?
まず下の一行を実行する前に
if($this->Session->check('id))
でセッション変数自体が存在しているか確認するのはやってみた?
617 :
615:2012/02/14(火) 17:37:28.16 ID:???
>>616 返信ありがとうございます。
windows環境で作成をしてて、なぜかPCを再起動したら取得できましたm(_ _)m ナゾです・・
>>611 趣味ですが
仕事にも将来的には生かせればと思います
index.phpからcakeにアクセスするだけじゃなくて、
別名を付けたファイル名からアクセスしたい場合、
ファイル内に $_GET['url'] = '/user/index' みたいに書けば良いだけですかね?
表向きはピュアPHPみたいなURLにしたいです。
>>619 意味が分からん。
foobar_controller.php
foobar_index.ctp
foobar_alt_index.ctp
URLとファイル名は必ずしも強固に1体1対応で無くてもいいんだよ。
render('ctpファイル名')でいくらでも描画先変えられるし、redirectでもいい。
特定のURLのみ、URLのファイル名とは異なるctpファイルを読み込みたい場合は、
controller側でfunction URL名(ファイル名)を作ればいくらでも好きなファイルをrender出来る。
>>620 そうじゃなくて、基本的にcakeにアクセスするのって
webtoor内のindex.phpと.htaccessを元にしてるじゃないですか?
それを通さないで、単体のファイルで動かしたいって事です。
勝手に動かせばいい
>>618 cakephp覚えたところで仕事無し
railsならあるぞ
624 :
nobodyさん:2012/02/17(金) 22:18:17.74 ID:/liskI/Y
>>623 あなたはないかもしれないが、こちらは一杯あるよ
railsの仕事なんて見たことないな
たまたまだろうけど
cakephpにはrailsのdeviseのような
痒いところに手が届くログイン管理プラグインが無いのが痛い
無かったら作ればいいじゃない
>>621 webroot直下に置いたhtmlファイルとか、好き勝手に動かせるよ。
webroot/phpmyadmin
とかを本番機で動かしてるし。
ここでhtmlなり、ctpなり、好きなファイル置けばいいのでは?
今更のcakeの仕事って、メンテばかりでつまらなそうだな。
仕事がつまらないのは当たり前だろ
楽しさを求める奴って一定の割合でいるけど何なの?世間ナメてるの?
世間w世の中w
仕事がつまらないとか言ってる人って、アルバイトしかした事ない学生か、本気で仕事した事ないダメ人間だけだろ。
『整備に当る強兵が しっかりやって 来てくれと 愛機に祈る 親心』
戦闘機とは勝手が違うかもしれんが、職人であり整備士でもあるウェブ開発者が『メンテつまらない』なんて、間違っても言えない言葉だと思うがな。
作品に対する愛着と言うか、親心はないのかと思う。
本気だろうが何だろうがつまらんものはつまらん
愛があってもつまらんものはつまらん
愛着や親心と楽しさは違うだろ
>>636 「自分の子供は糞までかわいい」って話じゃね?
子供の世話とバグ取りや保守作業って同じ感覚でやってたわ
むろんどっちも楽しい。
しかもメンテっつーか仕事なら、やっただけ対価までもらえるんだぞ?
毎日wktkしとるわw
1から作ったものなら良いかもしれんが
他人が作ったものの尻拭いはごめんだ
別にどの業界だってメンテはメンテナーがいるわけよ。
ビルだって自動車だってそうだろ。
仕事として受けたならメンテのプロとしてやらないと。面白くないべ。
普通にバイトでも楽しいけどな。
楽しくいないのは店長や客が嫌な奴だったとか
人間関係の面がほとんどだろ。
今スマホ開発やっててWebAPIをCakePHP使ってんだけど楽しいよ。
俺は仕事は楽しくなくちゃ嫌だわ。
642 :
sage:2012/02/19(日) 00:25:24.87 ID:???
CakeやろうがRailsやろうがDjangoやろうが同じ不満をもらすだろうな
CAKEPHP1.3でWEBアプリを作っています。
ブラウザの「戻る」ボタンを押して前の画面に戻る際に、
必ずサーバーに問い合わせるようにしたいのですが、
キャッシュの設定を「session_cache_limiter('nocache')」にしていても
「ページの有効期限切れ」が表示される場合があります。
(具体的には、画面遷移時に一度入力チェックでエラーを表示した後、
次画面に遷移し、ブラウザの戻るボタンを押した場合。)
「ページの有効期限切れ」が表示されず、前画面に戻るには
どのような対応が必要でしょうか。
(ページの有効期限切れは、具体的に何を見て判定しているのでしょうか)
>>642 そういうことだろうな。
仕事でも趣味でも、開発すること自体楽しけりゃ不平不満なんて出ないどころか毎日Happyさね。
>>643 一般的に考えれば、フォーム(hiddenも含む)データじゃね?
単純な話で、なんかページ同士のパラメータの受け渡しに失敗してるんじゃないかな?
みなさんはサイトの一部だけcakeを使う場合、どうしてますか?
例えばサイトのほとんどがHTMLなんだけど、
お問い合わせフォームとか新着情報の表示とかシステム化が
必要な箇所ってありますよね?
公式の1.3パッケージをクリックして落ちてくるのって2.0なのかよ
おかげで数時間ムダにしたわ…
cakePHPで使うDBにNOT NULL付けるのって非推奨なのでしょうか?
値セットしてないカラムも全部NULLになっちゃって。
Model::create(false)でデフォルト値があるカラムを充足しなくなるよ
個人的には「NULL撲滅委員会」にお誘いしたい。
COUNT(column)とかで、面倒な挙動が多い・
>>652 実は既にあすこの会員でして・・・
しかし、NULLを避けたいのにcakePHPが勝手に挿入するのを避けられないというー-;
for ($x = 0; $x < 100; $x++) {
$data = null;
$this->cookie->create(false);
$data = $this->cookie->findById($x);
if ($data == FALSE) {
continue;
}
レコードが存在しない時は処理をスキップしたいんですけど、
比較式おかしいですかね?
CakePHPを複合主キーに対応させる為のプラグインってありませんか?
2.1RC来たね。
RCの後に数字がないってことは、
次がもう正規リリースなのかな?
何が変わったの?
ビューの継承とか、細かい便利機能が増えてるっぽい
参考書が1.3だったのでとりあえず1.3使ってるんだけど、
できれば最新のもの使ったほうがウマイのでしょか?
>>658 新規で作るのなら2系で作っておいた方がいいと思うよ
1.3で作ってると下手に1.3のクセがつくだろうし
今勉強中ならRCも出たことだし、サービスリリースまでにはstable出るだろうから2.1使っちゃっていいんじゃない
でも2系の情報はまだまだ少ないよ?
俺の見立てでは後1年は情報や書籍は揃わないと思う
>>662 むむむむ・・
まぁやってみようと思います
困るかな
実際移行してる人はどんな感想をお持ちだろうか
664 :
659:2012/02/21(火) 23:19:39.41 ID:???
>>663 今までのプロジェクトは全部1.xで作ってきたけど、最近全部1.3.14に上げた
とりあえずそれらは2系に上げる予定無し(1.3から2.0への全面書き換えはだるいのでしばらくは放置すると思う)
2.0のstableが出てからは全部2.0で作ってる
>>659にも書いたけど、RC出たからもう2.1に移ろうかと思ってる
個人的には複雑なことをやってないせいもあるのか2.0の情報が少ないという感じはない
昔からcakeは「公式ドキュメント読んで分からなかったらソースを読め」ってスタンスだしね
ああ、でも公式ドキュメントはまだ日本語ないから英語が全く出来ないとちょっときついか
ありません。な?
このスレに質問書き込んで、回答が得られたことってないな
お前ら頼りなさすぎ
Yiiスレとのギャップがすごい。
2.0使いです。
updateAllで、
リレーション設定をしている他モデルで使用しているテーブルのデータを
保存することはできませんか?
Bコントローラ内
$condition = array('ModelA.neko' => 'mike');
$updatefield = array('ModelA.tag' => 'hoge');
$this->ModelB->updateAll($updatefield, $condition);
と書いても
General error: 1 near ".": syntax error
が出ます。
>>667 と言うより、2.0については使用者も少なく回答できないんじゃないか?
1.3系の質問は回答されてるし。
頼りないなら他行けば良いんだよ。別に質問スレでもないんだから。
システムのマイナーバージョンアップってcake以下(2.0だとlib)のコアファイル差し替えるだけでいいの?
すみません、質問です
2つの関連性の全くないテーブルA,Bがあります。
ある画面で、その2つのテーブルのデータをまとめて編集し、
1回のPOSTでValidationをかけて保存させたいのですが、
どうすればよいものでしょうか?
A,Bの項目をまとめたCモデルを作って、CモデルにValidationルールを書く。
POSTされたデータはCモデルでValidationを行う。
Validation後にAモデル、Bモデルにデータを分割して、それぞれで保存処理を行う。
こんな感じ?
よくわからんが、普通はAモデルはAモデルでバリデーションし、
BモデルはBモデルでバリデーションするだろ?
モデル毎にバリデーションできるんだから。
>>672 普通に
Aバリデーション
↓
Bバリデーション
↓
A保存
↓
B保存
ではなんでダメなの?
あとはトランザクション処理をかますくらいか。
>>672 1回のPOSTで2つのモデルをいっぺんに使うって話か?
普通に問題なくできそうなもんだが。
>>664 ありがとり
一応一通り移し変えることができました
ガシガシ構築していこうと思います
CakePHPの1.2のメンテナンス期限とか、公式な発表ってどこかにありますか?
>>655 本家だと数字ついてないけど日本のサイトだと1版って書いてあるから微妙だなw
>>680 公式な発表はないと思うけど、もうリリースがほとんど止まってる感じだからなあ・・・
っていうか1.1はいつのまにか公式から消えてるけどどこかでアナウンスあったっけ?
そんなことよりCakePHPを複合主キーに対応させる方法を教えろよ。な?
複合キーなんて使うなよw
684 :
nobodyさん:2012/02/23(木) 22:40:40.54 ID:7dkJC+lD
bar_controllerに、foosテーブルの中身をページネイションさせるとき
$this->paginate = array(
'conditions' => array(
"not" => array(
"Foo.bar" => "false"
)
),
'limit' => 2000,
'order' => array('Foo.date DESC')
);
$this->set('foo', $this->paginator());
と書いたら、「barsテーブルにFoo.barなんてない」ってエラーがでました
コントローラ名からモデルを補完してるんでしょうか?
どうしたらfoosテーブルのデータをページネイションできますか?
ご教示くださいますようよろしくお願いいたします
685 :
nobodyさん:2012/02/23(木) 23:41:08.20 ID:7dkJC+lD
$this->set('foo', $this->paginator());
を
$this->set('foo', $this->paginate('Foo'));
に書き換えたらいけました
モデルにprimaryKeyって必ず定義しないと行けないんですね。
プライマリーキーがないモデルにsaveしようとしたけど、エラー出ました。
>>686 Excelとデータベースの違いから勉強しようぜ
会員→日記
→写真
のようなアソシエーションで繋がっているテーブルがあったとして、
会員情報を削除した時、その会員が投稿した日記や写真を
削除する必要があります。
その場合、会員情報を削除した後、日記・写真を削除しますか?
それとも全てアソシエーションで繋げてdeleteAllで削除しますか?
>>688 好きにすればいいんじゃね
deleteAllがアソシエーション含んだ削除って誤解してる気がするんだけど気のせい?
関連データも一括で削除するのはdependentだよね
>>689-690 まさに勘違いしてました・・。
アソシエーションの削除が上手く行かないので
自分は個別に削除するやり方をしているのですが、
勘違いだったようです。すみません。
XMLデータの出力って、CakePHP 2.0でどのように行えますか?
find('all')で複数県取得したデータを、1.3まではviewで$xml->serialize()に
データを渡していました。
2.0からはxmlHelper自体が廃止となって、代わりにXml::buildを使えとのことですが、
1.3と同様の複数県のデータを渡すと例外となります。
1.3と同様の結果が取得できるように死体のですが・・・
すみません、複数県→複数件です。
cake1.3を最近使い始めたのですが、
データベースを使うほどじゃない簡単なデータ保存処理のためにtxtファイルを読み書きしたいのですが、どこに置いてもうまくアクセスできません。
自分で用意したファイルにアクセスするにはどうしたらいいのですか?
データベースを使うほどじゃなかったら、cake使わない方が良いよ
テキストファイルのデータを読み込みたいのがデータベースから情報を持ってきてるページなのでそういうわけにもいかないのです・・・
テキストファイル自体は多くて10個程度のワードを保存&編集したいだけなのですが・・・
Cakeが発行する、SELECT COUNT(*) (ページネーションから?)が
ものすごい遅いんですが、解決法はあります?
みなさんどうしてます?
COUNTするのはgroup指定したカラムにすれば良いよ
>>698 ページネーションするときって自動でCOUNT発行されません?
>>694 自分で、model、またはdata sourceを書く。
csvならdata sourceあった希ガス
>>700 ありがとうございます
まずはdata sourceにつ
途中で送信すみませんorz
>>700 ありがとうございます
まずはdata sourceについて勉強してみます
>>702 ベタに書いてもOKな気もすっけど。。
とりあえず、Fileクラスもあるし。
>>703 のちのちワードを編集するので、直書きはできないんです
fileクラスについても調べてみます
1.3.14を使っています。フォームのバリデーションで質問です。
ラジオボタンの場合、項目を選択せずに送信すると
空データではなく、存在しないものとして扱われます。
ですので、バリデーションルールでnotEmptyを指定しても
正しく機能しないのですが、どうすればいいのでしょうか?
hidden
156
>>706 ありがとうございます。勉強になりました。
>>697 Model::paginateCount を 軽い処理で実装するとか
>>697 where句に使用しているカラムにインデックスはるとか、
joinしてるなら、その辺も確認したほうがいい。
711 :
nobodyさん:2012/02/28(火) 15:16:02.31 ID:pz8Lp3oa
[動作環境]CakePHP 2.0.6 / PHP 5.1.6 / Apache 2.2
ルーティングで躓いています。
以下のようなコントローラを用意しました。
class EntryController extends AppController {
var $name = "Entry";
var $autoRender = false;
function index(){
die('index');
}
function success(){
die('success');
}
}
http://example.com/entry/ は正しく実行され、'index'が表示されるのですが、
http://example.com/entry/success/ は、Segmentation faultが発生し、Abortします。
routes.php などの設定は、敢えて変更せず使用しています。
同じような現象を経験した方、いらっしゃいますか?(そもそも、2.0.6使っている人いるんだろうか)
713 :
nobodyさん:2012/02/28(火) 15:25:44.20 ID:pz8Lp3oa
>> 712
success以外でも一緒です。
/entry/index もダメです。
/entry/index/abc/def もダメです。
>>711 です。
Router::parse($request->url);
の結果を見ると、以下のようにルーティングが間違っているようです。
array(5) { ["controller"]=> string(7) "success" ["named"]=> array(0) { } ["pass"]=> array(0) { } ["action"]=> string(5) "index" ["plugin"]=> NULL }
Routerがちょっと怪しいので、調べてみます。
>711 です。
/lib/Cake/Network/CakeRequest.php に、おかしな箇所を見つけました。
下記引用の下から5行目、「$baseUrl」なんですが、どこでも宣言されていないのでif自体に意味がないようです。
protected function _base() {
$dir = $webroot = null;
$config = Configure::read('App');
extract($config);
if (!isset($base)) {
$base = $this->base;
}
if ($base !== false) {
$this->webroot = $base . '/';
return $this->base = $base;
}
if (!$baseUrl) {
//★ここを改編したらうまくいった
//$base = dirname(env('PHP_SELF'));
$base = '';
>>715 ソース見てみたけど確かに$baseUrlはどこでも値が入ってないね
1.3系でプラグインの作成方法について質問します。
公式のマニュアルを見ているのですが、
/pizza/pizzaOrders/index
でアクセスする方法は分かるのですが、
/pizza/
でアクセスするにはどうしたら良いのでしょうか?
普通に/app/controllers/pizza_controller.phpを作ればいいと思ったのですが、
作ってもアクセスエラーになります。
これってルーティングの設定になるのでしょうか?
>>709 1000件しか表示しない!って決めたら、
function paginateCount($conditions = null, $recursive = 0, $extra = array()) {
return 1000;
}
こうしてもいいんですかね?
719 :
nobodyさん:2012/02/29(水) 15:57:45.32 ID:OuUO3AKR
>>717 プラグイン関係ない
ルーティングの問題
>>719 了解しました。ルーティングで調節します。
>>717 /app/plugin/pizza/controllers/pizza_controller.php
(要するにプラグイン名と同名のコントローラー)を作って、indexアクションを作れば
ルーター触らなくても/pizza/でアクセス可能だよ。
>>721 出来ました!勉強になります。ありがとうございました
モデルって別にテーブル名じゃなくても良いんだね
同じのでもサイトのコンテンツによって変えてる
2.1 Stableキター
つうかペース早いな
まだ開発中なんだけど、バージョアップすべきなのかな?
リリースしてないならageた方がいいと思う
2.0.xは今までのバージョン系列で一番寿命が短いし、下手したら1.3.xより今後のアップデートが期待できない気がする
>>727 ありがとう。
2.0.x系からならフレームワーク置き換えだけでいいのかな。
729 :
nobodyさん:2012/03/05(月) 23:42:52.00 ID:WIGrArNU
次の開発案件から2.0系にしようとしてたら、もう2.1・・・。
2.0系は結局書籍も出ずじまいか。
互換性をきっちりしてくれないと困るにょ
2.0リリースが10月半ばだったから5ヶ月経たずに2.1出たのか
2.0は短命だったね・・・
本が出ないのもしょうが無いというか、出してしまっていたらすごい中途半端なタイミングになっていたと思う
1.2 2008/12
1.3 2010/04
2.0 2011/10
2.1 2012/03
Cakeにcreate tableする関数はありますか?
普通にqueryでベタSQL投げないと駄目?
お前らなんか言えよ
お前らがcakeで作ったもので、何を最大どのくらいの期間かかった?
俺はSNSで3ヶ月。
官公庁のシステム
2ヶ月3000万円
>>737 まじかよ。
あぁいう国の案件はどうやって仕事もらうの?
みんなやりたいよね。
てか、2ヶ月って凄いな。
国のシステムだからそんなに凝ったことはしてないだろうけど、
どんな機能があって2ヶ月なんだろ?
犯罪の香りがする
随意契約くさいな
2.0から始めたいのにマニュアルが英語しかないとかwww
英語英語うるせーよ、このスレ小卒ばっかりか?
お前は英語で書けよ
speak english or die
shine!
dieとかwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
エイリアス使ってるバカってまだいたんだwwwwwwwwwwww
fack you!
OUTA MY WAY, WTF!!!!!!!!!!
アソシエーションするとき、プライマリキー以外とforeignKeyで
繋げるにはどうすればいいのでしょうか?
そんなことより誰か複合主キーに対応するためのプラグインを書けよ。な?
ビュー内の$this->Paginator->prev()とかnumbers()で吐き出されるリンクに
PHPSESSIDをくっつけたい(?PHPSESSID=hoge)んだけど、どうしたらいいかな
コアの$html->link()を書き換えたりしたらいけそうだけど、
もっとスマートな方法ある?
>>752 自己解決
'options' =>
array(
'?' => array(session_name() => $this->Session->id())
)
こうした
ソース追ったけどよくわからなかったので質問します。
CakePHPでのCookieを書き込む際に暗号化したデータをJavaScriptで復号するロジックはありますか?
755 :
nobodyさん:2012/03/11(日) 22:15:13.63 ID:+TvrXerP
うるせぇ!
いいからCakePHPで複合主キーに対応する為のプラグインを誰か書けや。
な?
>>754 ソース見る限り、Security::$typeで設定した暗号方式でSecurity.salt使って
それをbase64_encodeして暗号化してるっぽいので
それを逆に処理すればJavascriptでも復号化できると思う。
詳しくはcookie componentのソース見て。
だけど、複合に必要なキーのSecurity.saltをJavascriptに
書かないといけないので、そもそもなんで暗号化したんだって
ことになるので設計を見なおしたほうがいい。
757 :
nobodyさん:2012/03/12(月) 00:06:16.05 ID:uEcRtOSh
>>754 老婆心ながら、
>>756が言っていることを強調しておく。
設計を見直せ。salt の意味がない。
よくある返信不可のメールアドレスって
@以前のユーザ作成してるのかな?noreplyみたいな
存在しないアカウントをreturn-pathに設定してメール送ってるのかな?
UI含めて設計について相談です。
複数チェックボックスを使って、チェックした項目をDBに登録し、
後から検索できるようにしたいと思います。疑問は2点。
1:テーブルの1つのカラム内にカンマ区切りで登録するのでしょうか?
2:その場合、conditionsで検索できるのでしょうか?
画像のサイズ別のURLって、
テーブルに保存してますか?
afterFindなどで組み立ててますか?
それとも、ビューでその都度組み立ててますか?
ビューで変えてます。携帯用の画像とか。
>>759 1は好きにしたらいい
2はインデックス当たらなくていいならできる
>>762 どうやって検索するのでしょうか?
1カラムにカンマ区切りのレコードがあったとして、
それをCakeのconditionsで検索する方法がわかりません
>>763 cakephpに配列をシリアライズして
登録するプラグインあるから、それ使え。
わかりました。探してみます
小一時間探しましたが、save時にシリアライズできるものの、
find時にconditionsで絞り込むのは無理みたいですね・・。
>>766 はい。それは分かりますが、登録されている値が
「1,10,11」みたいな場合、likeは利かないと思います。
>>756 >>757 ありがとうございます。
サーバサイドのJSでの実装を考えているため、種が漏れることはないと考えています。
ご回答/ご指摘ありがとうございました。
>>767 ソート順さえあっていれば、1かつ10かつ11なら column LIKE '%1,%10,%11,%' とかでいけるんじゃないの
ソートしてないのなら column LIKE '%1,%' AND column LIKE '%10,%' AND column LIKE '%11,%'
>>769 さすがにひどい。
>>767 方法1.「ビット演算 チェックボックス」でぐぐれ。
方法2.項目ごとにカラムを分ける。
>>767 もっと頭使おうぜ
1,10,11
ではなくて
001,010,011
みたいにすれば、like %001% で検索できるだろ。
あくまで1例だから、データに何がくるかによって
良い実装があると思うので、よく考えて。
俺ならHABTMにしちゃうね
774 :
760:2012/03/13(火) 13:20:03.94 ID:???
>>761 ビューが条件分岐だらけになりませんか?
if (!empty($post['Post']['image_filename']):
....
else:
こんな風に。
$post->getImageUrl(array('mobile' => true));
みたいに書けたらいいんですけどねぇ・・・
>>775 そうなんですけど、
モデルの返り値が配列じゃなくてエンティティなら、
もっとスマートに書けるのに、と思いまして・・・
これがCake流なんですかね
>>772 その考えはありませんでした。勉強になります!
ビット演算の事を
>>770さんから教えていただき勉強しましたが、
数学が苦手な私の頭ではさっぱりで、
単純にテーブルを分ける(Cake的にhasMany)を考えていました。
テーブルを分けて正規化する方法も一般的なようですが、
正直、チェックボックスを使用するカラムが必要な度に
テーブルを生成するのもどうかと思い、悩んでいました。
772さんの方法も視野に入れて設計面を工夫してみます。
みなさん、ありがとうございました。
likeなんか使ったらインデックス使えなくて
遅くなるだろw
>>776 エンティティが返ってこないのが俺がCakeが嫌いな理由の一つではある。
780 :
776:2012/03/14(水) 03:34:06.02 ID:???
CakeEntityなんてのもあるみたいですが・・・
今はYiiを調べてる。
781 :
大便:2012/03/15(木) 08:30:03.53 ID:UhuckWxP
ペニー秋田は犯罪です。
早速ペニーオークションで破産しました。
>>778 別にLIKE使ったからってインデックス効かなくなるわけじゃないから
みなさん、プラグイン作成してます?
お問い合わせフォームとか会員専用ページとか
どのサイトでもよく使うファイルをプラグインにまとめるべきか否か悩みます。
>>783 どこまで汎用性もたせるか悩んで、
結局いつもコピペで済ませてる
ある程度規模でかいサイトで普通のLIKE検索はありえないよね。
普通はどうしてるの?
>>783 俺はまとめてるよ。
ログイン
リマインダー
新規会員登録
アフィリエイト機能とか。
うまく作れば使いまわし効く。
全部プラグインでやれるから
最近やることなくなった。
>>788 それらをプラグイン化して、サイトによってビューを修正する感じ?
790 :
nobodyさん:2012/03/16(金) 10:41:05.32 ID:pS4d35yu
ログイン状態のセッションが数時間で切れて困っています。
ログインすると
$this->Session->write('user',$user_id);
のようにコントローラ内のSessionに情報を保存していますが、これが数時間でread()しても値が取れなくなるようです。
core.php内で
Configure::write('Session.save','cake');
Configure::write('Session.timeout', (24*60*60*7));
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1000);
ini_set('session.cookie_lifetime', (24*60*60*7));
ini_set('session.gc_maxlifetime', (24*60*60*7));
Configure::write('Security.level', 'low');
としているので、1週間持って欲しいのですがダメみたいです。
何か方法はありますでしょうか。
>>789 具体的にいうと、
プラグインの中に
ビヘイビアと、コンポーネントを作る。
それをusercontrollerとmodelに読み込ませる感じ。
>>790 cookie使えばいいじゃん。
ses切れてても、cookieがあればそれでログインみたい。
>>791 なるほど。ビュー周りは特に変更しないんだね。
変更するならCSSをいじるぐらいか。
2.x対応のTreeHelperってないですか?
または修正版のサイトとかあれば
Qdmail(
http://hal456.net/qdmail/)使ってるひといる?
さくらインターネットのメールサーバにQdmail使ってSMTP AUTHでメール送信してるんだけど、
何回か(4,5回が多い)に1回だけメール送れないんだよな
QdSmtp error: No Responce SYSTEM TIME OUT line -> 603
QdSmtp error: getMessage error line -> 543
QdSmtp error: Error From setting line -> 488
QdSmtp error: Send Data Error or Auth Error line -> 415
Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.2.11
Qdmail error: OS WINNT ; PHP Version 5.2.11 ; Qdmail version 1.2.6b
php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS
Qdmail Status debug: 0, log: 3, errorlog: 0
Qdmail error: No send . Because SMTP mail method replied error line -> 2190
Qdmail error: Send Error line -> 2115
Qdmail error: Error happen, see upper line -> 2194
Qdmail error: Send Error line -> 2115
画面にこんなエラーが吐き出されてメール送信されない。
エラー行だって言われてるところを見てもエラー行を出力する処理しか書いてなくて
どういうエラーが起こったのか全然わからない・・・。
同じような事になった人いないかな?
スレ違い
>>797 すまん、一応CakePHPのコンポーネントとして使ってるし、
Cake使ってる人でメール送信する人はこれ使ってる人多そうだからここで聞いてみた
PHP質問スレで聞いたが、そこでもスレ違いだとさ・・・。
ライブラリの質問できる場所無いみたいなんだよな
>>798 そうじゃなくて、ライブラリ自体、公式でサポートしてるんだから
そっち行けってことっでしょ。エラーメッセージすら読めてないし。
フレームワーク以前の問題だ
qdmailって、公式もサポートほとんどしてないだろあれ。
エラーメッセージもいいかげんだし。
じゃ、qdmail使わずに自作しろよ。
メール送信なんて今まで作っていたのあるだろ。
・マルチバイト対応
・HTMLメール
・添付ファイル
こういうの対応しようとすると結構自作でやるのはな、、、
いやいや、普通に1000行もかからずコード書けるから。
フレームワーク使う前に作っていたものがあるだろ。それ使えよ。
cake使っててシェルでURLを組み立てたいときは何を使えばいいですか?
シェルでURLを組み立てたいって意味がわからないんだが
808 :
nobodyさん:2012/03/21(水) 23:19:44.62 ID:ZAI6cSPi
$this->set('select', $this->Foo->find('list', array(//select要素
'fields' => array(
'Foo.id',
'Foo.firstname'
)))));
とすると、
$form->select("Foo.bar", array($select), 0, array('empty' => null))
で
select要素の中に
<option value="Fooのid">Fooのfirstnameの中身</option>
というのができるんですが、
これを
<option value="Fooのid">Fooのsecondnameの中身 Fooのfirstnameの中身</option>
としたいんですが、find('list')は一対でしか使えないんでしょうか?
やり方をご教示いただけたら幸いです
809 :
808:2012/03/21(水) 23:27:53.96 ID:ZAI6cSPi
自己解決しました
allで読んで、
foreach ($select as $value) {
$talent_data[$value['Foo']['id']] = $value['Foo']['secondname'] . ' ' . $value['Foo']['firstname'];
}
$this->set('select', $select);
でlistで作ったoption群と同じ形式のリストデータが生成されました
modelにrule=>urlを書いたらurl欄が空欄もurlが正しくないになってしまうんですが、
urlが空でもよくて、入っていれば正しいURLか判定する、という風にするやり方がありましたらお教えください
allowEmpty
>>811 ありがとうございます、解決できました!
>>806 URLをTwitterに投稿するときに使おうと…
>>807 煽る意味がわからん。他人のライブラリは使えないと言い、
自分でも自作できないとかワガママすぎるだろ。
おかしくないだろ。なんでも他人を頼ろうとするなよ。
自分でコンポーネントやヘルパー作れるようになってるんだから。
up
自分で簡単に組める人はここで質問しないだろ。自分が見落としてるだけで、他のいいモジュールがあるのかも?って淡い期待で書き込んでるんだとおもうよ。自分で組むしか方法が無い。っていう結論を貰えるだけでも嬉しいのでは?
なにかおかしくね?自分でプログラミングせずに、
いきなりフレームワーク使い出したというのか?
大体は参考書やらネットの情報やらで適当なプログラム作って、
慣れた後に効率化を求めてフレームワークを使い出すと思うんだが。
mail関数やmb_send_mail関数でメール送信しようとして
文字化けしたり、上手く送れなくてネットで調べながら
自分なりの「メール送信ライブラリ」を作ると思うんだが。
で、その後に添付ファイルやらHTMLメールやらを送信したくなって
qdmailのような他人が作ったライブラリを探すというのなら分かるよ。
でも、いきなり上記の部分すっ飛ばしてCake使って
「上手く動きません><」とか言われても、勉強不足以外の何者でもないだろ。
仲良くしようぜ。
822 :
nobodyさん:2012/03/24(土) 15:01:00.43 ID:oSWZUaYy
メール関連の機能が大幅に向上したバージョン2.1を使えばよい。
kwsk
paginatorでクエリを渡そうと思って
$paginator->options(
array('url' => array('?id=' . $id))
);
とやったんですが、
foo/?id=100/page~1
みたいなurlになってしまってうまく動作できません
foo/page~1?id=100
となるようにしたいんですが、optionsをどう書き換えたらいいんでしょうか?
>>824 array( '?' => array( 'id' => $id ))
って感じじゃなかったかな
Router::url(array('controller' => 'test', 'action' => 'index', 'id' => $id))
みたいな事をしてURLを生成しているのですが、
パラメータ部分を予め設定しておく事は出来ないのでしょうか?
828 :
nobodyさん:2012/03/26(月) 18:44:48.32 ID:+fypSFER
フォームヘルパーを使って同じフォームを1ページの二カ所以上に作ると
formタグのidが重複しちゃうけど、どうやって回避するのがスマートかな
今はform->createでid指定して別名にしてるけど、あまりスマートに思えない
フォームヘルパーってぶっちゃけ要らない機能だよね
最初は便利なのかなと思ったけどしばらくいじって思い通りにいかないから
ないものとして普通にformタグ書くようにしたら能率上がったわ
>>829 確認の時どうしてるんだ?次のページに推移して「エラーがあります」か?
>>829 いや、使った方がいいよ。
俺もベタ書きやってたけど使わないとエラー処理が困る。
832 :
nobodyさん:2012/03/27(火) 01:42:43.77 ID:J3nZuwJg
バリデーションエラー時に普通の方法だと
エラーが出たフォームの上(下だっけ?)にメッセージが表示されるけど
任意の場所に表示したい場合はどうしてる?
<?php echo $form->error('Post.name')?>
CakePHPで「INSERT〜ON DUPLICATE KEY UPDATE」
は使えないのでしょうか?使える場合は書き方を押してください
CakePHPの質問を書いたら、ちゃんと答が返ってくる掲示板ないでしょうか
設計って結構迷うよね・・。
編集でidが2つある場合、URLが/post/edit/1/2
みたいになるけど、これってわかりづらいよね。
ピュアPHPの、edit.php?parent_id=1&id=2の方が分かりやすい気がする。
まぁ、Cakeでは/edit/parent_id:1/id:2 というURLにはなるんだけどさ・・・
>>838 ID=一意に表すもの
だし1つで表せないとしたらそれはIDじゃない
1つで表せるならURLに含ませる必要ない
>>839 別々のものに同じidが割り振られているのはおかしいが、
ひとつのものに二つ以上のidが振られているのは問題なくね?
>>840 問題ないけど、2つ持たせる意味がわからないし、
仮に持たせたとしてもそれをURLに含ませる意味もわからない
>>841 管理画面があったとして、
ユーザID・1が投稿したお知らせのID2を見たいとする。
ピュアPHPなら、edit.php?user_id=1&id=2だよな?
Cakeなら/edit/1/2か/edit/user_id:1/id:2だな。
セッションに含めて持ち回る方法もあるけど、
毎回セッションに入れるのはおかしくないか?って思うからさ。
edit.php?id=2
じゃだめなの?
ピュアPHPだとそれで良いんだよ。でもCakeだと迷うだろ?
Cakeの書き方で言えば、
/news/add/1 この1はuser_idの1
/news/edit/2 この2はidの2
URLを見ただけでは混乱する
POSTすりゃええやん
迷うだろって言われても迷わないよな
>>846 ほんとに?自分だけで分かるからOKって考え方なの?
ちなみに、/edit/1/2みたいな書き方はBaserCMSでもやってた
自己レスだけど、コーディング時は迷う事はないか。
Router::url('/news/edit/' . $data['Newsr']['userid'] . '/' . $data['News']['id'])
になるわけだし。単なるURL上での事ならこだわる必要ないかな。
外部に公開するわけでもないし。
>>847 自分だけわかるもくそも、URLの規則を万民にわかるように書くことなんてそもそも無理じゃね?
>>849 そうだな。規約に従おうとこだわりすぎてたわ。
自分が作りやすい方法でやるよ。色々ありがとう
>>850 URLでなんのページかわかりやすくしようというのは、ユーザビリティの面からも正しい考え方だけど
この件に関しては
>>844の書き方で充分わかりやすいといえる範疇だと思う
>ピュアPHPなら、edit.php?user_id=1&id=2だよな?
>Cakeなら/edit/1/2か/edit/user_id:1/id:2だな。
誰がこんなこと決めたの?
Cakeだって/edit?id=1&id=2ってやるだろ。
さすがにそれはやらない
/edit/parent_id/1/id/2 とか
user_idがidから引っ張ってこれるんならURLに含めないな
usernameなら/news/tanaka_ichiro/123みたいな感じで含めてもいいと思うけど
どうしてもuser_idもidも含めたいのならnamedパラメータ使って/news/user_id:1/id:2とかにする
856 :
nobodyさん:2012/04/01(日) 00:45:58.67 ID:OiSFrCKx
ブラウザのエンコードの切替ができないんだけど2.x系って特別な設定あるのかな?
1.x系の場合コントローラに
function beforeFilter(){
//携帯なら
if($this->Ktai->is_ktai()){
Configure::write('App.encoding', 'SJIS');
$this->layout = "mobile_layout"; //charset=shift_jis"
}else{
って書けばブラウザのエンコードが既存の「UTF-8」から「SJIS」に切り替わるのに2.x系だと「UTF-8」のまんまだ。。。
かなり嵌ってるんだけど分かる人いるかな?
てか俺の環境がおかしいのかな??
App.encodingってシステム的なエンコードの設定で、出力のエンコードとは関係ないんじゃないの
設定したことないから知らないが
ヘッダーはutf8とsjisどっちなの?
858 :
nobodyさん:2012/04/01(日) 03:16:24.89 ID:OiSFrCKx
>>857 PCと携帯でエンコードを分岐したくて
PC -> UTF-8 携帯 -> shift_jis
core.php自体に記述しているのは
Configure::write('App.encoding', 'UTF-8');
なんだけど、携帯のページを表示するときは
beforeFilterでConfigure::write('App.encoding', 'SJIS'); に変更してます
cakephp1.3だとこの設定でブラウザのエンコードはshift_jisに変更されるんだけど
2.x系だとUTF-8のまま。。。
core.php自体をConfigure::write('App.encoding', 'UTF-8');に書き換えると
ブラウザのエンコードはshift_jisに代わるんだけどcore.phpだと分岐処理書けないから困っています。
2.x系だと別の処理が必要なのかな?
859 :
nobodyさん:2012/04/01(日) 03:18:29.30 ID:OiSFrCKx
>>858 >core.php自体をConfigure::write('App.encoding', 'UTF-8');に書き換えると
上記は
Configure::write('App.encoding', 'SJIS');の間違いです。
誤植すいません。。。
861 :
nobodyさん:2012/04/02(月) 00:51:25.23 ID:ZyijX88y
>860
ありがとう
ちょっと試してみます。
携帯ライブラリとか使って複雑になってるのも原因の1つかもです。。。
cakephpでもhavingが使えるんだな。
そしてhavingってめちゃくちゃ便利だな。
これのお陰でDBの設計が楽になった。
フォームヘルパーでのサニタイズは何もしなくても自動でしてくれるけど、
表示(コントローラからset)の場合は、個別でサニタイズしなきゃいけないんだな
この点忘れてた・・・
1.2経験しかなかったんだけど初めて2.1使ってみたら
ローカルのxampp環境でmodelがbake出来ないんですけど。。
cliのphpが「問題が発生したため・・・」になる
findの条件で、
テーブルFoosのflagがonのものだけ取り出したいとき、
'conditions' => array(
'Foo.flag' => 'on'
),
と書いてできたんですが、
Foosのflagがonでかつ、
Foosのlawと同じ値のBarsテーブルのidの、deleteがoffのもの、というのを条件にしたい場合どう書けばいいでしょうか?
具体的には、
Foosのテーブルには商品リスト、Barsには業者データがあり、
取り扱っている商品、でかつ、倒産していない業者、の商品リストだけ取り出したいのです
よろしくお願いします
ローカル環境にApach + PHP + MySQLの設定をするのが
面倒なのでレンタルサーバにリモートプロジェクトとしてEclipseでバンドして
作業してるんですが、こういった開発手法ってNGでしょうか?
自分が良ければおkだと思うよ
ありがとう。勇気付けられました(?)
ローカルとサーバで2度設定をする手間を考えるとやはり
直接サーバ上でコードをいじった方が効率が良いと思うんだよね。
870 :
nobodyさん:2012/04/07(土) 00:51:33.09 ID:4OZyxrY6
下記サイトを参考にしCakePHP 2.1.1安定板をダウンロードし
さくらインターネットに設定しようと思っているのですがどうしてもうまくいきません。
http://mori.moripower.jp/eqwip/cakephp/370.html どの部分でエラーが起きているか追いかけてみたところ
/home/user_name/www/app1/index.php
において、下記判定処理でインクルードに失敗していました。
if (!include(CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'bootstrap.php')) {
bootstrap.php自体のパスは下記が正の筈なので
直接(べた)書きで試してみましたがやはりダメでした。
(bootstrap.phpの権限を 755に設定してもダメ)
/home/user_name/cake/lib/Cake/bootstrap.php
どなたか同じ様な体験をされた方はいませんでしょうか?
871 :
nobodyさん:2012/04/07(土) 01:04:14.05 ID:ET0rgidW
そんなこと今更知ったのか、バカを晒して楽しいか?
>>870 それだけ見るとディレクトリ構成を間違えたかindex.phpのパスの設定が間違ってるっぽいけどなあ
>>872 >>870 に記載のURL通りに指定しております。
ちなみに bootstrap.php の中では定数等を定義しているだけの様なのですが
このファイルの読込は、CakePHPの実行には必須なのでしょうか?
また、さくらインターネットにおいて、最新のCakePHPの導入が出来る様に
解説したサイトをご存じでしたらお教えください。
どうも私の方でぐぐってヒットするサイトは
2・3年前の古い物ばかりで最新のCakePHPには即していない様です。
874 :
nobodyさん:2012/04/07(土) 09:38:19.35 ID:PHPJ9271
1.3時代からいじっていないから何か違うかもしれないが
>bootstrap.phpは必須か?
bootstrapは、起動時の設定をまとめたりしてるもんなんで必須なはず
おまいさんのスキルが見えないので余計なアドバイスかもしれないがとりあえず、CAKE_CORE_INCLUDE_PATHの内容を調べてみてどうよ?
875 :
519:2012/04/07(土) 11:17:18.36 ID:???
名無しに戻し忘れorz
ぬかったわ。。。
>>874 定義された内容でもって直接includeしたのですが
それでもダメでした。
もうちょっといろいろと試してみます。
ちょっと気になっているんですけど
CakePHP って途中で開発終了の可能性は他のFWと比べて高いですか?低いですか?
誰にもわからないことだな
1つ言えることは、ZFに比べたら確実に高いということぐらい。。
せっかくCakePHPの癖をつかんだとしても
終了してしまったら学習コストの無駄になるのを恐れている。
やっぱしZFの方が無難かな?
zendはコンポーネント群にすぎないから、位置づけがCakeとは異なるよな。
コストの無駄たって、経営者が新人教育について言ってるんだならまだしも
自分の脳みそのしわを増やすのにコストで考えるのはわからんw
浅く広くでもどれでも触って使えるようになっとけばいいよ
とりあえず、俺は1.3をあと2年は使い続ける
フォームの確認ページでのサニタイズってどうしてます?
$this->dataを一括でサニタイズする処理をするか、
確認ページのビューで<?php echo h($this->data['Post']['name'])?>
みたいにするかどちらかだと思っているのですが、
他に良い方法や考え方はありますでしょうか?
サニタイズいうなキャンペーン開始
Cakeでそう言う名前だろw
887 :
nobodyさん:2012/04/08(日) 10:36:25.86 ID:4ALRLsfw
>>875 うぉ!自分で書いてて気づかなかった。IDの仕組み分からんからこの書き込みIDどうなるか分からん。。。
>>884 ビューでエスケイプ。責任をしっかり分けておかないと後で後悔する
>>873 さくらじゃなくてxreaとかcoreserverとかの設置方法見たら?
/home/username/cakephp
/home/username/www
という感じに分けて、コアファイルをパブリックに置かないようにするのは一緒だよ
xreaだと
/virtual/username/cakephp
/virtual/username/public_html
とかになるけど
889 :
nobodyさん:2012/04/09(月) 11:26:19.21 ID:gWXPCP/C
Cakephp2.1.1のモデルのファイル名に関して質問させてください
ローカル(mac)の環境ではファイル名を小文字のみ(example.php)にしても読み込まれるのですが、
サーバー(centos)では一文字目を大文字(Example.php)にしないと読み込まれません
最新のCakephpはモデルのファイル名が大文字で始まるようなのですが
ローカル環境では小文字でも動いています
これはapacheの設定かphpの設定かosの設定なのでしょうか!?
ローカルのOSがファイル名の大小を区別するかは調べた?
下記階層にCakePHP一式を配置し各種設定を行った後、
マルチドメインにて設定したパスに、アクセスしてみたところ
一応CakeFW自体は正常に動作している様に見受けられるのですが
(CakePHP:the rapid development php framework が表示されました。)
/home/{user_name}/www/multi_domain_directory
下記CSSがあたっていません。
<link rel="stylesheet" type="text/css" href="/css/cake.generic.css" />
ソースを開きその中のCSSの読込をクリックすると
本来は app/webroot/css/cake.generiuc.css
が認識されないといけないハズなのですが webroot/css が認識されないです。
どうすればCSSが正常に認識される様になりますでしょうか?
※一応CakeFWを追いかけると lib/Cake/view/Helper/HtmlHelper.php / function css()
にてロードをやっている様なのですが
こちらは、FW本体なので手は入れたく無いです。
892 :
nobodyさん:2012/04/09(月) 16:51:20.49 ID:gWXPCP/C
>>890 おーこれだ
macのファイルシステムがHFS+ってのでこれが大文字小文字区別しないんですね
半日も嵌ってしまたけど勉強になった
どうもです
1.3系でプラグインの作成で質問です。
>>721でindexアクションを作ればプラグイン名のみでアクセス可能となりますが、
/pizza/addの場合、エラーになります。/pizza/indexでもエラーです。
プラグイン内のコントローラを参照しているからこうなると思うのですが、
プラグインで/pizza/addとか/pizza/editのアクション指定したい場合は、
ルーティングをいじらないといけないのでしょうか?
cakePHPってYiiとかなり似通ってるね。
レイアウト全体をキャッシュせずに
「$content_for_layout」の内容のみキャッシュしたいのですが、
どうすればいいのでしょうか?
外部に公開する場合に
→ Error: 23423Controller could not be found. ←
こーいうエラーメッセージを表示せずに
存在しないページ、URLでアクセスされた場合には
事前に用意したエラーページ(メッセージ)を表示したいのですが
どうすればよいでしょうか?
897 :
nobodyさん:2012/04/10(火) 12:24:22.68 ID:R7ZoSsIJ
2になってから$_GET['url']って読まなくなった?
仕様を変える方が悪い
POSTフォームだと$this->request->dataの内容に応じて
インプットの値が自動で上書きされるのに、
GETフォームだと、空のままなんですが、
自分でマージするしかないのでしょうか・・・?
$this->request->data = $this->request->query;
とやってもダメでした。
>>895 layoutのcontent_for_layout以外のところをnocacheでくくってみたら?
>>900 getでもフォームの内容は引き継がれるはずだよ
遷移先のフォームのIDとかnameが変わっちゃってない?
902 :
900:2012/04/10(火) 16:51:59.32 ID:???
>>901 うーん・・・私の環境だと引き継がれませんね。
ちなみに2.1系です。
903 :
864:2012/04/10(火) 23:50:19.65 ID:???
誘導されましたのでよろしくお願い致します。
cakePHPのヘルパーを使って画面遷移させようと
しているのですが、出力されたリンクに関係ない文字列(ここでは、 /app )
が勝手に付加されてしまい困っています。
<?php echo $this->Html->link('JUMP', '/jump', array('class' => 'button', 'target' => '_self')); ?>
ここでは、本当は (B)の形でhtmlを出力したいです。どうすれば良いでしょうか?
(A) <a href="/app/jump" class="button" target="_self">jump</a>
(B) <a href="/jump" class="button" target="_self">jump</a>
管理者が管理画面から会員ページに移動したいと思っています。
会員のパスワードは暗号化されるので、通常のログインでは無理です。
こういう場合って、単にAuthのセッション情報を付与して
会員ページにリダイレクトするだけでしょうか?
管理者としてではなく、管理者が会員Aさんになりすましてログインするってこと?
嫌な仕様だなw
会員ページのメンテナンスとかしたいなら管理者権限でそう言うのできるアクションを
作ればいいのでは
908 :
864:2012/04/11(水) 22:08:14.47 ID:???
>>904 cakeでの/はcake_appのルートになるからその動作が適切だよ
普通にHTMLで
<a href="/jump" class="button" target="_self">jump</a>
って書けばいいじゃん。
もしかしたら
'/../jump'で解釈してくれたりしないかな?知らないけど
名前やちまたorz
てかこれでブラウザが解釈してくれるわな
吐き出されるのはこうなるけど
<a href="/app/../jump" class="button" target="_self">jump</a>
911 :
nobodyさん:2012/04/11(水) 22:50:15.55 ID:Ko+Ap9VU
>>904 routingのprefixかなんかで特殊な設定してない?
appという文字列がどこからやってきたのか検討もつかない状態なの?
>>905 Authでログインしようとしても無理だと思うので
>>906でいいんじゃない
>>908 cakePHPをせっかく使っているので直接書きはしたくないです。
>>911 基本的にcakePHPのベースコードは何もいじっていないのですが
FWにデバッグコードを入れておっかけてみます。
>>907 お前の投稿自体マルチだろ。しね。
>>908ですが、、、
あれ?cakeルートがサーバーのウェブルートで無い場合に、
Html->link()つかってサーバールートへリンクしたいってことじゃないの?
つまり、サーバールートの下にappってディレクトリがあってそこがcakeのルートになってるんじゃないの?
cakePHPでは一般的に共通で使用されるファンクションは
どこに定義しますか?
パスを教えてください。
Utility的な自己ライブラリを定義したいと考えています。
ファンクション群ならbootstrapじゃね
外部にしてincludeか
916 :
905:2012/04/12(木) 13:56:49.96 ID:???
>>906、
>>911 私も管理画面に会員情報を編集できるページを作っていたのですが、
管理画面から対象の会員としてログインし、
会員情報の修正をしている市販CMSを結構見るんです。
たぶん、同じような箇所を管理画面用・会員用と分けて作るのは
手間がかかるからログインし直すという事で対処していると思うのですが、
あまり良いやり方ではないみたいですね。
成りすましをしているようで変態的
>>914 vendorにライブラリとして突っ込む
>>916 ユーザーが実行できる範囲の行動を管理者が行うという前提であれば
手抜きの方法としてナシではないのかもしれないけど、スマートでないのは確か
というかユーザーが修正できるんならユーザーに修正させるべきじゃね?
管理者がユーザーの設定代行するって言うのはかなりの最終手段のような気がする
Cakephp のメソッド引数として全角文字列を入れて動かしているのですが、
なぜかIEでだけ、動きません。
http://hostname.jp/controller/action/全角の検索ワード という感じのアクションなのですが、Chromeでは問題なく動いているのですが、
IE系のブラウザではまったく動いてくれません。検索ワードが半角文字だけですと、IEでも動いています。
そもそもCakeのメソッド引数に上記の方法で全角文字列を渡してもいいものなのでしょうか?
なにか別にいい策があればご教示ください。
全角?
古臭い用語だな
>>920 マルチバイト文字のことです。正確にはUTF-8の日本語文字列です。
文字コードも関係ないwww
URLエンコード
アホか。URLエンコード するときの
文字コードは何だよ。言ってみろ
cakePHP2.1.1を使用してコントローラの中からモデル内に定義した
ファンクションをコールしようとしているのですが
下記の様なエラーが出てしまいます。
どこに間違いがあるのでしょうか?
[model]
class Test extends AppModel
{
var $name = 'Test';
function Testxxx(){echo "Test!";}
}
[controller]
var $uses = array('Test');
$this->Test->Testxxx();
[error]
Error: SQLSTATE[42000]: Syntax error or access violation: 1064
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'Testxxx' at line 1
Error: SQLSTATE[42000]: Syntax error or access violation: 1064
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'Testxxx' at line 1
エラーメッセージを繰り返したら誰かが答えるとでも?
で?それが質問者の態度?
cakePHP で特定のコントローラ
例)
denyController.php
へのアクセスを禁止するには一般的にどうしますか?
.htaccess or cakePHPでなにがしかの設定が可能?
cakePHPでdeleteAllに削除条件を指定しても無効なのでしょうか?
下記コードを実行すると、全レコードが削除されてしまいます><;
$deleteCondition = array("hoge_id" => 3333);
$this->Hoge->deleteAll( $deleteCondition );
>>932 条件の与え方はfindと同じだよ。
その条件でfindしたら検索されるの?
934 :
nobodyさん:2012/04/14(土) 19:34:52.76 ID:V2giXwsG
>>931 俺ならコントローラー全てのアクションにprefixつけてprefixルーティング&アクセス制御って感じかな
>>933 自己解決しました。
英語のドキュメントを見たところ
cake2.1.1 になってから呼出し方が微妙に変わっていました。
>>936 実際には delete は変わってませんでした。
findについては、
findAll → find('all')
といった感じです。
しかし、なぜ同じコードで
>>932が今度は正常に削除出来たか不明。
controllersの下にサブフォルダを作ってコントローラーを置くと認識されますが、view以下で同じことをやるとエラーになります。
viewsのパスを任意に追加するにはどうすればいいのでしょうか?
ソース見たらApp::path('views')でパスは取れるみたいだけど追加の関数がない。
なれると cakePHP むっちゃ便利やんかぁ。
cakePHP と Pear って一緒に使える?
はい
>>942 ブログチュートリアルでもやればやり方わかるだろう
cakePHP(2.1.1) で AController / Hoge() 内の処理で
AController / Hage()
や
BController / Chabin()
を呼び出すにはどうすれば良いでしょうか?
>>944 異なるコントローラ間で同じ処理をやらせないなら、コンポーネントを使うといい。
>>945 ありがとうございます。
どうしても重複処理があり使いまわしたと思ってました。
cake2.1.1(サクラ) でcronでcakePHPを実行させる為に、まずコマンドラインから
正常にキック出来る事の確認をしているのですがうまくいきません。
1.x系と2.xとでは記述方法が異なっている事を考慮に入れ
下記コードを記述しているのですがなぜかシェルクラスが認識されないです。
【作成したシェルクラス】
Console/Command/TestHelloShell.php
<?php
class TestHelloShell extends AppShell
{
public function main()
{
$this->log('[Shell]main() が実行されました。', LOG_DEBUG);
}
}
?>
【コマンドライン】
%/usr/local/bin/php /home/{my_account}/cake/lib/Cake/Console/cake.php test_hello -app /home/{my_account}/www/{my_directory}/app
Error: Shell class TestHelloShell could not be found.
#0 /home/{my_account}/cake/lib/Cake/Console/ShellDispatcher.php(167): ShellDispatcher->_getShell('test_hello')
#1 /home/{my_account}/cake/lib/Cake/Console/ShellDispatcher.php(69): ShellDispatcher->dispatch()
#2 /home/{my_account}/cake/lib/Cake/Console/cake.php(41): ShellDispatcher::run(Array)
#3 {main}
cakePHP ってなんでこんなに便利なんだ。楽しすぎる
950 :
nobodyさん:2012/04/19(木) 16:26:48.17 ID:GZ2gdGu2
ログイン認証とかの制御をいれたいんですけど
お勧めの方法はありますか?
Auth使えば
Authコンポーネント
良く使用する変数(サイトのURLなど)をDBで管理して
設定ファイルに出力したいのですが、良い方法は無いでしょうか?
考えたのは、モデルキャッシュして設定ファイルが必要な時に
そのキャッシュを読み込むパターンです。
>>953 bootstrap.phpでDBから設定データを読み込んでConfigure::Storeでキャッシュ。
…でもいいんだけど、
Cake2からは ConfigReaderInterfaceっつうのがついたからね。
Readerを書けばモデルから直接Configureに読み込むができるようになった。
Configureファイルに書いた時と同じようにConfigure::read()でどこでも読めるから便利よ
あと、Sanitize::escape() でサニタイズしたデータを復元するときって
みなさんどんな感じでやってますか?
サニタイズいうな
サニタイズ時々
サニタイズ言うなを知らない方が馬鹿
963 :
nobodyさん:2012/04/20(金) 12:22:03.72 ID:PezrE8Wt
うんごぶりぶりんこ!!!!ドビュビュビュビュドバババババブッ!!!
ドリュルリュルウリュリィブブブブブブッッ!!!!あへあへうんこまん!!!ぶりっちょ!!!
ケツの穴からドババババババババッバwwwwwwwwwwwwWWWW
wwwwwwwwwwww
WWWwwwwwwwwwww??? ? ? ? ? ? ? ????? ????????wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
なお、まにあわんもよう
↑サニタイズよろしく
アホが露呈して ファビョル
>>963 低能乙w
いまどき英語なんて小学生でもペラペラなのにwww
>>954 1.3系使ってるので、Configure::storeを使うパターンで行きます。
これってfindした配列を保存して、loadで読み込んでreadで参照
出来るから便利ですよね。参考になりました。ありがとうございます。
俺がバカなら、お前もバカぁ〜
バカを承知でなぜ惚れた〜
>>968 一行書くことになるけど
Router::connect('/:action', array('controller' => 'home'));
とかでいけるんじゃない
>>969 この方法だと、コントローラにアクションを追加しないとアクセスできません。
pagesを使うように、アクション名を書かずにビューファイルを追加するだけで
アクセスできるようにしたいのですが・・・
リモートデバッグについて質問なんですけど
Eclipseでレンタルサーバ上に展開したPHPファイルを
ローカルのEclipseにてデバッグ実行って出来ますか?
※ブレークポイントが正常に止まるか。
>>970 アクション追加せずにビューだけ表示したいのならpagesでいいんじゃないの?
アクションが無いのだから特定のコントローラーを介する理由も無いし
Router::connect('/*', array('controller' => 'pages', 'action' => 'display'));
973 :
nobodyさん:2012/04/22(日) 10:29:18.10 ID:L2FF/0Tg
>>971 リモートデバッグは、サーバー側のデバッグ用ポートにコネクトしてする感じ
そのレンタルサーバとやらに聞いてみて、デバッグ用ポートが開いていないのなら無理
まぁ、普通のレンタルサーバでデバッグポート開いている事はたぶん無いんじゃないかな
>>973 ありがとうございます。
鯖屋に確認してみます。
ローカル環境に開発環境を作ると重たいので
全てレンタルサーバ上でやりたいなぁー、なんて考えてました。
975 :
nobodyさん:2012/04/22(日) 11:32:49.43 ID:L2FF/0Tg
>>ローカル環境に開発環境を作ると重たいので
重いのはたぶんEclipseだよ
他のエディタとか使う事あるのなら、XAMPP+エディタで試してみるといい
ただ、GUIのデバッグ環境は無いと思うが。
debugレベルを 0 にしても
適当なURLを入力すると次の様にサイトがcakePHPを使用している事がわかる様な
エラーメッセージが出てしまいます。
これを消す方法とかってありますか?
CakePHP: the rapid development php framework
バカはしね
>>976 default.ctpとかテンプレートのどっかに書かれてるんだろ
どこから出力されてるか突き止めてそれを消せ
今どきデバッガの力を借りないとデバッグできないなんて
HTMLでいうと
<li><input type="checkbox" name="data[Post][]"></li>
<li><input type="checkbox" name="data[Post][]"></li>
<li><input type="checkbox" name="data[Post][]"></li>
みたいな出力にしたい時、フォームヘルパーを使って出来ますか?
982 :
nobodyさん:2012/04/23(月) 16:08:34.29 ID:3JcMmxsm
cakePHPでブラウザからアクセスがあった場合に
次の様に解釈させ、処理を実現をしたいのですがどうすれば良いでしょうか?
@アクセスされる際のURL
http://unnko.com/prin/food/rice/333 @Controllerに定義した内容
class PrinController extends AppController
{
function food($menu,$id)
{
echo $menu."<br>"; // ← rice を表示したい。
echo $id."<br>; // ← 333 を表示したい。
}
}
バカはしね
いつものウンコ野郎はスルー
頭の中にウンコがぎっしり詰まってるんだろ
Lithium安定版でねーなぁ
>>981 <li>$this->Form->checkbox('post.xxx');</li>
モデルでクッキーを読みに行きたい場合、皆どうしてる?
DB登録時に、クッキーからログインユーザーの情報吸い上げて登録しにいくフローって多くない?
モデル内でApp::usesでクッキーコンポーネント呼ぶのは邪道?
モデルでくっきーを読もうってのがそもそも設計としてゴキブリレベル
いや蛆虫だろう
ああ、そうやっぱモデルでクッキー読むのは邪道なのね。サンクス
>>982 View フォルダの下にPrinフォルダつくってfood.ctp作ったか?
994 :
981:2012/04/24(火) 14:05:37.49 ID:???
↓こんな感じでやってみたのですが、エラー時など同じビューを表示した時、
チェックした項目がチェックされていません。どうすればいいのでしょうか?
<li><?php echo $form->checkbox('Post.xxx', array('value' => 1)); ?></li>
<li><?php echo $form->checkbox('Post.xxx', array('value' => 2)); ?></li>
<li><?php echo $form->checkbox('Post.xxx', array('value' => 3)); ?></li>
2.0のAuthがsessionKeyをself::$sessionKeyとしてるもんだから
コントローラーからモデル名に変えようにも
$this->Auth->sessionKey = 'Auth.Hoge';
じゃだめで
AuthComponent::$sessionKey = 'Auth.Hoge';
って市内とダメなんだけどそもそもいじっちゃマズイのかな?