【PHP】フレームワーク CakePHP 11ホール目【v1.3】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/02/16(水) 21:52:35ID:zCTGjUMqCakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0151nobodyさん
2011/02/23(水) 18:09:23.62ID:???こうするのも
{$test}
こうするのも一緒なんだけど、
後者の方がデザイナーとかには分かりやすいんじゃない?
0152nobodyさん
2011/02/23(水) 18:18:28.09ID:???囲い文字がどっちでも一緒だと思うけどね。
まぁ確かに<?php echoはちょっとめんどくさいけど。
でもSmartyはオワコン感が強いな俺の中で。
0153nobodyさん
2011/02/23(水) 21:46:12.22ID:???Smarty使わないって仕事でCakePHPを使ってない人ですよね?www
0154nobodyさん
2011/02/23(水) 22:15:58.50ID:???0155nobodyさん
2011/02/23(水) 23:02:33.16ID:???PHP自体が所謂テンプレート言語の類なのに、
その上にテンプレートエンジン構築してどうする
0156nobodyさん
2011/02/23(水) 23:19:25.45ID:???というのも繰り返し言われてきた
俺もテンプレートエンジン不要派だけど、必要だという人がいるのなら使うのもしょうがないんじゃないかなー
0157nobodyさん
2011/02/24(木) 13:43:09.42ID:???あとデザイナにPHPのコード壊されたりもしたから、基本いじらせたくないな。
0158nobodyさん
2011/02/24(木) 14:52:21.15ID:???今日日サーバーサイドに何らかのプログラムが絡む案件なんて珍しくないし、
phpに理解が無くても、HTML構造の特定のまとまりを崩さなければ、
phpコードを崩す事なんてそうそうないわけで。
それを崩しちゃう人って、
もうHTMLレベルで平気で閉じの無いタグを量産する可能性があるって事だろ。
webデザイナーとしてそれってどうなの?
0159nobodyさん
2011/02/24(木) 15:24:05.68ID:???cakeの場合はcakeの動きを知らなきゃviewを作るのは難しいと思うよ。
0160nobodyさん
2011/02/24(木) 17:03:24.16ID:???function verify($urlparam = null) {
$data = $this->Regurl->findAllByRandomUrl($urlparam);
if (!$data) {
$this->flash('Invalid URL!!','index');
}else{
if ($data[0]['User']['activated'] == 0) {
//print_r($this->data);
$this->User->id = $data[0]['Regurl']['user_id'];
$this->User->saveField('activated', 1);
$this->flash('Now activated!!','index');
}elseif($data[0]['User']['activated'] == 1){
$this->flash('Already activated!!','index');
}
}
}
コントローラUserから、外部モデルRegurlの中のrandom_urlフィールドと照合して、
一致するものがあればアソシエーション先のUserテーブルのactivatedフィールド(フラグ)を
1へ書きかえる処理です。
UserモデルではRegurlのuser_idに対しhasOneで、RegurlモデルではUserのidに対してbelongsToで
アソシエーションを設定してあります。
0161nobodyさん
2011/02/24(木) 18:06:12.76ID:???まあこの程度ならどっちでもいいって言えばどっちでもいいけど、
randomurlのチェックやらsaveFieldなんかの処理は
モデルに書くとすっきりすると思うのねん。
コントローラーは
if($this->User->checkRandomUrl()){
$this->User->activate();
$this->Session->setFlash('どったらこったら', true));
}else{
....
}
こんな感じで何やってるかわかりやすくなるっしょ。
0162nobodyさん
2011/02/24(木) 18:18:50.60ID:???0164nobodyさん
2011/02/24(木) 18:35:27.29ID:???ありがとうございます。
コントローラ内でするとしたら
どういう書き方がスマートになりますでしょうか?
0166nobodyさん
2011/02/24(木) 22:04:42.87ID:???1.3で、bootstrap.php内に
App::import('Vendor', 'ecw/Lib3gkCarrier');
$carrier = Lib3gkCarrier::get_instance();
if($carrier->is_ktai()) {
App::build(array(
'views' => array(ROOT . DS . APP_DIR . DS . 'views' . DS . 'm' . DS)
));
}
って記載したのですが、振り分け出来ないです。
他にすることってあるんですか?
0167nobodyさん
2011/02/24(木) 22:42:35.95ID:???モデルにコーディングするしたら、どのように書けばスマートかを、コントローラへの記述とのセットで見せていただければ幸いです。
初心者ながらに試行錯誤して最終的に出来たの結果が、あのコードでした。
経験豊富の方のコーディングの仕方を見てみたいです。
0168nobodyさん
2011/02/25(金) 03:38:33.94ID:???経験豊富じゃないけど、
ロジックはモデルに書けるならモデルに書くべきってだけなんだよね。
そのままモデルに持っていけば良いと思うんだ。
以下つっこみどころ豊富なコード。動かして無いから間違いはたぶんある。
UserModel extends AppModel{
function activate($url){
$data = $this->Regurl->findByRandomUrl($url);
if(empty($data))
return false;
if($data['User']['activated'])
return 'already';
$this->id = $data['User']['id'];
$this->saveField('activated', 1);
return 'activated';
}
}
SomeController extends AppController{
function index(){
if(!$result = $this->User->activate($this->data['url'])) {
$this->Session->setFlash('Invalid URL!!','index');
return;
if($result === 'activated'){
$this->Session->setFlash('Now activated!!','index');
return;
}
if($result === 'already'){
$this->Session->setFlash('Already activated!!','index');
}
}
}
0169nobodyさん
2011/02/25(金) 10:26:28.95ID:???---MODEL-------------------------------------------------------
Class RegurlModel extends AppModel{
var $name = 'Regurl';
function activate($url){
$data = $this->Regurl->findByRandomUrl($url);
if(empty($data)){
return false;
}
if($data['User']['activated']==1){
return 'already';
}else {
$this->id = $data['User']['id'];
$this->saveField('activated', 1);
return 'activated';
}
}
}
---CONTROLLER------------------------------------------------
Class UsersController extends AppController{
function index($this->data['url'] == null){
if(!$result = $this->User->activate($this->data['url'])) {
$this->Session->setFlash('Invalid URL!!','index');
}
elseif($result === 'activated'){
$this->Session->setFlash('Now activated!!','index');
}
else($result === 'already'){
$this->Session->setFlash('Already activated!!','index');
}
$this->Session->setFlash('Invalid URL!!','index');
}
0170nobodyさん
2011/02/25(金) 14:11:48.82ID:???これが気になったんだけど、何でこんな事してるの?
0171nobodyさん
2011/02/25(金) 14:30:13.42ID:???0172nobodyさん
2011/02/25(金) 14:47:53.68ID:???未入力がどうこう言う場合はValidationかけましょうや。
0173nobodyさん
2011/02/25(金) 14:57:37.07ID:???ああ、モデルに移したやつには余計だったね。
このコードが何のコードか、いまいちよく分かってなかったから、
そのまま書いちゃったよ
0174nobodyさん
2011/02/25(金) 15:21:25.48ID:???あれ?と思ったら>>168ではちゃんと消してるじゃないか。
>>169
コントローラーのアクションの引数を使って、パラメーターを受け取る方法もあるけど、
あんまり使わないんじゃないかな。
function index($this->data['url'] == null){
というか、これは動くの?メソッドの引数に$thisが入ってるなんて初めてみるんだけど。
なんかめんどくさくなってきたから、もうコントローラに書いたら良いんじゃないか?
何の実装かがわからないと、スマートになんてかけない気がしてきた。
beforeValidate()やbefore/afterSave()とか使ったほうがスマートになりそうな雰囲気あるけど、
詳細わからんとねぇ。
とりあえず引数に書くよりif(!empty($this->data['url']))しといたほうが良いんじゃないか。
0175nobodyさん
2011/02/25(金) 15:42:56.64ID:???function index(){
$url = isset($this->data['url']) ? $this->data['url'] : null;
にすればいいじゃないか。
0176nobodyさん
2011/02/25(金) 15:45:11.29ID:4/qlOsDP0177nobodyさん
2011/02/25(金) 16:24:48.62ID:4/qlOsDP0178nobodyさん
2011/02/25(金) 16:33:34.12ID:???0179nobodyさん
2011/02/25(金) 16:46:01.81ID:???そんなの、予算がなければNoだろ。
GAEは最初はもなにも、かなり依存するつもりじゃないとつかえねぇよ。
使ったら最後、追加予算無ければAmazon EC2への移行も出来ない。
0180nobodyさん
2011/02/25(金) 17:35:37.03ID:???0181nobodyさん
2011/02/26(土) 16:25:16.00ID:???それ定数にしろよwwwって場合が多いよ
0182nobodyさん
2011/02/26(土) 17:15:32.84ID:QnS5kZ07Cakeと比べてどうよ?
0183nobodyさん
2011/02/26(土) 17:45:41.68ID:???model の__cunstruct で ClassRegistry に登録されてるから
その情報を元に関数で一気にbeginとcommitをしてるんだけど、、いいのかな?
0184nobodyさん
2011/02/26(土) 22:12:17.89ID:???0185nobodyさん
2011/02/26(土) 22:57:00.84ID:???嘘ついてんなよw
0186nobodyさん
2011/02/27(日) 00:25:16.65ID:???0187nobodyさん
2011/02/27(日) 14:26:52.35ID:???0188nobodyさん
2011/02/27(日) 15:12:11.70ID:n/cFKC+5タグとか
0190nobodyさん
2011/02/27(日) 15:55:26.24ID:???ユーザーが投稿した何かにつけるタグとか、
ユーザーがグループに所属するとか、
そういうのだろ。
0191nobodyさん
2011/02/27(日) 16:01:26.01ID:???ユーザーがグループに所属するは
分かりやすい
ユーザーテーブルから
中間テーブルをまたいで
向こうの所属しているグループのレコードを絞り込んでグループ名一覧とかを表示するとき
とかに使うってこと?
0192nobodyさん
2011/02/27(日) 17:31:22.17ID:???実は単に1ユーザーが所属できるのが1グループだったら、HABTMじゃなくても良い。
1ユーザーが複数のグループに所属できるようにする場合、HABTMになる。
絞込みをしたいからHABTMというのはちょっと変で、hasManyだって絞込みする。
HABTMはhasAndBelongsToManyと書くとおり、多対多の関係を作るためにある。
確か、第4正規形だったかな?
0193nobodyさん
2011/02/27(日) 17:35:40.03ID:???例えば下記の3つのテーブルがあったとして
users
user_groups
groups
usersのコントローラで特定のユーザーが
所属している全てのグループを表示する
時とかにHABTMは使うんじゃないの?
0194nobodyさん
2011/02/27(日) 17:46:10.12ID:???その構成を扱うなら基本HABTMだろ。
多対多だからな。
まぁ細かい事を言えば、そのテーブル構成でも複雑な事をしようとすると、
HABTMじゃ力不足な場面はあるが。
0196nobodyさん
2011/02/27(日) 18:28:28.88ID:???インターフェースやデザインの部分だけにしか携わらないパートナーがいる。
(コーディング関係一切しない)
そのパートナーとの取り分は
何対何くらいが妥当?
こっちはアルゴリズムから詳細設計まで全て受け持ってるんだが
0197nobodyさん
2011/02/27(日) 18:29:56.01ID:???0198nobodyさん
2011/02/27(日) 18:31:26.94ID:???連動するところとか論理的思考とか
必要ないしw
0199nobodyさん
2011/02/27(日) 19:29:47.30ID:???さっきのテーブル構成で行くと、user_groupsテーブルにはこの3つのカラムしか、
実質作る事ができない。
id,
user_id
group_id
createdとかmodifiedを作っても、関係テーブルに限り
日時は書き込まれないし、書き込んだとしても消える事になる。
例えば、ユーザーAが既にaとb2つのグループに所属しているとして
3つ目のcに所属するための処理をすると、
一旦ユーザーAの関係テーブル上からユーザーAがaとbに所属というデータを削除し、
改めてユーザーAがaとbとcに所属というデータを書き込む。
という動きをする。
なので複雑な事は例えば、関係テーブルに何か他のデータを合わせて置く。などだな
0200nobodyさん
2011/02/27(日) 19:32:45.15ID:???0201nobodyさん
2011/02/27(日) 19:35:45.60ID:???設計からプログラミング、デザインとhtmlコーディングを全部やることがあるけど、
気楽さでいえば、俺はデザインよりプログラミングの方が楽だな。
もちろん工数見積はプログラミング>デザインだけど。
ただ、その時のデザインは、無難に整って見れればおkってやつだけどね。
何つくろうってのかしらんけど、
web系って基本はDBに書いて取って調節して出力だし、
あんまアルゴリズムとかいらなくないか?
そんなむずかしい事をするわけでも無い気がする。
やることが全然違うし、単純に比較できるものじゃないと思うけどね。
0202nobodyさん
2011/02/27(日) 20:15:04.52ID:???「綺麗なデザインは?」「使いやすいデザインは?」「格好いいデザインは?」
これらに答えを出せますか?
しかし、「会員登録する機能を作る」「メールを送信する機能を作る」
これらに答えは出せますよね。
果たしてどちらが”気軽”なんでしょうかね。
0203nobodyさん
2011/02/27(日) 20:17:11.08ID:???0204nobodyさん
2011/02/27(日) 21:02:31.40ID:???お前バカだな
コーディング部分を担当だと
最終的に機能条件を100%満たせる。
けれどデザインったら、世界レベルから
html最近覚えましたレベルでも一応完成させることが出来る。
君は後者のヘナチョコデザイナーにも
100%機能要求を満たせたプログラマーと同じ対価を与える訳?
0205nobodyさん
2011/02/27(日) 21:48:04.01ID:???使えないの?
0206nobodyさん
2011/02/27(日) 22:07:01.59ID:???自分でもわかってるじゃん。デザインに答えがないって。
答えがないもの・判断が付かない物に対して比較するのがそもそもの間違い。
で、君みたいな凄腕プログラマーは当然パートナーにも
凄いデザイナーがいるわけだよね?ヘナチョコとなんてやらないよね。
だったら、凄いデザイナーさんの方がもっと貰うべきだよね。
0208nobodyさん
2011/02/27(日) 22:09:46.67ID:???>君は後者のヘナチョコデザイナーにも
>100%機能要求を満たせたプログラマーと同じ対価を与える訳?
僕はヘナチョコデザイナーを雇わないからね。
僕より出来るデザイナーに僕より多くの金額を与えるよね。当然だろ?
0209nobodyさん
2011/02/27(日) 22:11:05.21ID:???良い素材でも美味しくないと誰も食べてくれないし、
いくら料理の腕があっても素材が悪いと美味しくないよね。
それぐらい僕も分かってるけど、君も当然分かるよね?w
0213nobodyさん
2011/02/27(日) 23:53:36.80ID:???ん?俺はそこでいうuser_groupsにいろいろ情報持たせてるよ。
消すか消さないかは書き込む時に指定できるし。
0214nobodyさん
2011/02/27(日) 23:57:16.61ID:???どっちがどっちにも踏み込めない物しか出来上がってこない。まさに日本のIT物作りw
0215nobodyさん
2011/02/28(月) 00:13:32.34ID:???埋め込み型の変なJavaScript(当然全部グローバル空間)とかは多いなw
その辺イケてるデザイナ・コーダに知り合いが少ないのが自分の問題だが
中途半端にそっちの方も審美眼というか基準を持ってしまうと、ストレス溜まる
0216nobodyさん
2011/02/28(月) 00:38:48.14ID:???自分が出来ない事を他人が出来て、それに対する対価が半分。
これって普通の考えだと思うけど、どうして196はファビョってるの?
0217nobodyさん
2011/02/28(月) 00:43:03.85ID:???196が例えば5対5が妥当と考えるなら、5以上を要求してきたら断ればいい。
何を悩んでいるのやら。
0218nobodyさん
2011/02/28(月) 01:07:13.20ID:???指定っていうとどういう方法で?
CakePHPのアソシエーションとしてのHABTMを、
UserモデルとGroupモデルにちゃんと設定した上で、
save()すると消えると思うけど。
0219nobodyさん
2011/02/28(月) 01:10:50.38ID:???案件受注してデザインを外注に出す時、
どう考えても半分なんて出さないけどな。
実際、デザインにそんだけの仕事量は無いし。
0220nobodyさん
2011/02/28(月) 02:48:20.38ID:???0222nobodyさん
2011/02/28(月) 02:58:15.97ID:???0225nobodyさん
2011/02/28(月) 09:45:52.73ID:???0226nobodyさん
2011/02/28(月) 11:35:46.82ID:???>>224
プログラマならデザインが出来るとか、その逆だとかじゃないと思う。
プログラマは基本的にデザインは出来ないものだし、
デザイナはプログラムは書けないものだろ。
Wordpressのテンプレート関数をちょっといじってphp書けますなんてのは、
プログラミングのうちに入らないんだ。
でも、プログラマがちょっと頑張ったデザインだって、
デザイナから見れば及第点以下だと思うぞ。
両方出来る人も少しはいるけど、それはプログラマでありデザイナなんだよ。
0227nobodyさん
2011/02/28(月) 13:23:40.85ID:???0228nobodyさん
2011/02/28(月) 15:02:46.16ID:???0229nobodyさん
2011/02/28(月) 15:06:20.94ID:???0230nobodyさん
2011/02/28(月) 15:53:25.77ID:???0231nobodyさん
2011/02/28(月) 15:58:33.37ID:???0232nobodyさん
2011/02/28(月) 16:10:22.45ID:???デザイナーにレイアウトや配色教えている俺は何なんだ・・・
どっちも出来る奴って珍しくないと思うけどな。
逆に出来ないとSOHOや個人事業として成り立たないでしょ。
0233nobodyさん
2011/02/28(月) 16:43:04.55ID:???> デザイナーにレイアウトや配色教えている俺は何なんだ・・・
ヒント:最後の行
プログラマやデザイナがみんなSOHOや個人事業でやってるわけじゃないと思うぞ。
俺の観測範囲で言えば、
デザインが出来ないフリーランスのプログラマや、
その逆のデザイナが多いな。
俺はデザイナからプログラミングやコーディングの仕事をもらい、
逆にデザイナーにデザインを依頼してる。
同じようなフリーランスのプログラマも、
やっぱり一緒になってやってるデザイナーとかいるよ。
0236nobodyさん
2011/03/01(火) 00:47:15.67ID:???色々と誤解があってこのスレでも散々煽り倒してきたりもしたけど
これからは使わせていただきます。
0237nobodyさん
2011/03/01(火) 11:51:22.63ID:???1人で出来る奴なら、デザイン費+プログラム費込みで見積出せるが、
デザイナー、プログラマーと分かれてるなら、それぞれが希望する金額になって、
1人でやっている人と比べて見積が高くならないか?ってこと。
会社の場合も外注に出すと高くなるだろ?
でも、当然客は「2人分の費用」として考えていないわけで、
高くなる分、損だと感じると思うんだが。
0239nobodyさん
2011/03/01(火) 13:38:59.93ID:???まぁそういう面はあるかもしれんけど、俺はデザインは出来ないわけでな。
仮に頑張ってやったとしても、
時間もかかるし頼んじゃったほうが早いし良いのが出来るんだよね。
無理してデザインやるよりも、CakePHPが得意とする中規模のアプリで、
作れる幅を広げたり、スピード上げたりしたほうが利益になると思ってる。
まぁhtmlだけ頼まれた時なんかは、
もったいないなぁとは思ってるけどね。
客側のデザイナーがコーディングまで出来れば、
もっとコスト圧縮できたろうにね。
0240nobodyさん
2011/03/01(火) 14:15:04.46ID:???なぜか外注のデザって結構な金とらね?
別にシステム開発の方が技術は上だとは言わないが、
少しの修正(色やサイズの違い)で、修正費取ろうとする奴がいるぞ。
俺の経験では1人や2人じゃなく、ほぼ全てのデザイナーに共通した。
0241nobodyさん
2011/03/01(火) 14:19:01.29ID:???0242nobodyさん
2011/03/01(火) 14:43:30.29ID:???俺はそんな取られたりはしてないと思ってるけど。
案件が終わってからのは流石に費用かかるけど、
検収前でちょっとした修正はかからないだろう。
小さい修正なら、場合によっては自分でやっちゃうし。
大きな修正の場合は・・・って、大きな修正が出たことがほとんどないな。
デザイナーとやる際の悩みとしては、
htmlコーディングが出来る人でもCakePHPのビューファイルに抵抗感があることかな。
phpタグくらいは別に良いんだけどelementやヘルパーがなぁ。
説明すると向こうが自信なさ下だから、
こっちがそこ頼むのに抵抗感を感じてしまう。
0243nobodyさん
2011/03/01(火) 14:52:26.77ID:???小さい修正でも自分でやっちゃう事が、コスト負担になってるからなぁ。
あと、デザイナーにビューファイル触らせるのは絶対駄目だと思う。
htmlファイル貰ってそれからPGがctpのテンプレに移していく形が一番だよ。
Dreamweaverのデザインビューじゃないとわからないって人多いし。
0244nobodyさん
2011/03/01(火) 19:24:50.42ID:???0245デフォルトの名無しさん
2011/03/01(火) 19:42:50.80ID:???0246nobodyさん
2011/03/01(火) 20:07:06.21ID:???0247nobodyさん
2011/03/01(火) 22:21:38.57ID:MzfiBR71メジャーバージョンアップともあってやっぱり1.3とだいぶ変わりますか?
今開発中のものがあって、1.3で作っているのですが
まだ初期段階なので、2.0に変えることも考えています。
それほど変わらないようであればこのまま1.3で進めようと思っているのですが、、、
0248デフォルトの名無しさん
2011/03/01(火) 22:34:47.47ID:???ばかでもつかえるw
PHPがたくさん使われてるとかいっても、Perlユーザーの方が頭いい
むしろざまあみろ(‐^▽^‐)
お前らの負けだよw完全に私の勝ち
二度と話かけんな カス野郎 じゃあなああ〜
0249nobodyさん
2011/03/01(火) 22:49:13.06ID:???これでもみてみたら?
http://www.ustream.tv/recorded/12074210
1.3の延長で2.0をどっかのタイミングで出してから、機能追加という形じゃなく、
1.3から色々と機能加えたり変えたりして2.0出すみたいだよ。
互換性に関してはなるべく努力する方針みたいだけど。
0250nobodyさん
2011/03/01(火) 22:54:29.15ID:???やっとマトモなかんじになってきたな。
あとはBakaryが整理されてCPAN並になれば。。
0251nobodyさん
2011/03/01(火) 22:58:13.05ID:???Perlの様に終わっていく言語だと思う。
緩やかに終わっていくから、その間に稼ぎつつ、
別言語を覚えておいたほうが良いと思うよ。
■ このスレッドは過去ログ倉庫に格納されています