【PHP】フレームワーク CakePHP 8ホール目【1.3】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/03/18(木) 10:00:59ID:6+kHM8kHCakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※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
0138nobodyさん
2010/04/03(土) 22:20:39ID:???小さい時から、目標がある人間は、それで良いが、
やりたい事に気がついて、勉強できる環境が、ないのも微妙だろ。。。
実際、ほんとにやる気がある人間は、30でも40でも勉強出来る環境に行くけど、
全員そんなに意思は固くない。
0139nobodyさん
2010/04/05(月) 16:39:35ID:???一旦HTMLコーディングしたものを、こっちでVIEWのテンプレートに書き換え?
0141nobodyさん
2010/04/05(月) 18:45:04ID:???マスタテーブルの表示・追加・削除画面を作っているんですが
Modelのsaveが実行されません。(INSERTされない)
function add(){
if (!empty($this->data)) {
if ($this->JimushoMaster->save($this->data)) {
$this->flash('Your post has been saved.','/jimusho_masters');
}
}
}
こんな感じで行ってるんですがナニが悪いんでしょう?
モデルJimushoMasterはid(int, unsigned, auto_increment)とname(varchar)しか
ない簡単なものです。
add.ctpでは
<h1>事務所追加</h1>
<?php
echo $form->create('jimusho_master');
echo $form->input('name');
echo $form->end('保存');
?>
とだけしています。
0142nobodyさん
2010/04/05(月) 18:55:28ID:???これだけじゃ詳しくは分からんけど、validateに失敗しているんじゃない?
debug($this->JimushoMaster->invalidFields());
をsave失敗時に実行してみたら何か入ってるんじゃないかな
saveされないというのはSQLが実行されずにaddのフォームが表示されるんだよね?
0143nobodyさん
2010/04/05(月) 18:58:10ID:???Office / offices / OfficesController
0144nobodyさん
2010/04/05(月) 22:59:55ID:1CfLL9NS半角に変換したいのですが、
そういう処理はどう書けばいいでしょうか?
0145nobodyさん
2010/04/05(月) 23:16:53ID:???0146nobodyさん
2010/04/05(月) 23:20:10ID:???とにかくマニュアルは一通り目を通しておこうよ。
覚えなくてもいいけど、どこでどんな処理ができる・・・ってだいたい見当つくでしょ。
0147nobodyさん
2010/04/05(月) 23:23:16ID:???0148nobodyさん
2010/04/06(火) 01:21:23ID:???0149nobodyさん
2010/04/06(火) 04:05:02ID:???中でdataを加工してもviewまで引っ張れないのですよ
0150nobodyさん
2010/04/06(火) 09:43:10ID:???何でviewに変換後のデータが必要かは知らないけど、それが書いてなきゃ分からんでしょ
やろうと思えばModel内で加工することもできるし
0151nobodyさん
2010/04/06(火) 18:16:24ID:???ご助言ありがとうございます。
saveの返値は1でしたので成功しているようです。
が、やはりデータベースにINSERTされていないようです。
念のため、save後、debug($this->JimushoMaster->invalidFields());
してみましたが空っぽなのでバリデートの失敗ではないようです。
レールから脱線しますが、
$this->JimushoMaster->query('INSERT INTO jimusho_masters (name) VALUES (\''.$this->data['jimusho_master']['name'].'\');');
のように無理やりSQLを指定して実行すると問題なくINSERTされました。
うーん、ナニが悪いんでしょう。ケーキ食べ始めなのでわからんす。
0152nobodyさん
2010/04/06(火) 21:06:46ID:???期待通りの動きをしないときはとにかくdebug()をあちこちにぶっ差して
どういうデータが来てるか見る。あとdebugモード2の時のSQLダンプをよく読むのがいいです。
0153nobodyさん
2010/04/07(水) 02:07:26ID:???0154nobodyさん
2010/04/07(水) 10:12:26ID:???ん?ということは、リダイレクトしているということ?
だったら、発行されたSQLとか見て原因探ればいいんじゃない?debugは2にしてるよね?
Insertされないというのをもうちょっと具体的に書いてみてちょ
0155151
2010/04/07(水) 16:13:32ID:???説明も下手ですね。
if( $this->JimushoMaster->save($this->data) ){
$this->redirect('/jimusho_masters');
}else{
debug($this->JimushoMaster->invalidFields());
}
現在のコードはこんな感じです。
実行すると、レコードが追加されずに/jimusho_mastersにリダイレクトします。
saveは成功したという結果が返っているんですが、
レコードは増えていない画面に戻ります。
Validateが失敗していれば、エラーがでるはずですが
なにも表示されないのでエラーではないようです。
デバッグモードで画面下にクエリが出るんですが
そこにはINSERT文がないので、saveを呼び出しても
INSERTクエリが実行されてないようです。
0156nobodyさん
2010/04/07(水) 17:24:09ID:???読み返してみた。
第一引数はモデル名じゃなかったかな?
echo $form->create();
or
echo $form->create('JimushoMaster');
にしてみてどう?
0157151
2010/04/07(水) 17:41:43ID:???なおりました!ありがとうございます!
なるほど、$formヘルパでcreateするときにモデル名を
指定するんですね。やっと解決できました。
ご助言ありがとうございます!
0159nobodyさん
2010/04/09(金) 01:42:43ID:???1〜0までの数字を使ってる人いる?
1を押したときにShift押さなくても!が出るようにしてない人て
頭おかしいよね
0160nobodyさん
2010/04/09(金) 04:23:45ID:???追加・更新・削除できるものでお勧めあったら教えてください
MediaPluginは更新が出来なかった
0161nobodyさん
2010/04/09(金) 09:54:40ID:???うん。頭おかしいと思う。
>>160
Mediaplugin更新できるでしょ。
ファイルアップロード系は導入するのが面倒で複雑だけど、
がんばってMediapluginを使うようにした方がいい。
自作するよりスピーディーだし、かなりうまく設計されていると思う。
そのレベルの話なら公式で聞いてみたらどうでしょ。
0163nobodyさん
2010/04/10(土) 00:06:40ID:XPBwMnMWどうやればいいですか?
0164nobodyさん
2010/04/10(土) 00:09:03ID:???setするんですね
失礼しました
0165nobodyさん
2010/04/10(土) 14:31:33ID:???http://gimpo.2ch.net/test/read.cgi/nendai/1269784099/
0166nobodyさん
2010/04/11(日) 21:25:47ID:???http://www.facebook.com/
このfacebookのindexページのように、ログイン画面と登録画面をindexに置きたいです。
Authだと、Auth用のusersコントローラを独立して作らないといけない? みたいなのですが、
自分の目的にはAuthを使えるでしょうか?
FaceControllers内
function index, functon edit, function add. function login, function logout,
などと、ひとつのコントローラに納めないとできないのではないかと思ったりして悩んでおります。
たぶん大きな勘違いかと思うのですが、どういうイメージでAuthを使えばよいのでしょうか?
0167nobodyさん
2010/04/11(日) 21:46:51ID:???0169nobodyさん
2010/04/12(月) 11:19:42ID:???Cannot modify header information - headers already sent by
というエラーが出てしまいます。
調べたところ、
<?php ?>の上下の改行をなくす、php.iniでoutput_bufferingをonにする。
などの解決方法がありますが、試しても上手く行きませんでした。
layoutもデフォルトなのでheaderの部分を別個書いた記憶もなく、
ほとほと困り果てました。
なにかほかに解決方法はないものでしょうか?
0171nobodyさん
2010/04/13(火) 05:20:46ID:4rbnTecY動的にヘルパーを読むにはどうしたらいいですか?
0172nobodyさん
2010/04/13(火) 13:09:50ID:???普通にの場合も読んでおけばいいと思うけど、どうしても携帯の時だけというのなら
app::importとかでいいんじゃない?
0173nobodyさん
2010/04/13(火) 13:10:31ID:???普通にPCの場合も読んでおけばいいと思うけど、どうしても携帯の時だけというのなら
app::importとかでいいんじゃない?
0174nobodyさん
2010/04/13(火) 14:41:15ID:???http://bakery.cakephp.org/articles/view/cakephp-1-3-0-rc4-has-arisen
0175nobodyさん
2010/04/13(火) 14:41:46ID:???とあるので、すたぶるが来る日も近そうです
0176nobodyさん
2010/04/13(火) 15:19:57ID:???0177nobodyさん
2010/04/13(火) 16:35:06ID:???0178nobodyさん
2010/04/13(火) 16:40:10ID:???0179nobodyさん
2010/04/13(火) 16:55:01ID:???でも、それって、1.1でも1.2でも穴空いてたような
0180nobodyさん
2010/04/14(水) 00:09:32ID:???昨日の夜に見たときは、なかったんだけどな…日付改竄?キャッシュ?
>>175
このペースでいけば4月26日かな?
0181180
2010/04/14(水) 00:12:06ID:???スレ汚しスマン
0182169
2010/04/14(水) 09:53:38ID:???どうもありがとうございます。
なぜかmodelフォルダのファイルを作成し直したら直りました。
おそらく、ファイルの文字コード関係が怪しいと思ったのですが、結局原因は特定できず。。
ちなみに、Authコンポーネントを使う時は、
pages_controller, users_controller
などと、別途usersのコントローラを作成しますが、
これはわかりやすくするために分けるだけで、一つのコントローラに統合することも可能
ということでしょうか?
0183nobodyさん
2010/04/14(水) 10:08:05ID:???ファイル末尾の ?> を削除するところから始めたら良いことあるかもね
Authについては、まず、Userモデルを使って何か動かしてみれば良いんじゃないかな?
手を動かしたほうが早く身につくよ
0184169
2010/04/14(水) 10:18:49ID:???レスありがとうございます!
末尾の ?>も排除したりいろいろしたのですが、結局上手くいきませんでした。。
どうもDOM付エンコードとかそっち系かなとにらんでおります。
Authは実際に動かしているのですが、usersコントローラのものを
pagesコントローラに少しずつ動かしても結構動くので、もしかして
全部移動できるかな? と思ったのです。
0185nobodyさん
2010/04/14(水) 10:29:59ID:???そりゃ動く
でも、意味がない
しかもよりによってPagesControllerだと、何のため?ってことになるし、単にメンテがしにくくなるだけのような気が
今後もCakePHPを使っていくつもりなら、CakePHPの思想に従ってみたらどうか
0187nobodyさん
2010/04/14(水) 12:56:22ID:???入力時にkeywordsテーブルの name フィールドをチェックしたいです。
class Keyword extends AppModel {
public $validate = array(
"name" => VALID_NOT_EMPTY,
);
}
しかし、viewでは
$form->input('Keyword.0.name');
上記のように配列仕様の入力なので、validateが上手くいきません。
$form->input('Keyword.name'); と書けば動くのですが。
上手い方法はないものでしょうか?
0189nobodyさん
2010/04/15(木) 00:04:30ID:???はるか昔smarty使ってたこととか、デザイナーにphpいじらせたくないこととか考えると
smarty組み込みたいんだけど、ヘルパーの引数に配列が渡せなくて詰んだ。
参考サイトは山ほど見たんだけど、$this->aa('key1','value1') で配列生成できているところまでは確認したけど
ヘルパー引数にほりこんでもヘルパーが動かない。。。
0190nobodyさん
2010/04/15(木) 09:53:08ID:???ここは見た?
http://d.hatena.ne.jp/am11op/20070614/1181837256
個人的にはSmartyなぞ必要ないと思っているが、使いたいヤツがいるのでしかたなく...
0192nobodyさん
2010/04/15(木) 10:39:21ID:???view で使う程度のphpなら直接デザイナーに教えた方がいいと思うが。
smarty なんて 今の時代に cgi 使ってプログラムやってるようなもん。
0195nobodyさん
2010/04/16(金) 16:41:46ID:???さわらせている人っているのん?
0196nobodyさん
2010/04/16(金) 17:00:25ID:???やったことないけど
0197nobodyさん
2010/04/16(金) 17:10:39ID:???言えばいいだけでは?
一人で全部まかなってるフリーの立場からしたらプログラマとデザイナがそれぞれ
自分の仕事だけやってればいいなんてうらやましい。だからもっと話して
連携すりゃいいのにと思うなぁ。
0198nobodyさん
2010/04/16(金) 17:14:40ID:???アーティスティックなのを請け負うと、デザイナ必要になるよね
大抵、ループを説明するより自分でいじったほうが速い
0199nobodyさん
2010/04/16(金) 17:23:20ID:???見た目だけじゃなくて、機能を考えたら
例えばリストにするよりか、プルダウンにしたほうがいい
なんてことになって、それならAJAXつかっちゃおうとかに
なったりしたら、デザインもプログラムもいろいろ
いじるところが出てくるな
となるとどっちを主導でいくかってところで難しくなるのか
なるほどなるほど。
それならいっそう話し合いをして連携しないといけないと思うけど
そういう仕事ってディレクターとかコーディネーターみたいなのが
間にいるもんなんじゃないの?
自分で勝手にいじったらいろいろややこしくなるような気がする。
0200nobodyさん
2010/04/16(金) 19:01:38ID:???0201nobodyさん
2010/04/17(土) 00:35:56ID:???0202nobodyさん
2010/04/17(土) 00:55:04ID:???0203nobodyさん
2010/04/17(土) 12:57:20ID:???そういうことか。
本心では「政治なんて誰がやっても同じ」と思ってるから、
政治家になれとは言わない。
それと同じようにWebのディレクティングも誰がやっても同じだから・・・。
0204189
2010/04/17(土) 13:52:28ID:???>>190 さんの紹介してくれてる記事はもちろん試していて、
$this->aa()でview内でarray生成はできるけど(自作関数内var_dumpで確認)、helper内だとうまく渡せないんです
議論がされてますが、デザイナーにPHP触らせたくないというのが理由です。
こちらデザインは素人レベルでシステムのみ対応しているため、発注元にデザイナーを別途雇ってもらうケースが多いのですが
そのときにコードぐちゃぐちゃにされて「動かないからなんとかしてくれ」となるのが面倒なんですよ
(自作の各種パッケージをちょっとカスタマイズして売る、というやり方を副業でやっているので・・・)
あとはクライアントがsmarty指定するケースも多いです
もう少し軌道に乗ったら、提携デザイナーさんを何人か探して、
その人達を紹介するやり方にかえようと思います。
そんなわけで、1.3からはPHPコードべた書きでいこうと思います。
0205nobodyさん
2010/04/19(月) 16:55:28ID:WgJ57/BKCake is NOT able to connect to the database.
と言われましたが、当面はDBを使いません。
このメッセージが出ないようにするにはどうすればいいのでしょうか?
0206nobodyさん
2010/04/19(月) 19:56:16ID:???http://www.google.co.jp/search?hl=ja&rlz=1B3GGGL_jaJP283JP283&q=cakephp+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%80%80%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84&lr=&aq=f&aqi=&aql=&oq=&gs_rfai=
0207nobodyさん
2010/04/19(月) 22:23:19ID:faTvhF7k1.あるテーブルの内容を一覧で表示。(各行にはチェックボックスがある)
2.一覧のチェックボックスにチェックが付いているものを、submitした時、別画面の一覧に表示させたい。
2番の処理をどのようにしたら良いでしょうか?
0208151
2010/04/19(月) 22:37:03ID:???0209nobodyさん
2010/04/19(月) 23:48:06ID:faTvhF7k返信ありがとうございます。
具体的なコードを書いてくれるとありがたいです。
質問内容が抽象的で申し訳ないのですが…
初心者ということで勘弁してください。
0210nobodyさん
2010/04/20(火) 01:53:35ID:???0211nobodyさん
2010/04/20(火) 03:02:03ID:???0212nobodyさん
2010/04/20(火) 11:21:01ID:???0213nobodyさん
2010/04/20(火) 23:34:34ID:???これテストにデルから覚えておくように
0214nobodyさん
2010/04/21(水) 01:33:25ID:???優しい俺が優しく解説致します。
2番の処理を、CakePHPとは関係なくあなたのお使いの言語環境(おそらくPHP)を使って
どのように実現するのか、考えてみれば自ずと分かります。
Cakeで楽になる部分はあっても、素のPHPで(自分のスキル的に)いかんともしがたい部分を
Cakeが良きに計らってくれるというわけでは、必ずしもありません。
季節の変わり目、まだまだ寒い日もあるかと思いますので、ご自愛下さい。
0215nobodyさん
2010/04/21(水) 14:44:22ID:???0216nobodyさん
2010/04/21(水) 14:49:53ID:???いきなりcakeから入るより結果的にはそのほうがはやく覚えられると思うし
っていうかPHPなんかちゃんと勉強すれば2日か3日ぐらいでだいたい把握
できるんだからそれを省略すんなよと…
0217nobodyさん
2010/04/21(水) 21:06:23ID:???PHP学習しても理解できないとか知的障害レベル
0218nobodyさん
2010/04/21(水) 21:14:37ID:???知的障害とかアホか
0219nobodyさん
2010/04/21(水) 21:34:45ID:???0220nobodyさん
2010/04/21(水) 21:42:26ID:???0221nobodyさん
2010/04/22(木) 12:04:30ID:???0222nobodyさん
2010/04/22(木) 18:04:46ID:???もう見てないだろうけど
DBから一覧を取得したと時に各ユーザー(例えばね)のIDも取得してると思うけど
多分、find('all')で取得でforeachだよね?
<? e($form->checkbox('Model.name.id'))?>
submitで来たあとは1が入ってる人を一覧費だけじゃないかな
0223nobodyさん
2010/04/23(金) 04:16:55ID:???自己満足のためだけに発言する自分の卑しさを省みてみなよ。
ひとまずPHPの基本的な本を読んだほうがいい感じだけどね。
他の言語も含めて経験が無ければいきなりフレームワークはやめたほうがいい。
0224nobodyさん
2010/04/23(金) 14:42:23ID:???http://bakery.cakephp.org/articles/view/cakephp-1-2-7-released
0225nobodyさん
2010/04/23(金) 15:32:11ID:IhQ26v2DこういったアプリにはCakePHPは向かないですか?
簡単に言うと、CMSのカスタムフィールドを拡張したようなイメージで、
データの入力タイプ(フォームの種類、バリデーションのルール)を用意しておいて、
ユーザーの入力に応じて、動的に表示するフォーム・バリデーションやアプリの挙動を切り変えます。
素で作るとすると、データ用の基底クラスを作って、入力タイプごとに派生クラスを作っていく感じになると思います。
こういった独自のクラスをCakePHPのMVCに組み込むのが難しそうな感じがしているのですが、
CakePHPの場合、どうやるのがいいんでしょう?
それとも他のフレームワークを使ったほうがいいですかね?
0227nobodyさん
2010/04/23(金) 16:18:29ID:???モデルのバリデーション機能を利用しようと思っていますが、使い切りのジェネレーターのようなものなので、
今の所、フォームから入力されたデータはセッションに保存する予定です。
ですので、テーブルも作りません。
ただ、後々ユーザーの設定(フォームの組み合わせ)をDBに保存する予定があります。
が、これは動的なフォームを生成・切り替えさえできれば、設定だけ保存しておけば済むのであまり問題ないかと思ってます。
問題はデータ構造の切り替えをどうするか、です…。
例をあげると、
1) ユーザーがドロップダウンリストから「データパターン1」「データパターン2」などを1つ選んでサブミット
2) 画面遷移後、選択したタイプによって、フォームを表示。ユーザーが入力してサブミット。
「データパターン1」の場合は「ドロップダウンリスト」を表示
「データパターン2」の場合は「テキストフィールド」を表示
など
3) データパターンの種類に応じたバリデーションを行う。
バリデショーンは動的に切り替えられそうなので問題ないのですが、
データ構造をもたせたクラスをどう組み込むかで、CakePHPでどうやるのがよいのか悩んでます…。
0228nobodyさん
2010/04/23(金) 16:25:09ID:???各項目を操作していく感じになります。
パターン1 = テキスト + ドロップダウンリスト
パターン2 = テキスト + ラジオボタン
など
DataModel(extends AppModel)などを作り、TextDataModel(extends DataModel)などを作ればよいのかな、
(その他、DataModelの組み合わせを扱うモデルクラスなど)
と思いつつ、CakePHPではかえって複雑になってしまう気がして悩んでます。
0229nobodyさん
2010/04/23(金) 16:28:36ID:???うーん。イメージがいまいち掴めない
最終的に保存する例を教えてくれ
あと、セッションに保存したデータはどうするの?そのあと
0230nobodyさん
2010/04/23(金) 16:29:11ID:???0231nobodyさん
2010/04/23(金) 16:41:57ID:???フォームに入力したデータそのものは保存しないです。
入力されたデータを計算し、最終的に結果を画面に表示(またファイルにしてダウンロードしてもらう)だけですので。
後々データを保存する場合も、セッションをハッシュ化してそのまま保存しようと考えてます。
計算を行う際(と後々データからフォームを復元する際)に、フォームの種類を「走査」する部分をどうするか、が悩んでいる部分です。
極端な話、モデルを一つだけ作って、その中で
switch($form_type) {
case 'text':
...
case 'checkbox':
...
}
などとし、バリデーションなどだけ動的に切り替えてもいいのですが、
やはり、柔軟性を高めるためにもデータの種類ごとにクラス化したいと思ってます。
似たようなアプリがあれば説明しやすいのですが、なかなか見つからないもので、、、すみません・・・
0232nobodyさん
2010/04/23(金) 16:46:50ID:???ttp://onlineform.jp/gen/form?template=inquiry&type=1&color=black
0233nobodyさん
2010/04/23(金) 16:51:23ID:???外してるかもしれんが自分なら
モデルはひとつ
データに応じてバリデーションを切り替える
種類の識別は、種類を格納したデータを持っておいても良いし、フィールド名(擬似的なフィールド名)で識別しても良い
って感じ。
柔軟性を高めるというのが何を意味しているのかはちょっと分かんなかった
0234nobodyさん
2010/04/23(金) 17:01:52ID:???なるほど。
データの種類ごとにクラス化すれば、処理を委譲できるのでそちらのほうが楽かな、と思ったのですが、
やはり、CakePHPを使う場合はベタな書き方のほうがいいのかな。
もうちょっと色々調べてみます m__m
0235nobodyさん
2010/04/23(金) 17:19:44ID:???クラスにしてもモデルにしてもいいんだけど、
結局データの種類に応じて読み込むんだろうから、一緒かと
あと、バリデーションだけなら、外出しするほどではないんじゃないかと想像
0236nobodyさん
2010/04/23(金) 17:22:17ID:???ttp://bakery.cakephp.org/articles/view/inheritable-behavior-missing-link-of-cake-model
ただ、やはりCakePHPで想定されている使い方ではないようですね…
モデル自体を自力で実装という手もありますが、少し凝ったことをしようとすると難易度が極端にあがる、
ということだけはわかりました…。
0237nobodyさん
2010/04/23(金) 17:42:54ID:???■ このスレッドは過去ログ倉庫に格納されています