■ このスレッドは過去ログ倉庫に格納されています
【PHP】フレームワーク CakePHP 17ホール目【v2.4】
- 1 :nobodyさん:2014/03/01(土) 17:03:24.57 ID:8AJ9GD6E.net
- CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
Issue
http://cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja
※前スレ
http://kohada.2ch.net/test/read.cgi/php/1378659370/
- 2 :nobodyさん:2014/03/01(土) 17:22:09.46 ID:???.net
- >>1
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://toro.2ch.net/test/read.cgi/tech/1393660194/
- 3 :nobodyさん:2014/03/02(日) 02:24:24.71 ID:QhD3xIFD.net
- 鯖がかわたったら大文字/小文字を識別するようになってエラー吐きまくり、だれか助けて
- 4 :nobodyさん:2014/03/02(日) 08:29:45.89 ID:???.net
- 全部リネーム(投げやり)
- 5 :nobodyさん:2014/03/02(日) 09:04:59.82 ID:???.net
- >>3
直せ
- 6 :nobodyさん:2014/03/02(日) 13:37:20.90 ID:???.net
- CakePHPの統合開発環境って何ですか?
Eclipseですか?Vimですか?
- 7 :nobodyさん:2014/03/02(日) 15:36:38.69 ID:???.net
- NetBeans
- 8 :nobodyさん:2014/03/02(日) 16:00:53.07 ID:???.net
- おつかれさまんこ!
- 9 :nobodyさん:2014/03/02(日) 22:24:22.81 ID:YQtz6+zn.net
- PHPStorm
じゃないの?
- 10 :nobodyさん:2014/03/03(月) 08:24:44.02 ID:???.net
- 期待ほど補完してくれない
- 11 :nobodyさん:2014/03/03(月) 11:56:50.46 ID:???.net
- PHPStormはほぼ補完してくれる
- 12 :nobodyさん:2014/03/03(月) 16:36:59.02 ID:???.net
- http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2013/12/chart1-1024x853.png
海外と日本では世界が違うんだな
まだまだ日本ではCakeの利用率がかなりを占めるのにな
- 13 :nobodyさん:2014/03/03(月) 17:21:42.40 ID:???.net
- Laravel? 初耳
- 14 :nobodyさん:2014/03/03(月) 18:01:53.20 ID:???.net
- 正直、やりたいことが手堅くできるならfwなんて何でもいい。
- 15 :nobodyさん:2014/03/03(月) 18:04:37.86 ID:???.net
- >>12
作ったら終わりが多い日本だとな
cakeが流行るんだよ
laravel、phalconに比べて
一から作るときの生産性はまだまだcakeが上
- 16 :nobodyさん:2014/03/03(月) 18:10:17.48 ID:???.net
- その通り、移行なんてする気ない
PHP5.2から5.4にするだけでかなり腰重かった
- 17 :nobodyさん:2014/03/03(月) 18:17:33.98 ID:fO6d1b91.net
- Java使いなのですがEclipseじゃダメですか?
PHPStormの方が優れている点を教えてください。
- 18 :nobodyさん:2014/03/03(月) 21:08:20.37 ID:???.net
- >>17
俺、両方使ったけどどっちもどっちだわ。
ただ、イクリプスのがもっさりしてるからだめだわ。
- 19 :nobodyさん:2014/03/03(月) 22:20:41.05 ID:???.net
- >>17
EclipseでJavaの開発してたものだけど
PHPの開発においてはPHPStorm一択だね
補完が優秀、最新バージョンへの追従が早い、Intentionsが優秀
要はPHP専門部分が強いのよね
WebStormを内包してるのもGood
難点は、有料、英語
EclipseがPHPでの開発において勝ってる点って
難点の2個しかないんじゃないかな
- 20 :nobodyさん:2014/03/04(火) 00:08:55.15 ID:???.net
- netbeansもよろ
- 21 :nobodyさん:2014/03/04(火) 00:17:04.37 ID:???.net
- eclipse
php storm
dreamweaver
net beans
全て使った上で俺はdreamweaver。
デザインも両方やると、やっぱりDWが一番だわ。
- 22 :nobodyさん:2014/03/04(火) 00:53:16.41 ID:???.net
- DeamWeaver で CakePHP を開発してるってこと?
- 23 :nobodyさん:2014/03/04(火) 05:53:13.25 ID:???.net
- デザイナーってのがよくわからないんだけど、
デザイナーってjQueryとか使う?
Photoshop使って画像を作るだけ?
画像の動きまでプログラミングするの?
- 24 :nobodyさん:2014/03/04(火) 07:01:44.55 ID:???.net
- sass、less使わないのか
- 25 :nobodyさん:2014/03/04(火) 07:06:42.25 ID:???.net
- Sublime Text!
あっ、エディタはお呼びじゃないっすか…
- 26 :nobodyさん:2014/03/04(火) 13:52:11.38 ID:???.net
- >>22
そうだよ。
プラグインも自分で開発してるからMVCの移動も楽だし。
- 27 :nobodyさん:2014/03/04(火) 15:42:27.40 ID:???.net
- 慣れてるのが一番や
- 28 :nobodyさん:2014/03/04(火) 18:48:55.56 ID:???.net
- デザイナーって画像作ってるだけじゃないの?
- 29 :nobodyさん:2014/03/04(火) 19:34:01.40 ID:???.net
- 最近のWebデザイナーはWordpressとかJavaScriptとかでプログラミング当たり前になりつつある
- 30 :nobodyさん:2014/03/04(火) 20:53:55.54 ID:???.net
- >>29
昔に比べて、画像のデザインの需要はなくなったよね。
ほぼCSSで賄える。
- 31 :nobodyさん:2014/03/04(火) 21:10:49.21 ID:???.net
- 楽しいPHPerの仲間がぽぽぽ〜ん
- 32 :nobodyさん:2014/03/04(火) 22:10:44.66 ID:???.net
- >>30
しかもSCSSとかCompassとか出てきて無縁ではいられないな
- 33 :nobodyさん:2014/03/05(水) 02:59:19.79 ID:???.net
- DWで開発とか猛者すぎる
- 34 :nobodyさん:2014/03/05(水) 08:05:21.32 ID:???.net
- >>33
デザインとcakephpやる人は、
アプリ切り替えるんかな?
- 35 :nobodyさん:2014/03/05(水) 08:22:44.09 ID:???.net
- DWとか補完ねーだろ、知らずに言ってるけど
- 36 :nobodyさん:2014/03/05(水) 11:36:59.89 ID:???.net
- うちのデザイナ兼コーダーはPHPStormとFireworks使ってるな
DW使う余地はないらしい
- 37 :nobodyさん:2014/03/05(水) 15:32:41.15 ID:???.net
- >>35
補完ないけど、手打ちした方が早いと個人的に思ってる。
俺は f, を押すとfunction
ts を押すと$this-setが出るようにしてる。
- 38 :nobodyさん:2014/03/05(水) 15:39:28.53 ID:???.net
- みんなWindowsで開発して
レンタルサーバーはLinuxなの?
それともレンタルサーバーもWindows?
- 39 :nobodyさん:2014/03/05(水) 16:03:27.33 ID:???.net
- >>38
前者です
- 40 :nobodyさん:2014/03/05(水) 20:48:51.34 ID:???.net
- IDEの補完の恩恵って速さもあるけどミスが減ることだと思う
- 41 :nobodyさん:2014/03/05(水) 21:20:36.95 ID:???.net
- 純粋にWindowsで開発するの?
Linux on VMとかそういのじゃないよ。
- 42 :nobodyさん:2014/03/05(水) 21:22:19.75 ID:???.net
- ここでMacの人が通りますよ…
もともとDTPだけだったんですがね、どうしてこうなった
- 43 :nobodyさん:2014/03/05(水) 23:39:42.38 ID:???.net
- 手打ちが速いとかいうやつとは一緒に仕事したくねぇな
自分だけ石器時代にいること気がつかないのか
- 44 :nobodyさん:2014/03/06(木) 01:34:18.88 ID:???.net
- Windowsで開発なんて苦行はもうやりたくねぇ。
ただ、最近Macたけーんだよなぁ。
- 45 :nobodyさん:2014/03/06(木) 01:39:01.70 ID:???.net
- AdobeがLinuxに対応してくれさえすれば
- 46 :nobodyさん:2014/03/06(木) 01:41:18.94 ID:???.net
- >>43
ボロボロ打ち間違えてコンパイラとか何やらに怒られまくる人いるよね
- 47 :nobodyさん:2014/03/06(木) 16:30:29.55 ID:???.net
- コンパイラに怒られまくっているうちはいいよ。
- 48 :nobodyさん:2014/03/06(木) 16:38:25.92 ID:???.net
- Vimで開発してる人いる?
- 49 :nobodyさん:2014/03/06(木) 17:39:00.27 ID:???.net
- >>48
してる。けど時々嫌になる。
Ctrl+p があるから同じファイル内にある文字列なら補完してくれる。
- 50 :nobodyさん:2014/03/07(金) 04:26:25.69 ID:???.net
- vimでやっとるよ
- 51 :nobodyさん:2014/03/07(金) 23:51:55.49 ID:???.net
- xamppで開発してるの俺だけか・・・
- 52 :nobodyさん:2014/03/08(土) 01:16:47.70 ID:???.net
- (´・ω・`)ノシ
- 53 :nobodyさん:2014/03/08(土) 01:32:28.55 ID:???.net
- >>51
えっ
- 54 :nobodyさん:2014/03/08(土) 02:06:28.48 ID:???.net
- AMPは全員じゃないの
- 55 :nobodyさん:2014/03/08(土) 10:10:54.63 ID:???.net
- xampp&Dreamweaverで開発してるの俺だけか・・・
- 56 :nobodyさん:2014/03/08(土) 13:25:58.29 ID:???.net
- >>55
せやな
- 57 :nobodyさん:2014/03/08(土) 19:26:45.91 ID:???.net
- >>55
せやせや
- 58 :nobodyさん:2014/03/08(土) 21:12:37.20 ID:???.net
- そいやそいやー!!
- 59 :nobodyさん:2014/03/09(日) 09:34:45.06 ID:???.net
- >>51
ProductionもWindowsならいいとおもうけどね。
- 60 :nobodyさん:2014/03/10(月) 01:08:03.93 ID:???.net
- 最近nginx postgresqlの案件が多い
時代も変わったな
- 61 :nobodyさん:2014/03/10(月) 01:14:07.27 ID:???.net
- 一時 node.js x nginx の案件が続けてあったけど今はぱったりなくなった。
うちの開発力を考えてみたら、理由は何となく分かる。
- 62 :nobodyさん:2014/03/10(月) 02:26:08.77 ID:???.net
- >>61
残念なんだな
- 63 :nobodyさん:2014/03/10(月) 03:08:31.82 ID:???.net
- しかしとうとうApache一強とも言っていられないのか
- 64 :nobodyさん:2014/03/10(月) 04:27:16.33 ID:???.net
- >>60
nginxはわかるけど、なんでいまPostgres?
なんかPostgres盛り上がる要因とかあったっけ?
- 65 :nobodyさん:2014/03/10(月) 21:21:56.51 ID:???.net
- id、date、text、deleteというテーブルAと、
id、date、text、text2、deleteというテーブルBの2つから
deleteの値がbのものだけdateの値のascソートで
id、date、textをfindしたいんですが、どう書いたらいいですか?
- 66 :nobodyさん:2014/03/10(月) 22:08:49.44 ID:???.net
- >>64
MySQLはOracleがしっちゃかめっちゃかにしてるから相対的に人気になってるんじゃね?
- 67 :nobodyさん:2014/03/11(火) 00:15:01.95 ID:???.net
- >>65
SQLクエリをどう書くか考えて、それをfind conditionに落とし込む
頑張ってねー
- 68 :nobodyさん:2014/03/11(火) 08:26:50.13 ID:???.net
- >>64
サーバー管理部門にpostgresを指定されたからって客が多い
互換性やライセンスで将来性に問題があるって言われることが多いよ
- 69 :nobodyさん:2014/03/11(火) 08:34:20.29 ID:???.net
- 何も考えず.net採用して高いライセンス料払うシス管よりだいぶ優秀だな
- 70 :nobodyさん:2014/03/11(火) 08:50:55.26 ID:???.net
- クラウドではmysqlのほうが限界ありそうだもんな
- 71 :nobodyさん:2014/03/11(火) 11:13:18.89 ID:???.net
- え、分散処理はMySQLのほうが上じゃないの?
- 72 :nobodyさん:2014/03/11(火) 11:20:27.56 ID:???.net
- >>66
MariaDBもあるのにねぇ
>>68
将来性に問題があるのは、MySQLが?
ずっとPostgres押しな鯖管なのか、最近何か理由があってPostgresに乗り換えた鯖管なのか・・・
やっぱオラクルのせいかね。
海外製のフレームワーク使うときは、単純に利用実績が少ないだろうから、
PostgresとのI./F周りでバグが残ってそうでやなんだけどなぁ。
- 73 :nobodyさん:2014/03/11(火) 11:54:25.66 ID:???.net
- phpとの親和性が高いから人気だと思う>MySQL
Postgresはインストールから複雑だからね
- 74 :nobodyさん:2014/03/11(火) 12:06:44.94 ID:???.net
- >>73
インストールのどの辺りが複雑です?
手前でビルドするなりパッケージ管理使うなり
どちらもMySQLと差がないように見えるけど
- 75 :nobodyさん:2014/03/11(火) 12:38:57.23 ID:???.net
- yumで管理して、バージョンも上げていくとなると
PostgreSQLのほうが断然楽ですよ
- 76 :nobodyさん:2014/03/11(火) 13:39:09.07 ID:???.net
- ポスグレはWindowsに対しては入れにくい。
- 77 :nobodyさん:2014/03/11(火) 18:31:47.62 ID:???.net
- >>74
「どの辺が」って言われたら答えづらいけど、俺には難しく感じたな。
phpMyAdmin的ツールもない(俺が知らない)し。
- 78 :nobodyさん:2014/03/11(火) 20:38:18.52 ID:???.net
- 日本はまだまだMySQL
- 79 :nobodyさん:2014/03/11(火) 21:13:40.85 ID:???.net
- >>77
ウィザード方式のインストーラーがあっても難しいですか?
> phpMyAdmin的ツールもない(俺が知らない)し。
そのまんまphpPgAdminがあります
- 80 :nobodyさん:2014/03/11(火) 21:20:51.46 ID:???.net
- PHPはまだまだMySQL
- 81 :nobodyさん:2014/03/11(火) 22:01:55.52 ID:???.net
- >>79
>そのまんまphpPgAdminがあります
へぇ、いいこと聞いた
いや使わんけど…
- 82 :nobodyさん:2014/03/11(火) 22:59:07.61 ID:???.net
- >>79
むしろ、ウィザード方式が難しいのかもしれないw
- 83 :nobodyさん:2014/03/11(火) 23:18:26.22 ID:???.net
- Windowsだとな
- 84 :nobodyさん:2014/03/12(水) 00:09:30.13 ID:???.net
- SQLite使ってる奴は居ないの?
- 85 :nobodyさん:2014/03/12(水) 00:35:14.55 ID:???.net
- Android開発者が使ってるよ
- 86 :nobodyさん:2014/03/12(水) 01:21:31.02 ID:JpmxxtI4.net
- SQLiteは無くならないだろ
- 87 :nobodyさん:2014/03/12(水) 05:13:57.33 ID:???.net
- >>85
iCloudとの相性もいい
- 88 :「ガスライティング 集団ストーカー カルト」で検索を!:2014/03/12(水) 10:17:56.59 ID:lU6KEgTK.net
- ★マインドコントロールの手法★
・沢山の人が偏った意見を一貫して支持する
偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法
・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法
↑マスコミや、カルトのネット工作員がやっていること
TVなどが、偏った思想や考え方に染まっているフリや常識が通じないフリをする人間をよく出演させるのは、
カルトよりキチガイに見える人たちを作ることで批判の矛先をカルトから逸らすことが目的。
リアルでもネットでも、偽装左翼は自分たちの主張に理がないことをわかっているのでまともに議論をしようとしないのが特徴。
,,
- 89 :nobodyさん:2014/03/12(水) 16:45:29.66 ID:???.net
- >>67
> SQLクエリをどう書くか考えて、それをfind conditionに落とし込む
どう書くか考えてわからなかったんです
説明難しい質問だったらすみませんでした
- 90 :nobodyさん:2014/03/12(水) 18:07:22.48 ID:???.net
- 俺もお前の質問の意味が分からん
自分でもわからないのに、他人がわかると思うか?
- 91 :nobodyさん:2014/03/12(水) 18:09:07.22 ID:???.net
- >>90
この質問はわかるぞ。面倒だからスルーだが。
- 92 :nobodyさん:2014/03/12(水) 18:11:24.37 ID:???.net
- わかるなら答えてやれよw
- 93 :nobodyさん:2014/03/12(水) 18:27:18.86 ID:???.net
- UNION ALL使えば
- 94 :nobodyさん:2014/03/12(水) 18:55:29.33 ID:???.net
- >>89
ならばスレ違いだ
- 95 :nobodyさん:2014/03/14(金) 11:56:16.48 ID:???.net
- 画像のアップロード処理ってコントローラーでやってます?モデルですか?
今までコントローラーでやっていたのですが、モデルでやるような気がしてきました
- 96 :nobodyさん:2014/03/14(金) 12:48:14.25 ID:???.net
- >>95
悩むやつはだいたいモデルに置くべき
というか俺なら画像アップロードロジックだけまとめて別のクラスにして、モデルから委譲する
- 97 :nobodyさん:2014/03/14(金) 20:57:46.25 ID:???.net
- >>96
とりあえずモデルにまとめましたが、画像の処理って難しいですね。
・アップロードした場合
・アップロードしなかった場合
・アップロードして過去のファイルがある場合
・アップロードせず過去のファイルがある場合
などの条件判定が必要だったりして、モデルの構成に時間がかかりました。
beforeSaveとafterSaveを使ってなんとかまとめましたが、
ビヘイビアか何かでまとめた方がいいかもしれません。
- 98 :nobodyさん:2014/03/14(金) 21:38:04.58 ID:???.net
- ファイルアップロードのプラグインを使わない理由は?
- 99 :nobodyさん:2014/03/14(金) 21:55:08.48 ID:???.net
- >>98
自由度を追求したいので。
- 100 :nobodyさん:2014/03/14(金) 23:37:29.52 ID:???.net
- 自由度を追求するレベルのやつは
こんなところでしょーもない質問はしない
- 101 :nobodyさん:2014/03/15(土) 02:23:33.07 ID:???.net
- まぁええやんか
- 102 :nobodyさん:2014/03/15(土) 09:07:57.50 ID:???.net
- ええよ
- 103 :nobodyさん:2014/03/15(土) 11:18:24.50 ID:???.net
- >>99
It's Freedom.
- 104 :nobodyさん:2014/03/15(土) 22:57:03.97 ID:???.net
- >>65
誰も答えてないんで作ってみた
テーブルの結合条件は知らんので適当に解釈してね
$params['joins'][] = array(
'type' => 'INNER',
'alias' => 'B',
'table' => 'b',
'conditions' => array(
'B.date = A.date',
'B.text = A.text',
'B.delete = A.delete',
)
);
$params['conditions']['A.delete'] = 'b';
$params['fields'] = array('A.id', 'A.date', 'A.text');
$params['order'] = array('A.date asc');
$this->A->find('all', $params);
- 105 :nobodyさん:2014/03/18(火) 15:37:09.88 ID:???.net
- あるコントローラの特定のアクションのみ、URLを
http://example.com/download/dl.php
のように拡張子をphpにしたいです
ぐぐってもわからないのですが何かやり方はありますか?
- 106 :nobodyさん:2014/03/18(火) 20:05:49.26 ID:???.net
- リクエストハンドラとルーティングかな
リクエストハンドラ要らんかもしれん
- 107 :nobodyさん:2014/03/19(水) 19:49:36.31 ID:???.net
- fc2ブログのソースがcakephpみたいだ
実際は違うけど、開発した人は影響受けてそう
- 108 :nobodyさん:2014/03/19(水) 20:01:23.03 ID:???.net
- ああ、なんか盛り上がってたね
にしても、なんかもっさい感じだな
コメントが日本語ってのもあるけどソースも…
- 109 :nobodyさん:2014/03/19(水) 23:34:46.59 ID:???.net
- ただの普通のMVCやん
Cakeよりmicro系に近い
Cakeっぽさって何かある?
- 110 :nobodyさん:2014/03/20(木) 00:08:10.16 ID:???.net
- ファイル構成がCakeっぽく感じたな。
zendとかsymphonyとかEthnaとか、
OSSならWordPressとかECCUBEとかphpBBとか
有名所は独自の構成だけど、fc2ブログはCakeっぽかった。
だから、君の言う「普通のMVC」がこうなのかは知らんが。
- 111 :nobodyさん:2014/03/20(木) 00:42:22.76 ID:???.net
- WP, EC-CUBE, phpBB って、まじでグダグダだよな。
今さら手直し効かないレベル。
中の人もきっと諦めてるんだろう・・・
- 112 :nobodyさん:2014/03/20(木) 01:36:29.70 ID:???.net
- WPはウンコすぎてあんなのが世界中で普及したのは愚かだ
- 113 :nobodyさん:2014/03/20(木) 01:44:49.45 ID:???.net
- ECCUBEよりはましだよ
- 114 :nobodyさん:2014/03/20(木) 07:02:02.26 ID:???.net
- symfonyもzend frameworkもCakeもディレクトリ構成は変わらんぞ
sがつくつかない、大文字小文字、省略形とかの差ぐらい
- 115 :nobodyさん:2014/03/20(木) 07:30:03.64 ID:???.net
- どれもFWなんて似たようなものだな
fc2ブログのほうがcakephpより古いんだよね
- 116 :nobodyさん:2014/03/20(木) 07:51:32.20 ID:???.net
- controllerの__constructでほぼ全てのことを行っているところに古さを感じる
- 117 :nobodyさん:2014/03/20(木) 10:00:51.75 ID:???.net
- fc2ブログは意図的にコード減らしてるような気がするな
もちろん、オープンソースにするんだから当然なんだが
- 118 :nobodyさん:2014/03/20(木) 15:13:14.69 ID:???.net
- 今更、hasAndBelongsToManyの凄さを知った。
これ、めちゃくちゃ便利だな
- 119 :nobodyさん:2014/03/20(木) 16:04:17.30 ID:???.net
- 注意して使えよ
http://tech.a-listers.jp/2012/01/31/the-evil-unnecessary-has_and_belongs_to_many/
- 120 :nobodyさん:2014/03/20(木) 16:15:47.05 ID:???.net
- バッドプラクティス(笑
- 121 :nobodyさん:2014/03/20(木) 16:51:21.02 ID:???.net
- 知りすぎてはいけないんだよ
- 122 :nobodyさん:2014/03/20(木) 17:09:04.14 ID:???.net
- どっちにしろ多対多をするには、中間テーブルが必要だろ?
中間テーブル無しで管理する方法があるなら教えて欲しい
- 123 :nobodyさん:2014/03/20(木) 20:34:48.05 ID:???.net
- 中間テーブルがいけないなんて誰も言わない
- 124 :nobodyさん:2014/03/20(木) 21:24:40.70 ID:???.net
- habtmはやりすぎな感じが嫌われてるんだろうね
Railsでもhmtに移行してるし
- 125 :nobodyさん:2014/03/21(金) 00:20:48.70 ID:???.net
- countCacheとか便利過ぎる
- 126 :nobodyさん:2014/03/22(土) 17:59:24.57 ID:???.net
- cakephp2.4.6でフィールドが「id、name、age、comment」とあるとして
$this->User->save(array('id' => 1, 'name' => 'aaa'), false);
こんな感じで更新しようとしたのですが、
なぜかage・commentがnullになります。
saveの前にcreateしても一緒です。こういう現象になった方、いませんでしょうか?
ちなみにjQueryを使ってAjaxで実行しています。
- 127 :nobodyさん:2014/03/22(土) 18:41:02.58 ID:???.net
- プルダウンで日付セレクトするフォームで
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
...
<option value="31">31</option>
みたいのを生成してくれるヘルパーかプラグイン知りませんか?いちいち書くのめんどい
- 128 :nobodyさん:2014/03/22(土) 18:58:26.38 ID:???.net
- JSでどぞ
- 129 :nobodyさん:2014/03/22(土) 18:59:39.59 ID:???.net
- >>126
仕様でございます。
save()はPKがあればUPDATE、無ければINSERTだけど、
UPDATEの際渡されたデータに入れ替える。
ajaxじゃなく普通の更新フォームの場合、変更しなかったデータもPOSTされてくるから、
そういう問題になることが無いので、ajaxであれ?となるのはたまにあるな。
テクニックとして、save()の第三引数に、INSERT、UPDATEしたいフィールドを指定できる。
$this->User->save(array('id' => 1, 'name' => 'aaa'), false, array('name'));
こうすることでおそらく意図通りの動きをすると思うよ。
- 130 :nobodyさん:2014/03/22(土) 19:02:18.13 ID:???.net
- >>127
普通にFormHelperで出来るような気がするけど。
まぁ日付となると、FormHelperは英語向けすぎてちょっと使いにくいから、
別途Helper作ることはあるけどさ。
- 131 :nobodyさん:2014/03/22(土) 20:04:26.36 ID:???.net
- >>104
ありがとうございます
join使ってみます
- 132 :nobodyさん:2014/03/22(土) 20:12:45.97 ID:???.net
- paginationを使って取得したものを
$paginator->numbers(true);でリンクを生成しました
記事が三件、limitを1にすると、23のリンクが生成されて、配列は一個だけ
2を押すとfoo/index/page~2に飛ぶのに1のときと同じ配列が表示され、23のリンクが生成されています
(2ページ目に飛んでいない)
3を押しても同様です
心当たりはbelongtoで他のdbのデータも引っ張ってきていることくらいです
何か特殊なケースはあるんでしょうか?
ご存知のかたご教示ください
- 133 :132:2014/03/22(土) 20:40:23.27 ID:???.net
- すみません>>132です
conditionsの書き方に不備があっただけみたいです
- 134 :nobodyさん:2014/03/22(土) 21:18:12.91 ID:???.net
- よくある
- 135 :nobodyさん:2014/03/22(土) 21:33:09.93 ID:???.net
- >>129
おおおお、これははじめて知りました!勉強になります。
何時間も悩んでいたのですが、解決できそうです。
本当に助かりました。ありがとうございました!
- 136 :nobodyさん:2014/03/22(土) 22:53:51.01 ID:???.net
- $this->Page->find('first');
の場合、どんな名前でsetしますか?
allとかpaginateを使う場合だと「pages」としているのですが、
1件取得するだけなので、単数形(page)の方が良いのかな?と悩んでいます。
- 137 :nobodyさん:2014/03/22(土) 23:01:37.17 ID:???.net
- 俺も最初同じような考えでそうしてたけど、色々やってるうちに煩雑になって複数形で統一してる
- 138 :nobodyさん:2014/03/22(土) 23:36:58.97 ID:???.net
- 単数形にするべきだろ
- 139 :nobodyさん:2014/03/23(日) 00:28:11.20 ID:???.net
- ひとつなら単数形、複数なら複数形
単純明快だと思う
- 140 :nobodyさん:2014/03/23(日) 00:57:04.37 ID:???.net
- firstならpage
allならpages
listならpages
countならpage_count
- 141 :nobodyさん:2014/03/23(日) 01:01:42.86 ID:???.net
- listは配列が異なるから、page_listの方が良いな
- 142 :nobodyさん:2014/03/23(日) 10:00:57.88 ID:???.net
- >>126
再現できないんだが。。。
- 143 :nobodyさん:2014/03/23(日) 15:38:47.72 ID:???.net
- 自分も>>126はヘンだと思ったので試してみたけど再現しなかった
わざわざ>>129みたいに第三引数を指定しなくても
第一引数のデータに含まれていないカラムは
INSERTでもUPDATEでも勝手にNULLになったりはしないはず
第一引数に余計なカラムが含まれていると疑ったほうがいいんじゃないかい?
あとjQueryとかAjaxとかはPHP側から見れば何の関係もないよ
- 144 :142:2014/03/23(日) 17:13:40.00 ID:???.net
- >>143
同意
- 145 :nobodyさん:2014/03/23(日) 20:23:17.81 ID:???.net
- cake関係ないけど、左上のアイコンって動いてたっけ?
http://jp2.php.net/
- 146 :nobodyさん:2014/03/24(月) 03:32:24.08 ID:???.net
- >>143
あれ、そうだったっけ。
普通のformばかりで、たまにajaxでやると、何かであー・・・ってなった記憶があったから、
質問を読んで、それだと思っちゃった。
でも、逆に一部のカラムをNULLに戻すのはどうするんだったか・・・
- 147 :nobodyさん:2014/03/24(月) 08:45:17.91 ID:???.net
- ajaxで空の(余計な)パラメータをクエリストリングにくっつけちゃってるんじゃね
- 148 :nobodyさん:2014/03/24(月) 10:59:37.56 ID:???.net
- バリデーションで、inListの反対(配列に一致しないと成功)
というルールって無いですよね?
予約語となる名前を使用したらエラーを出したいのですが
- 149 :nobodyさん:2014/03/24(月) 14:22:54.30 ID:???.net
- バリデーションくらい自作しちゃいなよ
ブール値返す関数だったらなんでも設定できるし
- 150 :nobodyさん:2014/03/24(月) 16:13:10.55 ID:???.net
- HTML5でビューを作成しているのですが、
閉じタグを />じゃなくて > にしたいです。
何か設定項目があるのでしょうか?
- 151 :nobodyさん:2014/03/24(月) 17:24:59.51 ID:???.net
- 何がやねん?
- 152 :nobodyさん:2014/03/24(月) 17:31:22.12 ID:???.net
- コアのHTMLヘルパー開いてソースいじれば?
- 153 :nobodyさん:2014/03/24(月) 21:44:26.29 ID:???.net
- >>148
欲しいバリデーションルールがなければ簡単に自作できるよ
ライブラリのValidation.phpにルール名そのままの関数があるので
同じような形で関数を作ればいい
作った関数はモデルかビヘイビアで実装すれば
元々あるルールと同じように使えるようになる
詳細は以下のページを参考にどうぞ
ttp://book.cakephp.org/1.3/ja/The-Manual/Common-Tasks-With-CakePHP/Data-Validation.html
ttp://book.cakephp.org/2.0/en/models/data-validation.html
※2.x系は日本語訳されてるページが少ない・・・1.3の情報でも問題ないはず
- 154 :nobodyさん:2014/03/25(火) 00:00:22.77 ID:???.net
- >>153
自作できるのは知ってるのですが、
inListの逆はあるのかな?と思い、質問しました。
conditionsのNOT INみたいな感じであると思ったのですが
- 155 :nobodyさん:2014/03/25(火) 00:47:37.46 ID:???.net
- >>150
自分もHTML式の記述にも切り替えられたらいいなと思うけど残念ながらなさそう
実現方法は下記ページの「HtmlHelper が出力するタグの変更」に載ってた
ttp://book.cakephp.org/2.0/ja/core-libraries/helpers/html.html#id1
このマニュアルだとloadConfigを各ビューで呼ぶみたいだけど、
コントローラのヘルパー設定で
var $helpers = array('Session', 'Html'=>array('configFile'=>'html5_tags'));
みたいに設定すればloadConfigを自動的に呼ぶようになるみたい
- 156 :nobodyさん:2014/03/25(火) 09:37:47.58 ID:???.net
- >>155
ありがとうございます!出来ました!
コントローラーから指定できるのが便利ですね。勉強になります。
- 157 :nobodyさん:2014/03/25(火) 10:10:21.88 ID:???.net
- CakeにTwigView組み込んで使ってる人いる?
フィルタの追加方法を知りたいんだが
- 158 :nobodyさん:2014/03/25(火) 11:56:36.78 ID:???.net
- 1:フォームにて画像を登録する
2:以下のようにsetFlashにて成功メッセージを表示
$this->Session->setFlash('編集しました');
$this->redirect(array('action'=> 'edit'));
処理は実行されるものの、ブラウザキャッシュが残った状態になります。
ビューにCache-Controlのmetaタグを入れたり、
コントローラーに$this->response->disableCache()をしても変わりません。
なにかよい方法はないでしょうか?
ちなみにIE11やchromeでなり、firefoxではなりません。
- 159 :nobodyさん:2014/03/25(火) 18:59:45.10 ID:???.net
- >>158
ブラウザキャッシュが残っている状態を、
もっと具体的に書いて欲しい。
- 160 :nobodyさん:2014/03/25(火) 19:50:57.49 ID:???.net
- >>159
2でリダイレクトしているのに、1の画像が表示されます。
更新ボタンを押すと新しい画像に変わっているので、
ブラウザキャッシュが効いていると思われます。
- 161 :nobodyさん:2014/03/25(火) 20:26:46.16 ID:???.net
- >>160
それなら、その場しのぎ的だけど、画像へのURLに
?t=23193123 みたくUNIXタイムスタンプつけたらいいんじゃね。
別URLになるからキャッシュされててもとりにくるはず。
- 162 :nobodyさん:2014/03/26(水) 03:05:43.85 ID:???.net
- >>161
その機能あるけど。。。
- 163 :nobodyさん:2014/03/26(水) 17:31:59.85 ID:???.net
- Treeビヘイビアを使う以外で、簡単に表示順番を変える方法ってないですかね?
カテゴリではなく、単なる一覧の表示順番を変えたいだけなので、
Threeビヘイビアで必要なカラム(parent_id、lft、rght)を追加するのは無駄に思いまして。
- 164 :nobodyさん:2014/03/26(水) 18:54:27.87 ID:BNu4KpVt.net
- OrderableBehavior, SortableBehavior, PriorityBehavior とかあったと思う
今は自作で賄ってる
- 165 :nobodyさん:2014/03/27(木) 01:08:52.80 ID:???.net
- >>164
OrderedBehaviorが一番有名みたいですね。
こちらを試してみます。ありがとうございました。
- 166 :nobodyさん:2014/03/27(木) 01:40:31.88 ID:???.net
- >>162
あるけど?
- 167 :nobodyさん:2014/03/27(木) 02:30:47.64 ID:???.net
- bakeで生成されるコードのエンコードを
デフォルトでUTF-8、LFにすることってできますか?
windows環境の話です
- 168 :nobodyさん:2014/03/27(木) 05:28:16.61 ID:GNd/C0+Y.net
- ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
- 169 :nobodyさん:2014/03/28(金) 17:36:04.92 ID:???.net
- ルーティングを以下のようにしているとします。
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
アクセスしたページがトップページ(ホーム)か否かを調べるのって
$this->params['pass']の中にhomeがあるかどうか調べる方法以外ありますでしょうか?
- 170 :nobodyさん:2014/03/29(土) 07:45:47.19 ID:???.net
- 何かスレ止まってると思ったら、板移転してたのか
- 171 :nobodyさん:2014/03/29(土) 12:11:30.75 ID:???.net
- 2chて何となく一人よがりでカッコ悪い
- 172 :nobodyさん:2014/03/31(月) 18:12:43.27 ID:???.net
- お問い合わせ(inquiries)の返信テーブルを
inquiry_repliesかinquiry_messagesかで小一時間悩んでるんですが
どっちがいいと思いますか?
- 173 :nobodyさん:2014/03/31(月) 18:48:56.48 ID:???.net
- >>172
返信用と分かってるならinquiry_repliesでいいんじゃねーの。
用途に合った明確な名前をつけるのは分かりやすくていいよ。
ただ、あとから返信以外の用途にも使うみたいなことになって、
名前と用途が合わなくなるというのも、ありがちな話。
これに1時間悩むんだったら、
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック とか
読んでみたらいいんじゃね?
命名の良し悪しは場合によりけりで、いくら考えてつけても裏目に出ることはあるし、
読んだからといって悩まなくなるわけじゃないけど。
- 174 :nobodyさん:2014/03/31(月) 19:49:24.29 ID:???.net
- >>173
その本に命名規則について書いてあるんでしょうか?
正直、プログラミングよりも命名や設計で物凄く時間がかかっています。
後からやり直したくなることも何度かあるし。
やっぱり同じコード・同じ設計を何度も書くというのは避けたいので、
汎用性の高い、カスタマイズ性のある設計を考えるのですが、
そうすると時間ばかりかかって先に進めません
- 175 :nobodyさん:2014/03/31(月) 21:19:58.42 ID:???.net
- 汎用性はあまり考え過ぎない方がいい事のが多いけどね。
クラス名やメソッド名をBusinessLogicとかexecuteとかにしてあとあと泣くのは自分。
- 176 :nobodyさん:2014/03/31(月) 21:29:42.21 ID:???.net
- >>174
規則については書いてないかな。
もっといえば、命名についてだけ書いてあるわけじゃない。
けど、読みやすいコードに、よく考えられた変数名は重要だし、
4部のうちの1部は命名に関してだよ。
http://kadoppe.com/archives/2013/01/book-readable-code.html
自分は読み途中だからてきとうに見つけた感想文でもはっとく。
自分が読んだとこまでの感想としては、
読んだところで悩まずに書けるようにはならないかな。
けど、納期に追われておざなりになるところだし、
読めばちょっと自分で気を使っただけだと、
気を配りきれない要素を拾えるんじゃないかなと思っている。
あくまでリーダブルコード。設計については書いてないよ。
- 177 :nobodyさん:2014/03/31(月) 23:45:02.75 ID:???.net
- ストアドプロシージャとか実行するにはどうすれば良いの?
- 178 :nobodyさん:2014/04/01(火) 00:05:45.77 ID:???.net
- >>175-176
Cakeの場合、ある程度の決まり事があるのでだいぶ楽なのですが、
やはり、自分で納得行かないコードのまま進むことがあります。
かといって、他人のコード見ても分かりやすいとは思わないし。
(有名所のOSSのソースしか見てませんが
とりあえず質問した件は、inquiry_repliesにしてみます。
- 179 :nobodyさん:2014/04/01(火) 00:36:15.98 ID:???.net
- >>177
ベタ書きして Model::query()
すまん、本当は俺もよく分からん
- 180 :nobodyさん:2014/04/01(火) 00:50:20.63 ID:lnxBtai1.net
- うんごぶりぶりんこ!!!!ドビュビュビュビュドバババババブッ!!!
ドリュルリュルウリュリィブブブブブブッッ!!!!あへあへうんこまん!!!ぶりっちょ!!!
ケツの穴からドババババババババッバwwwwwwwwwwwwWWWW
wwwwwwwwwwww
WWWwwwwwwwwwww??? ? ? ? ? ? ? ????? ????????wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
なお、まにあわんもよう
- 181 :nobodyさん:2014/04/01(火) 07:10:33.33 ID:???.net
- 只働きだろうと持ち出しだろうと、働かなきゃ空白期間だよ
それをちゃんと理解しているなら浪人生活なり語学留学なり存分に楽しんだらいい
- 182 :nobodyさん:2014/04/01(火) 09:58:54.32 ID:???.net
- なぜこのスレなんだw
- 183 :nobodyさん:2014/04/02(水) 05:14:01.71 ID:???.net
- ↓の方法で、ControllerからModelにアクセスすると
public function hoge() {
$this->loadModel('Hoge');
$Users = $this->Hoge->find('all');
}
このようなエラーが表示されてしまいます。
Missing Datasource
Error: Datasource class Mysql could not be found.
Datasource is not found in Model/Datasource package.
↓の中には"empty"というファイルしか入っていないのですが、
cakephp\app\Model\Datasource
やはり何かファイルが足りないのでしょうか?
- 184 :nobodyさん:2014/04/02(水) 06:25:25.12 ID:???.net
- >>183
cakephp/lib/Cake/Model/Datasourceにあるっしょ。
Missing Datasourceになる理由は、情報不足でよくわからんけど。
- 185 :nobodyさん:2014/04/02(水) 11:09:44.80 ID:???.net
- フォームヘルパーのnameが
data[Post][test1]
のラジオボタンがあるとします。
idが、PostTest10、PostTest11、PostTest12となってしまうのですが、
これをPostTest1_0、PostTest1_1、PostTest1_2
みたいにする事って出来ないのでしょうか?
- 186 :nobodyさん:2014/04/02(水) 13:11:18.07 ID:???.net
- 2、3人での小規模開発では使う必要無いですよね?自分でライブラリ作った方が
- 187 :nobodyさん:2014/04/02(水) 13:32:26.95 ID:???.net
- 1人だけどCake使ってるよ。
自分でも作れるけど、車輪の再発明みたいな感じで面倒だし。
- 188 :nobodyさん:2014/04/02(水) 13:53:48.92 ID:???.net
- 必要かと聞かれればその人次第だけど、
1人でも3人でもCakePHP使うよ。
3人のうち2人がほかのフレームワークに慣れてるなら、それに合わせるけど。
- 189 :nobodyさん:2014/04/02(水) 15:43:50.23 ID:???.net
- >>187
色んなもの開発して行くうちにそれなりにライブラリは出来て行くから再発明にはならないでしょ
自分で同コストで出来ることをフレームワーク習得にさらに時間費やすならその理由が無いと
少人数小規模すぎると効率化のメリットよりも、処理の重さや習得の手間、細かい所に手を入れ出すと途端にコストが増す、無駄にシステムが大きくなるとかのデメリットのが目立つよね
- 190 :nobodyさん:2014/04/02(水) 16:12:41.55 ID:???.net
- >>185
自動で振られるIDは制御不可能です。
FormHelper をオーバーライドしてカスタマイズするしか無い。
個別に指定するなら第二引数のidキーで指定できます。
- 191 :nobodyさん:2014/04/02(水) 16:16:36.30 ID:???.net
- >>189
Zendみたいなライブラリの寄せ集め的なFWだと
他のプロダクトでも流用できたりするけど、
CakePHPとかはFWに拘束されてしまうからな。
もっと結合度の低い構成にしてほしいとは思う。
- 192 :nobodyさん:2014/04/02(水) 16:21:34.23 ID:???.net
- >>186
人数は関係ないと思うよ
理解程度と何を作るかによる
一部分しか使わないときにはCakeは使わないな
- 193 :nobodyさん:2014/04/02(水) 17:26:18.77 ID:???.net
- >>189
後半2行はCakeだろうとオレオレだろうと一緒じゃね?
開発人数や規模が変われば冗長化するのは当然じゃん。
なら、みんなで共有・共通事項で合わせられる、
Cakeのような既存のFW使うほうが、よっぽど効率がいい
- 194 :nobodyさん:2014/04/02(水) 17:33:22.17 ID:???.net
- ファイル数個で済むようなちょっとしたアプリなのにcake使ったら、久々にソース読んだ時とかに絶対無駄に分かりづらくなる
- 195 :nobodyさん:2014/04/02(水) 18:00:04.95 ID:???.net
- 全くのPHP初心者がCakeはじめるならそうなるだろうけど、
経験者ならFW使う前に自作ライブラリ作ってるだろうし、
ファイル数個で済む程度のアプリなら、それ使えば良いと思うが。
- 196 :nobodyさん:2014/04/02(水) 21:01:45.37 ID:???.net
- 少人数だからとオレオレでやってたとこに途中参加する人のことを考えてあげてください。
CakePHPは完璧でもないし、すこし合わないプロジェクトな事もあるけど、
CakePHPであると言うだけで、それに慣れてる人を探すことができるよ。
オレオレに慣れてる人は、今いるメンバーだけだよ。
本当にちょっとしたものなら、自作ライブラリでもいいけど、
今ならComposerでライブラリとってきて、必要なとこだけ自分で書くのがいいと思うよ。
- 197 :nobodyさん:2014/04/02(水) 21:31:51.71 ID:???.net
- cake使っててテーブルの値勝手に全部消去された事あるんだけど
あれなんなの仕様?
- 198 :nobodyさん:2014/04/02(水) 21:37:35.82 ID:???.net
- cakeは遅いからな。下手なものには使えない
- 199 :nobodyさん:2014/04/02(水) 22:21:06.03 ID:???.net
- >>184
あ、そっちにおいてあるんですね。
Datasource class Mysql could not be found.
って書いてあるから、てっきりファイルが何か足りないのでは?と思っていました。
もう少しソースを見なおしてみます。
>>186
1人だけど使ってます。MVCを楽にやりたかったから。
- 200 :nobodyさん:2014/04/02(水) 22:34:26.36 ID:???.net
- >>197
それだけじゃ分からん
多対多のリレーションテーブルの属性値が消されたとか?
- 201 :nobodyさん:2014/04/03(木) 00:25:42.94 ID:???.net
- >>198
これよく分かんない。
CakePHPがボトルネックになって要求満たせなかったことが無いんだよねぇ。
- 202 :nobodyさん:2014/04/03(木) 00:46:56.03 ID:???.net
- >>201
お前の会社がオーバースペックのサーバ納品してボッてるだけだろ
- 203 :nobodyさん:2014/04/03(木) 02:21:11.20 ID:???.net
- >>202
サーバー安いしねぇ。
運用コストも含めて、要求以内だよ。
チューニングの余地は、アプリケーションのコードにもインフラ構成にも、普通に残ってると思うけど。
サーバー代が1割2割減ったところでたいした額じゃない。
それより、開発・保守開発が効率よくできるほうが、開発費がかからなくてありがたいね。
- 204 :nobodyさん:2014/04/03(木) 08:59:09.29 ID:???.net
- cakeは開発工数の少なさ、技術者の安さはトップクラスだから開発費は安いんだよな。
前も上がってたけど、ソーシャル系は厳しいな。用途次第ってことだ。
ボトルネックの経験がないところには発注するのは怖いな。ネックになった時に投げ出される可能性が高いってことだろ?
- 205 :nobodyさん:2014/04/03(木) 10:11:20.11 ID:???.net
- なのに、市場ではボトルネックを一切無視して、価格競争してるからな
- 206 :nobodyさん:2014/04/03(木) 14:48:37.49 ID:???.net
- それでいいんじゃね。
パフォーマンスとかうるさく言うんなら、FWやORMはおろか動的言語使うこと自体が要件に合ってないだろ。
- 207 :nobodyさん:2014/04/03(木) 15:13:32.96 ID:???.net
- >>203
インフラ代がいくらのレンジの話よ?
- 208 :nobodyさん:2014/04/03(木) 15:28:38.04 ID:???.net
- 1000円以下
- 209 :nobodyさん:2014/04/03(木) 16:46:48.77 ID:???.net
- >>204
ボトルネックの経験って?
- 210 :nobodyさん:2014/04/03(木) 19:56:07.66 ID:???.net
- >>197
俺も前なった
1.3のいくつかの時までのバグだったから
今はもう起きないんじゃないか?
- 211 :nobodyさん:2014/04/03(木) 20:11:13.79 ID:???.net
- 関係ない話で申し訳ないが、
2ch乗っとられたってマジらしいな
2chドットsc に移行するらしいが、
'2ch' . '.sc' ってのをNGワードにしているらしい
- 212 :nobodyさん:2014/04/03(木) 23:37:19.01 ID:???.net
- >>207
数万〜数十万/月
ってところだね。
- 213 :nobodyさん:2014/04/03(木) 23:41:04.71 ID:???.net
- どれどれと思ってやってみたら
ERROR:さくらが咲いてますよ。
ってなって書き込みできんかった。
どうでもよかったけど、サーバー側でNGワードとかされると引くわ・・・
- 214 :nobodyさん:2014/04/04(金) 15:29:28.73 ID:???.net
- >>212
人件費込み?
- 215 :nobodyさん:2014/04/04(金) 19:02:20.90 ID:???.net
- そうだよ
- 216 :nobodyさん:2014/04/05(土) 00:43:47.97 ID:???.net
- >>214
人件費は入ってないよ。
インフラが得意でインフラ方面のタスクをよくやってる人はいるけど、
インフラだけやってるって人はいないからね。
ただ、自分たちで何でもやらないとなものもあれば、
ある程度は作業を依頼できるインフラ屋さんに頼んでるのもあったから、
そういう場合は一部入ってると言えるかもしれない。
- 217 :nobodyさん:2014/04/05(土) 16:20:54.14 ID:???.net
- >>214
数万で込とかw
- 218 :nobodyさん:2014/04/05(土) 23:26:04.89 ID:???.net
- 開発費は人件費だから
込みじゃないと比較できんな
- 219 :nobodyさん:2014/04/06(日) 01:43:29.71 ID:Iec7CVL5.net
- Cake3 触った人いる?
さっきちょっと見てみたんだけどさ、Model の扱いがぜんぜん違うんだな。
これ Cake2 から移行するのって最初から作るのと同じぐらい大変かもしれないな。
というか、それ以上に苦労するかもしれないな。
- 220 :nobodyさん:2014/04/06(日) 03:31:19.46 ID:???.net
- >>218
?
- 221 :nobodyさん:2014/04/06(日) 04:05:49.26 ID:???.net
- >>219
> さっきちょっと見てみたんだけどさ、Model の扱いがぜんぜん違うんだな。
やっとあるべき姿になったという感じだよね
元々Railsにインスパイアされてできたはずなのに、配列で返ってくるところは絶対変だったよな
まぁ、PHP4に引きずられたんだろうけど…
- 222 :nobodyさん:2014/04/06(日) 10:13:55.10 ID:???.net
- 人件費込みのインフラ費が
一人月超えてくると
開発費との比較が必要になってくるな
それまではcakephpで悩まんな
- 223 :nobodyさん:2014/04/06(日) 20:45:00.75 ID:???.net
- 今日は寒いな
まだストーブが要るとは思わんかった、灯油がもうないよ…
- 224 :nobodyさん:2014/04/07(月) 10:47:00.11 ID:???.net
- フォームのidを手動でCake式に変換する方法(関数)ってありますか?
test_hogeというnameならTestHogeにするみたいな
- 225 :nobodyさん:2014/04/07(月) 18:57:19.67 ID:LGjnvRjr.net
- >>224
FormHelper::domId()
- 226 :nobodyさん:2014/04/07(月) 19:46:25.07 ID:???.net
- >>225
思い通り出来ました!ありがとうございました。
- 227 :nobodyさん:2014/04/08(火) 11:37:39.61 ID:???.net
- チェックボックスを使ったバリデーションで質問です。
ルールを以下のようにしているのですが、
'rule' => array('multiple')
チェックボックの値に0がある場合、1つ選択しただけではfalseになります。
0という値を許可するには、独自バリデーションを作る必要があるのでしょうか?
- 228 :nobodyさん:2014/04/08(火) 14:29:13.60 ID:DFrq8Phr.net
- >>227
Validation::multiple() を見たら、
$check = array_filter((array)$check);
if (empty($check)) { return false; }
ってなってるから、ここで弾かれちゃうんだね。
フィールドの値を変更するか、自作するしか無いね。
コールバック渡せるように作ってくれれば良いのになぁ。
Cakeは、この辺の中途半端な不自由さが結構あるんだよな。
- 229 :nobodyさん:2014/04/08(火) 14:55:21.04 ID:???.net
- >>228
わかりました。自作します。
半角英数字のチェックを配列対応してなかったり、
確かに不自由さは多いですね。
- 230 :nobodyさん:2014/04/08(火) 22:23:04.86 ID:???.net
- >>229
checkboxは他のtypeと違って1個もチェックしないと、空文字列すら送らないんだよね。
なのでFormHelperでチェックボックスを生成した場合、hidden value="0"がチェックボックスと一緒に用意される。
だからバリデーションもそれにあわせて、0は真偽でいうと偽の値になってるんだ。
オレオレフレームワークからCakePHPに乗り換えたときは、そういうところに押し付けがましさを感じていたけど、
慣れてしまえばまぁ合理的かなと思うよ。
チェックボックスをDBにあるマスターテーブルから生成するような場合(割とよくあると思う)、
valueはそのテーブルのidにするのが自然だし、idは1から始まるのが基本的だからね。
なので、CakePHPで開発していくなら、バリデーションを自作するより、
チェックボックスのvalue="0"は未選択とするように、変更するのをお勧めするよ。
- 231 :nobodyさん:2014/04/09(水) 10:48:16.40 ID:???.net
- バリデーションで便乗質問ですが、
名前の姓・名のように、1つの項目で2つの入力箇所がある場合、
バリデーションはどうすればいいのでしょうか?
フォームのnameが
姓:data[User][name][sei]
名:data[User][name][,mei]
として、これ自体のバリデーションは独自関数を作れば出来ますが、
個別にエラーを出力することって出来ませんよね?
例えば「姓が未入力です」「名を日本語で入力してください」
とか出力したいのですが、validateのルール指定では
名前(name)に対する指定で、その下の連想配列に対する
姓(sei)や名(mei)には指定できないです。
- 232 :nobodyさん:2014/04/09(水) 11:56:22.61 ID:???.net
- cakeでも2.4.7でauthコンポーネント利用して認証入れてますが、
f5連打でセッション切れ起こしませんか?
ググって調べてでてきた情報で
Config/core.php最下部に
Configure::write('Security.cookie', 'cakephpfdebackend');
Configure::write('Session.checkAgent', false);
Configure::write('Security.level', 'low');
を追記してますが効果無し。
IE、FireFox、Chrome全てでセッション切れます。
2.3時代からcomposerでアップデートして現在最新ですが
2.3時代でも起きていたように思います。
開発途上段階でaclを入れようと、
alaxos/aclプラグインを導入しましたが、
設定画面で全てのアクションに対するRoleごとの権限をajaxで取りにいく部分があって、
既存のアクションが50はあるので、Role3つ*50で150回のajaxリクエストが走りますが
この途中で確実にセッション切れを起こしてしまい、困ってます。
セッション切れが起こるタイミングはまちまちで、リクエスト回数によるものではなさそうです。
$this->Auth->allow()を置いて認証を使わないようにしないと設定できない状況です。
何か手がかりになりそうな情報はないでしょうか?
- 233 :nobodyさん:2014/04/09(水) 12:49:01.33 ID:???.net
- >>231
バリデーションもだけど、その構造だとsave()できなくないか?
姓:data[User][sei]
名:data[User][mei]
どういうテーブルスキーマか知らんけど、普通にこれでいいんじゃないの?
- 234 :nobodyさん:2014/04/09(水) 13:22:45.53 ID:???.net
- >>233
beforeSaveで1つのnameにするので大丈夫かと思います。
単純にsei、meiを分ける方法が一番簡単だと思うのですが、
日付のフォームとか、Cakeは連想配列で管理しているので
同じように[name][sei]と出来れば良いなと思っています。
- 235 :nobodyさん:2014/04/09(水) 21:52:21.95 ID:???.net
- >>232
どう?
http://www.matomater.com/9769/
- 236 :nobodyさん:2014/04/10(木) 06:44:41.50 ID:???.net
- >>234
でも日付って、年月日で別個にバリデーションできたっけ?
日付としてひとまとまりだったような気がしたけど。
日付はそのままsave()出来るような気がしたけど、これって特殊だよね。
日付で出来る事だからといっても、その辺CakePHP内であまり汎化されてないような気がする。
まぁdata[User][name][sei] でポストするのはうまくいくとしたとしても、
バリデーションはすっきりとは行かないんじゃないか?
- 237 :nobodyさん:2014/04/10(木) 09:24:25.58 ID:???.net
- >>236
確かにそうですね。
それに年月日の場合、個別にバリデーションする必要無い気もします。
単に「日付が正しくありません」というメッセージを出せば
年が抜けてるのか月が抜けているのか関係無いような。
でも、この辺がもう少し柔軟性あればいいですよね
やっぱりフォーム側を[name_sei]のように変えるしか無いんですかね・・・
- 238 :nobodyさん:2014/04/10(木) 10:57:39.51 ID:ekNccxsF.net
- >>237
バリデーションしてから beforeSave 出来るわけだから、
スキーマを name にして、ルールを sei, mei の2つにする。
んで、 beforeSave で値を結合すれば良いんじゃない?
ただ、バーチャルフィールドを使わない理由は?
name を1フィールドにしなくてはならない要件があるの?
- 239 :nobodyさん:2014/04/10(木) 11:10:48.64 ID:ekNccxsF.net
- え、dateフィールド見たいにフォームで name の下に作ってるのか!
>>236 の言うように date や datetime は
Model で各要素を個別に扱えるようには作られてない。
- 240 :nobodyさん:2014/04/10(木) 11:12:27.99 ID:???.net
- あ、 何も考えずに age てた。sage にした方が良かったんかな
- 241 :nobodyさん:2014/04/10(木) 12:41:05.32 ID:???.net
- >>235
情報ありがとうございます。
if(!isset($_SESSION)) session_start();
を試したところ、セッションは切れないのですが
CAKEのセッション機構の設定が全部死んでしまいました。
これで解決させるとまずそうです。
最初からやっとけという話ですが、
CakeSessionを追ってみたところ、Session.autoRegenerateがtrueの場合
ある一定数のリクエストがあるごとにセッションIDを変更しており、
その変更のタイミングで同時リクエストが走ると
そこからセッション切れが発生する事がわかり、
autoRegenerateをfalseにして解決しました。
- 242 :nobodyさん:2014/04/10(木) 14:11:17.70 ID:???.net
- Cakeのセッション周りは昔から謎の挙動をするよな
詳細は忘れてしまったけど、要注意だ
- 243 :nobodyさん:2014/04/10(木) 14:21:07.20 ID:???.net
- そういうのがあるからフレームワークは怖い
Strutsみたいのだとまた違うけれど
- 244 :nobodyさん:2014/04/10(木) 14:33:01.94 ID:???.net
- >>237
FormHelperのコードを見るとわかるけど、バリデーションのエラーメッセージの表示は、
Modelname.fieldname という構成を想定してるよ。
バリデートルールはModelに書くから、Controllerが保持する$validationErrorsも、
[Modelname][fieldname]という2次元配列で格納されている。
$this->Form->input('Modelname.fieldname') で、その$validationErrorsの中身と対になるようになってる。
例外でモデル名を省略できるケースはいくつかある。
$this->Form->create('Modelname');
$this->Form->input('fieldname');
Controllerのusesが1個の場合と、複数ある場合1個目のモデル、usesを書かずコントローラー名からモデル名がわかる場合は、
$this->Form->create();
$this->Form->input('fieldname');
でもいけたような気がする。たぶん
- 245 :nobodyさん:2014/04/10(木) 14:37:55.60 ID:???.net
- Cakeで一番困ったのは>>197のバグでテーブル全部消されたこと
- 246 :nobodyさん:2014/04/10(木) 15:58:45.85 ID:???.net
- てか、そんなこと1回もなったことないけど、
ほんとにそんなバグあるの?
- 247 :nobodyさん:2014/04/10(木) 16:11:15.52 ID:???.net
- bakeしてんだけどviewだけが何故か生成されない
Cake2.3.5で、Windowsのコマンドプロンプトからbakeしてます
cake bake view テーブル名 を実行しても
Welcome to CakePHP v2.3.5 Console
---------------------------------------------------------------
App : app
Path: appのパス
---------------------------------------------------------------
と出るだけで終了して何も起きない
インタラクティブでやると
Would you like to create the views for admin routing? (y/n)
[n] >
の後で終了して、何も起きない
- 248 :nobodyさん:2014/04/10(木) 16:11:16.67 ID:???.net
- 本当なら使用しているバージョン、どんなコードで再現したかなど
詳細を書いてほしいものだ
レスがなければ嘘だと判断していいと思う
- 249 :nobodyさん:2014/04/10(木) 16:13:07.05 ID:???.net
- >>246
WHERE 1=1 でDELETE発行するバグが1.3.4まであった
http://web.archive.org/web/20110803234417/http://cakephp.lighthouseapp.com/projects/42648/tickets/250-model-delete-bug
ググれば過去スレも出てくるよ、12ホール目
- 250 :nobodyさん:2014/04/10(木) 18:03:59.14 ID:???.net
- 興味あったんで本当にテーブル削除されることがあるのか試してみた
以下のコードをコントローラのアクションに入れて実行
$this->テーブル->delete();
バージョン 1.3.2 1.2.8 1.2.0 のいずれも発生しなかった
>>249の提示した記事は英語なのであまり深くは読めていないが
ライブラリのmodel.phpを修正して$model->exists()をコメントアウトしてみたところ、
一応再現はできた
まとめると
@モデルのexistsメソッドをidが指定されていなくてもtrueを返すように上書き
Aモデルのdeleteメソッドを引数なしで実行
したときに DELETE FROM `テーブル` WHERE 1 = 1
が実行される(もちろん全テーブルじゃなくて1テーブルだけだが)
まあほとんどの人には縁のない現象といえるかな
もっと単純に再現できるコードがあるのなら提示してほしい
- 251 :nobodyさん:2014/04/10(木) 18:47:46.61 ID:???.net
- beforeDeleteはどこいった
- 252 :nobodyさん:2014/04/10(木) 19:06:10.92 ID:???.net
- 普通に使ってるだけで起きたんだよなあ。
古いことなので今更調べる気にはなれない。
- 253 :nobodyさん:2014/04/10(木) 20:45:55.49 ID:???.net
- なるほどね、よくわかった
オラクルとかのトリガーでも自テーブルへの処理は参照すらできないから
記事のbeforeDeleteのような実装は単なるコーディングミスと判断していたよ
普通の処理とみなす人もいるってことね
- 254 :nobodyさん:2014/04/10(木) 20:58:33.13 ID:???.net
- Cakeに限らずだが、FMって問題が起きた時に
その原因を突き止めるのに苦慮することが多いよね
- 255 :nobodyさん:2014/04/10(木) 21:09:13.27 ID:???.net
- そんなことよりbakeできなくて困ってるんですが
- 256 :nobodyさん:2014/04/10(木) 21:58:13.10 ID:???.net
- FMってなんだ
- 257 :nobodyさん:2014/04/11(金) 21:38:10.95 ID:???.net
- フォームヘルパーの月(month)とday(day)って
どうして「01」と「1」に分かれているんですかね?
値はどちらも0が入っているのに
- 258 :nobodyさん:2014/04/13(日) 10:45:52.80 ID:kiCm96y5P
- Ruby on Rails Cake PHPはやめとけ
http://tinyurl.com/pcvwp9m
- 259 :nobodyさん:2014/04/15(火) 12:13:57.73 ID:???.net
- ちょっとハマったので情報投稿します。
2系(たぶん2.3〜)でCookieコンポーネントを使って
ユーザーデータ等を保存する場合、
$this->Cookie->write('Auth.User', $this->request->data['User']);
みたいにすると、
$this->Cookie->delete('Auth.User');
で削除できません。ログアウトの時にこれを入れても削除されません。
$this->Cookie->write('AuthUser'); で保存して
$this->Cookie->delete('AuthUser'); で削除はOKでした。
どうやらドット記法が原因のようです。
ログインフォームの自動ログインで上記のような書き方を
推奨しているサイトがちらほらあったので、注意してください。
ログインフォーム以外も何かしらCookieコンポーネントを
使うケースがあるかと思いますが、
出来るだけCookie名にドットを入れないほうが良いみたいです。
- 260 :nobodyさん:2014/04/15(火) 14:27:17.30 ID:???.net
- >>258
そもそもURL中のマルチバイトはURLエンコードしないとRFC的にだめなんじゃない?
違ったっけ?
- 261 :nobodyさん:2014/04/15(火) 15:56:03.67 ID:???.net
- >>258
ためしてみたけど普通に使えたよ
使ったバージョンは2.4.6
App::uses('Validation', 'Utility');
debug(Validation::url('http://ほげ.com/漢字.htm'));
結果はtrue
- 262 :nobodyさん:2014/04/15(火) 17:25:40.94 ID:eAedbEAo.net
- まじ?こっちは2.3.8でダメだった
バージョン上げてみようかな
- 263 :nobodyさん:2014/04/15(火) 18:29:39.18 ID:???.net
- $this->User->id = $id;
$user = $this->User->read();
みたいな書き方って、あんまりやらない方が良いみたいだね。
この後にsave(更新)したら、request->dataに無いカラムも更新しようとして
空更新されて焦ったわ
- 264 :nobodyさん:2014/04/15(火) 23:31:53.92 ID:???.net
- >>263
readなんて使ったことないなー。
- 265 :nobodyさん:2014/04/16(水) 13:37:09.77 ID:???.net
- Shellファイルをブラウザ上から確認する方法って無いですかね?
いちいちサーバにアップしてSSHからコマンド実行して〜
というのが面倒に感じまして。簡単に実行確認出来る方法があれば教えて下さい。
- 266 :nobodyさん:2014/04/16(水) 15:23:58.68 ID:???.net
- >>265
できるけど、結構大変だろうなと予測。
というかそもそも設計がおかしんじゃない?
Shellでもブラウザでも呼び出せるタスクを切り離すべきだと思う。
- 267 :nobodyさん:2014/04/16(水) 15:28:42.31 ID:???.net
- >>266
Shell内でコントローラを読み込んでアクションを実行できるんですね。
それならブラウザ上でも確認できるので問題なさそうです。
- 268 :nobodyさん:2014/04/16(水) 16:33:30.72 ID:???.net
- >>267
え、何でそういう方向に行くの?
まぁ、好きにすればいいけど
- 269 :nobodyさん:2014/04/16(水) 18:28:16.11 ID:???.net
- >>268
すまん。何が言いたいか分からん
- 270 :nobodyさん:2014/04/16(水) 19:41:36.54 ID:???.net
- >>266は設計がおかしいんじゃないかとか質問内容からは読み取れないことを
書いているうえに肝心の実現方法を書いていないので不適切な回答だと思うが
>>267の結論はもっと意味不明で全く>>266と噛み合っていないので
>>268で呆れられてしまったということだろう
たぶん>>266が「できる」と書いたのは
execやpopenでcake.shやcake.batを呼び出すことじゃないかと予想してみる
OS依存なので個人的にはお勧めできないが
Shellとコントローラの両方から「標準で」使えるものはモデルだけだと思うよ
コントローラやコンポーネントやヘルパーなどをnewして使うようなやり方は
動作はするかもしれないが正しいやり方とは思えないな
- 271 :nobodyさん:2014/04/16(水) 20:07:27.22 ID:???.net
- 横だけど、正しい・正しくないは関係ないと思うけどな。
「正しい書き方ではないけど動作する」なら、それでいいんじゃないか?
こんな事言うといつも「複数で開発する場合は迷惑だ」とか言う奴いるけど、
目的は「動作する」事であり、綺麗なソースを書くことじゃない。
それに複数人で開発するなら
「良い書き方がわからなかったから、この方法にした」
って説明すればいいだけだろ。情報共有しろよ。
- 272 :nobodyさん:2014/04/16(水) 20:14:11.37 ID:???.net
- 小難しい話は置いといて、 >>265 は
Shell で呼び出す処理を別の Model だか Lib のクラスに移して、
ShellからもControllerからも実行できるようにすれば良い
- 273 :nobodyさん:2014/04/16(水) 20:39:15.00 ID:???.net
- Shell使う処理で、Modelだけで済む事って無いと思うんだけどなぁ
よくあるメール一斉送信とかShellで作るけど、
その時の条件分岐やらModelに対する指示なんかはControllerに書くわけで。
メールの送信自体はライブラリ化しても良いと思うけど。
- 274 :nobodyさん:2014/04/16(水) 22:05:21.32 ID:???.net
- テストのためにそういうのが出来ないかって話なんだから正しい必要はないだろ
それができるとテストが便利で実装が楽でバグが減るんだっていうんだから
設計だとか綺麗かどうかとか関係ないだろ
- 275 :nobodyさん:2014/04/16(水) 23:00:28.05 ID:???.net
- いつからテストの話になったんだ
- 276 :nobodyさん:2014/04/17(木) 00:07:52.39 ID:???.net
- テスト機能の事じゃなくて、「試す」って意味の「テスト」じゃないか?
- 277 :nobodyさん:2014/04/17(木) 00:13:59.42 ID:SXCfNI/g.net
- 大規模なシステムになった場合、PHPデバッガー等を使って
1行ずつステップデバッグ実行をした方が効率が良いものなのでしょうか?
cakePHPとかみたいなFWを使っている場合には
デバッガーがそこまで追い切れるのか若干気になります。
皆さんは、PHPで業務システムを作る時にはデバッガーを使っていますか?
それとも dumpで開発していますか?
- 278 :nobodyさん:2014/04/17(木) 00:19:14.66 ID:???.net
- >>277
人海戦術に頼る。クラウドソーシングとかで安く依頼できるしな。
やっぱ、システムだけで対応しようとすると、何かと抜けが出るよ。
- 279 :nobodyさん:2014/04/17(木) 00:26:59.39 ID:???.net
- 自分はeclipseとXdebugを使ってステップ実行できる環境を使ってるよ
ステップ実行といってもすべての行を1行ずつ実行する必要はなくて
処理を追いたいところにブレークポイントをつけておけばいいだけ
ステップ実行するまでもない場合はdebug関数で変数の中身を画面で確認してる
>>261
2.3.8で試してみたらfalseになったんでバージョンが原因みたいだね
>>263
自分もreadは使ったことなかったんで試してみたところ、再現を確認
なかなか嫌な動きだわ
- 280 :nobodyさん:2014/04/17(木) 02:16:19.83 ID:nvHQmt855
- このスレ、書き込めるのか?
- 281 :nobodyさん:2014/04/17(木) 02:16:53.26 ID:???.net
- スレチだが、新しい方に移動した方がいいの?
- 282 :nobodyさん:2014/04/17(木) 06:59:31.54 ID:+GQ/cWTu.net
- CakePHPで複合主キーで構成されるテーブル同士の結合は
どのように実現すればよいのでしょうか?
[テーブル左] 列A*、列B*、列D*、列E*
[テーブル右] 列A*、列B*、列C
(*は主キー)
のような構成で、
[テーブル左] に [テーブル右] を 列A、列Bをキーとして
列C を外部結合したいと考えています。
$virtualFields で1つにまとめて、$primaryKeyで定義しなす?
- 283 :nobodyさん:2014/04/17(木) 09:07:56.95 ID:???.net
- >>277
デバッカ使ってる
エクステンションでなければ中まで追えるので、cakeも追えるよ
- 284 :nobodyさん:2014/04/17(木) 12:22:28.87 ID:???.net
- 特性スープやでぇ
- 285 :nobodyさん:2014/04/17(木) 12:35:55.72 ID:???.net
- 特性スープやでぇ
- 286 :nobodyさん:2014/04/17(木) 14:12:21.40 ID:???.net
- >>282
'joins' キーでちまちま作りこんだほうが良い。
というか、以前調べたときはそれしか無理だった。
他に方法あれば教えて欲しい。
Cake3 から複合キー対応らしいけどね。
- 287 :nobodyさん:2014/04/17(木) 23:16:01.90 ID:???.net
- ツリービヘイビアを使ったカテゴリで、
親カテゴリから子カテゴリまで何階層あるか調べる方法って無いですかね?
無限にカテゴリを作れるのではなく、ある程度階層指定したいと思います。
簡単に表示する方法があるなら、エラー判定しやすいのですが
- 288 :nobodyさん:2014/04/17(木) 23:45:58.91 ID:???.net
- 親要素の条件は、子エンティティと比較して
lft がより小さく且つrghtがより大きいので
子エンティティを $child、モデルのエイリアスを Foo 、階層を $depth とする場合
こんな風にしたら取れるはず
$childLft = $child['Foo']['lft'];
$childRght = $child['Foo']['rght'];
$conditions = array('Foo.lft <' => $childLft, 'Foo.rght >' => $childRght);
$depth = $Foo->find('count', compact('conditions')); // 親の階層数
- 289 :nobodyさん:2014/04/18(金) 05:19:37.24 ID:???.net
- >>286
ありがとうございます
Cake3で対応ですか!期待して待ってます
- 290 :286:2014/04/18(金) 10:55:29.76 ID:???.net
- >>288
以下の様な階層だとして
テスト→子テスト→孫カテゴリ
287さんの方法では、「子テスト」を選ぶと1と表示され、
「孫テスト」を選ぶと2が表示されるなど、1つ上の階層番号しか表示されません。
- 291 :286:2014/04/18(金) 10:56:34.64 ID:???.net
- すみません。2行目を書き間違えました。
テスト→子テスト→孫カテゴリ
ではなく
テスト→子テスト→孫テスト
でした。
- 292 :nobodyさん:2014/04/18(金) 13:04:19.06 ID:N7yuefiZ.net
- Cakeをインストールすると最初の画面でSecurity.saltとcipherSeedを変更する様に言われるけど、これは何桁でもいいの?
- 293 :nobodyさん:2014/04/18(金) 13:22:10.90 ID:???.net
- いいよ
- 294 :nobodyさん:2014/04/18(金) 13:39:34.12 ID:N7yuefiZ.net
- そうか、ありがとう
- 295 :nobodyさん:2014/04/18(金) 13:45:58.83 ID:???.net
- >>291
じゃぁ1足せよw
「親の階層数」って書いてるじゃん
- 296 :nobodyさん:2014/04/19(土) 16:38:03.71 ID:2kVxcvEH.net
- Cake人気ないな…
とうとうCakePHP bake なんたら でぐぐると食べ物のケーキの記事ばかり出てくるようになってしまった
- 297 :nobodyさん:2014/04/19(土) 17:11:08.54 ID:???.net
- ねぇよ
- 298 :nobodyさん:2014/04/19(土) 20:27:05.90 ID:???.net
- Cakeは海外で特に人気ないからな
- 299 :nobodyさん:2014/04/19(土) 20:37:49.07 ID:???.net
- え、国内の方がないと思ってた
- 300 :nobodyさん:2014/04/19(土) 20:39:03.09 ID:???.net
- PHPは日本で特に人気ないけどな
- 301 :nobodyさん:2014/04/19(土) 20:57:23.19 ID:2kVxcvEH.net
- そうか?PHPの仕事しか来たことないわ。Rubyとかどこで使ってるの?って感じ
- 302 :nobodyさん:2014/04/19(土) 21:42:49.70 ID:???.net
- >とうとうCakePHP bake なんたら でぐぐると食べ物のケーキの記事ばかり出てくるようになってしまった
どこの検索エンジンだよそれw
- 303 :nobodyさん:2014/04/20(日) 01:46:02.06 ID:???.net
- 人気っていうか、すごい使われるけど評価は低いよね。
よく叩かれてる
- 304 :nobodyさん:2014/04/20(日) 09:30:13.88 ID:???.net
- PHPは日本でも使われてるんだが
やっぱり、Ruby、Perlの使われ方度合いに比べると
全然使われてないことになる
- 305 :nobodyさん:2014/04/20(日) 09:57:55.62 ID:???.net
- ruby使ったことないけど、phpとさほど変わらんのでしょ?
最終的には好みの問題みたい。
- 306 :nobodyさん:2014/04/20(日) 10:42:30.47 ID:???.net
- どこが変わらないって言ってるかはわからんが
RailsとCakeの今が、いい意味でも悪い意味でもRubyとPHPの差の一つ
- 307 :nobodyさん:2014/04/20(日) 11:18:10.27 ID:???.net
- 利用者が増えるに従ってアンチが増加するのは何でも一緒。
FWは型を提供するものだから、その型が気に入らなければ別のを使うしか無い。
無ければ作るか自分を合わせるしか無い。
明確な問題点があるんだったら、コミュニティに参加して改善を提案してみたことはあるのかな?
他を調査してより良い解決策があるんなら、具体的にその利点をここの読者に教えてあげようとしないのかな?
まぁ、自分一人で決めることも出来ないから、愚痴を言いたくなる気持ちもわかる。
- 308 :nobodyさん:2014/04/20(日) 11:24:53.22 ID:???.net
- >>304
え?
Perlは人口減って、昔から使ってた一部の会社が使ってるばかりだし、
Rubyは最近ようやく増えてきたかなって程度だろ。
- 309 :nobodyさん:2014/04/20(日) 11:30:03.25 ID:???.net
- >>308
海外での人気に比べるとな
- 310 :nobodyさん:2014/04/20(日) 12:34:02.33 ID:???.net
- 正直サーバーサイドはFWが何でもいいわ
- 311 :nobodyさん:2014/04/20(日) 12:38:12.89 ID:???.net
- ガラパゴス言語
Perl,Ruby
ガラパゴスFW
CakePHP
って言いたいのか
実際そうだけどな
- 312 :nobodyさん:2014/04/20(日) 14:23:15.37 ID:???.net
- 世界的なシェアだと最近はLaravelが一番なんだっけ?
(シェアじゃなくてGitHubの人気だったか?)
あと、YiiとかCIもCakePHPよりは上なんだよな確か。
でもオープンソースだからといってもシェアに関してはプロプライエタリと同じで、
必ずしも良い物が普及するとは限らないよな。
たとえばWordPressみたいに、酷いシロモノでも
マーケティングが勝利するオープンソースもあるし。
- 313 :nobodyさん:2014/04/20(日) 15:51:49.84 ID:???.net
- rubyはネットでは見るけど、現場では全然見ない
- 314 :nobodyさん:2014/04/20(日) 17:08:13.64 ID:???.net
- Yiiは共産圏で人気らしいね
- 315 :nobodyさん:2014/04/20(日) 18:32:52.08 ID:???.net
- >>313
織田裕二みたいですね
- 316 :nobodyさん:2014/04/21(月) 09:50:09.63 ID:???.net
- Rubyって単に取り上げてるブログが目につく(ブクマなどで)だけで
多いと錯覚しているだけだろ?
そら、PHPみたいに成熟された言語より
Rubyのような比較的新しくてそれほど一般化していない
技術のほうが注目を浴びるに決まってるわw
それと混同して「PHPは人気なくなった」とか目論見が甘すぎ
- 317 :nobodyさん:2014/04/21(月) 15:57:26.42 ID:???.net
- RubyもPHPと同時期に出来た言語なんだが
- 318 :nobodyさん:2014/04/21(月) 18:53:01.40 ID:???.net
- ScalaとGoが注目浴びてるな
- 319 :nobodyさん:2014/04/25(金) 10:49:57.10 ID:???.net
- リファラをコントローラーとアクションに分解する機能ってありませんよね?
$this->referer()だと普通にリファラが表示されるだkです。
- 320 :nobodyさん:2014/04/25(金) 13:39:29.24 ID:s6GwqSqm.net
- CakeRequest にそれっぽい機能あった気がする
- 321 :nobodyさん:2014/04/25(金) 15:10:13.57 ID:???.net
- Routerクラスがそれを担当している気がする
何を作ろうとしてるのか知らないけど、
リファラを使って何かをする機能ってだけで、ちょっと不穏な空気を感じてしまう。
- 322 :318:2014/04/25(金) 16:51:30.47 ID:???.net
- >>321
管理画面なのですが、例えば削除(delete)する場所って
一覧(index)と詳細(detail)で出来るとします。
削除した後に全部一覧に戻せば良いだけかもしれませんが、
改ページした後に削除した場合、リファラで前の画面に戻したいのです。
つまり、要件として
・一覧から削除 → 前のページにリダイレクト
・詳細から削除 → 一覧にリダイレクト
となります。これをするために、リファラを分析して
「どこのページからのアクセスか?」がわかれば簡単と思い、質問しました。
- 323 :nobodyさん:2014/04/25(金) 17:39:22.10 ID:???.net
- 削除なら GET じゃなくて FormHelper::postLink() を使うのが今の標準だと思うんだけど、
その場合なら引数にリダイレクト変数をセットできる。
コントローラ側で汎用的な処理をしたいんならやっぱりリファラでやったほうが良いのかも。
URLの解析は >>321 の言ってる通りRouter::parse()メソッドがある。
ただ、リファラをそのまま渡してもダメで、
アプリケーションのルートからのパスにする必要があったかもしれない。
- 324 :nobodyさん:2014/04/27(日) 13:54:25.75 ID:???.net
- 海外の求人ちょっと見たらRailsが多くて驚いた
PHPばっかりの日本はガラパゴスなんかな
- 325 :nobodyさん:2014/04/27(日) 15:43:07.45 ID:???.net
- rails多いといっても
phpのほうがrubyよりは一応多いでしょ
rubyの9割以上の求人がrailsってのがすごいよな
railsだとpostgresql求人増えてるし
cakephp+mysqlのスペックだとガラパゴスになりそうだな
- 326 :nobodyさん:2014/04/27(日) 16:13:12.62 ID:???.net
- せやかて駆動
- 327 :nobodyさん:2014/04/27(日) 17:19:21.88 ID:???.net
- ん? Cakeスレかここ。 phpの安直さは最高! fuelphp使ってる。 確かにCakeはオワコンだな。
- 328 :nobodyさん:2014/04/27(日) 18:49:35.25 ID:???.net
- どこまでいっても、所詮Railsのパチもんだしな。
Djangoとはえらい違いだ。
- 329 :nobodyさん:2014/04/27(日) 20:59:13.46 ID:???.net
- >>327
fuelphpって既に終わってるやん
- 330 :nobodyさん:2014/04/27(日) 21:32:10.25 ID:???.net
- fuelは結局始まらなかったなぁ
- 331 :nobodyさん:2014/04/27(日) 21:46:02.47 ID:???.net
- >>325
herokuのおかげかrailsはPostgreSQL対応が盛んだからな
- 332 :nobodyさん:2014/04/27(日) 23:09:38.66 ID:9dL9KMPJ.net
- 少し変化あったけど
結局またMySQLだよな
- 333 :nobodyさん:2014/04/28(月) 00:46:19.25 ID:???.net
- 日本は逆にRailsかCakeのどっちかになってる気がする
ま、CakeもRailsのパクリなんであれだが
- 334 :nobodyさん:2014/04/29(火) 10:06:00.47 ID:uHAmZpKN.net
- 脆弱性の緊急パッチが出てるんで
業務で使っている人は早めに当てておけよー。
1.3.x と 2.4.x 両方。
- 335 :nobodyさん:2014/04/29(火) 10:12:45.43 ID:???.net
- まじか、と思って見に行ったら
公式からしてやられてしまったのか?w
http://cakephp.org/
502 Bad Gateway
- 336 :nobodyさん:2014/04/29(火) 10:46:44.84 ID:uHAmZpKN.net
- 公式復旧したっぽいね。
ちなみにこの脆弱性報告したのは実は俺。
- 337 :nobodyさん:2014/04/29(火) 11:06:47.62 ID:???.net
- 前から気付いてたので、フォーム改ざん検知使ってなかった。
- 338 :nobodyさん:2014/04/29(火) 11:19:04.21 ID:???.net
- 英語読めないんだけど、今回は何が問題なの?
- 339 :336:2014/04/29(火) 11:26:35.82 ID:???.net
- 家出ちゃったんで確認できないんだけど、今回の修正、別アクションにpostするときでも大丈夫?
- 340 :nobodyさん:2014/04/29(火) 11:32:28.27 ID:???.net
- >>336
クリタタカシさんありがとうございます
- 341 :nobodyさん:2014/04/29(火) 11:35:24.45 ID:uHAmZpKN.net
- >>339
SecurityComponent のフォーム改竄防止機能に穴があった。
作りにもよるけど hidden で受け取る id とかを改竄されると、任意のレコードを更新可能。
Model::save() を呼ぶ時に第一引数の $data に更新したいデータだけを渡すか
第三引数の $fieldList を明示的に指定するかしてれば平気。
>>339
別のアクションでも平気。
FormHelper が作る action をセキュリティトークンに入れてるから。
ただ、JavaScript で動的に action を変更している場合はブラックホールに飲まれるかと。
- 342 :nobodyさん:2014/04/29(火) 11:38:39.55 ID:uHAmZpKN.net
- >>340
どういたしまして
- 343 :nobodyさん:2014/04/29(火) 11:44:15.83 ID:???.net
- CakeのSecurityComponentっていっぱい穴ありそう
俺が触ってたのは1.3の頃だけど使いたくないと思った
- 344 :nobodyさん:2014/04/29(火) 11:46:59.01 ID:???.net
- すげえ
- 345 :336:2014/04/29(火) 11:48:47.49 ID:???.net
- >>341
ありがとう。これで自作form改竄対策から離れられる。
- 346 :nobodyさん:2014/04/29(火) 16:06:25.97 ID:???.net
- セキュリティトークンどころかformまで今まで自作してたけど
Cake純正のもの使った方が楽なんかな
- 347 :nobodyさん:2014/04/29(火) 17:12:05.84 ID:???.net
- おまえなんでCakePHP使ってんの?
- 348 :nobodyさん:2014/04/29(火) 19:09:18.76 ID:???.net
- 昔はもうちょっと使ってる人多かったんだよ
それでメジャーなのかなぁと思って、手を出した
結構色々これで作っちゃったから、以後ずるずる
- 349 :nobodyさん:2014/04/29(火) 20:08:51.90 ID:???.net
- 確実に昔よりは使っている人が多いと思うよ
- 350 :nobodyさん:2014/04/29(火) 22:33:23.36 ID:???.net
- 少なくとも俺の観測範囲では減っているな
- 351 :nobodyさん:2014/04/30(水) 08:44:08.14 ID:???.net
- ワンオフ型が減り、量産型が増えたから
環境によっては増えたと思い、環境によっては減ったと思う
- 352 :nobodyさん:2014/04/30(水) 13:45:58.87 ID:???.net
- また、アップデートかw
- 353 :nobodyさん:2014/04/30(水) 15:08:14.56 ID:???.net
- う、本当だ
- 354 :nobodyさん:2014/05/01(木) 00:53:29.70 ID:???.net
- なんでもかんでもhappy to announce ってバカみたいだな
- 355 :nobodyさん:2014/05/01(木) 02:19:18.51 ID:???.net
- まぁ、決まり文句だからしゃーないけど、
文言考えるの面倒くさいんだろうな
- 356 :nobodyさん:2014/05/02(金) 00:08:32.26 ID:???.net
- >> 340
これ本当?diffをちょっとみただけだけど、post先のURLを改竄されても通ってたのが、通らなくなってよりセキュアだねってだけで、hiddenの改ざん検知とか関係なくない?
- 357 :nobodyさん:2014/05/02(金) 00:25:59.26 ID:???.net
- 嘘だったらこめん。明日よくみてみる。
- 358 :340:2014/05/02(金) 00:35:18.90 ID:???.net
- >>356
本当だよ。
俺が Mark Story 氏に実際の攻撃手順を書いて送ったのが26日。
アップデートが 2.5.0-RC2 に脆弱性のアナウンスなしで反映されたのが27日。
1.3.18 と 2.4.8 にアナウンスありで反映されたのが29日。
かなり深刻な脆弱性だったからこういう日程になったんだけど、
結果的にはミスがあって 2.4.9 が出ることになった。
必ず攻撃が成功するかはサイトの作り次第だけれど、
仕事で使ってるならアップデートした方がいいよ。
- 359 :nobodyさん:2014/05/02(金) 00:43:14.81 ID:???.net
- >>357
今回の問題は、field改ざん検知のハッシュ値が、別のurlでも使えてしまう問題。
例えばForm->textでfield1,filed2を生成しPOSTされた値を保存するaction1、
Form->textでfield1のみ生成しPOSTされた値を保存するaction2があるとする。
action2でform改ざんを行って手動でfield2を追加しPOSTする場合を考える。
一緒にPOSTされるhash値の不一致でエラーとなるのが本来の仕様。
ただし以前のバージョンだと、form改ざんと併せてhash値をaction1のものを引用すると、
エラーにならずにfiled2を上書きできてしまう。
今回の修正で他のアクションのhash値を引用することができなくなり、本来の仕様を
回避する穴がふさがった。
ちなみにhiddenの改ざんの話は、どういう意図で言ったのか俺もよく関連はわからん。
- 360 :nobodyさん:2014/05/02(金) 00:55:27.39 ID:???.net
- >>356だけど、すまん。意味分かったかも。リリースノート読飛ばしてコミットログしかみてなかった。actionを改ざんすることでSecurtyComponentが丸ごと迂回されるのでhiddenも改ざんできるのね。いや、ソースみてないんでこれも嘘かもしれないけどw
- 361 :340:2014/05/02(金) 00:58:57.58 ID:???.net
- >>360
そういうこと。
- 362 :nobodyさん:2014/05/02(金) 15:48:57.61 ID:???.net
- パンくずリストを作成するHTMLヘルパーって扱いが難しいよね
階層が増えるとビューに余計なコードを書く機会が増える
だからコントローラと独自ヘルパーで何とかしているけど、
手間がかかって仕方がない。
- 363 :nobodyさん:2014/05/02(金) 18:24:19.36 ID:???.net
- cookbookの例にあるようにTreeビヘイビアを使ってLI リストを表示したいのですが、
ビューで表示するときはヘルパーか何か作らないといけないのでしょうか?
以下のようにしたいのですが、generateTreeListでは無理です。
・My Categories
・Fun
・Sport
・Surfing
- 364 :nobodyさん:2014/05/02(金) 19:10:49.13 ID:???.net
- >>363
Treeビヘイビアは不要
Model::find('threaded');
か、
Model::find('all');
したでーたを Hash::nest() で入れ子にする。
- 365 :nobodyさん:2014/05/02(金) 20:12:03.57 ID:???.net
- >>364
すみません、そういう事ではなくて、ビューでの表示です。
ビューで>>363みたいなリスト化して出力するには、
独自のヘルパーを作らなければいけないのか?
他に方法があれば教えてくださいっと言った質問になります。
- 366 :nobodyさん:2014/05/02(金) 20:40:21.50 ID:???.net
- 無いよ。
なんでかって言うと、再帰処理したら簡単に表現できるからなぁ。
で、再帰処理するためには入れ子構造に組み直す必要があって、
そのためには >>364 に書いた通りって意味なんだが?
- 367 :nobodyさん:2014/05/02(金) 20:42:16.77 ID:???.net
- とりあえず $Hoge->find('threaded'); で取得したデータをダンプするなりして
よく考えてみ。
- 368 :nobodyさん:2014/05/02(金) 21:05:59.69 ID:???.net
- HtmlHelper::nestedList() ではだめなの?
- 369 :367:2014/05/02(金) 21:46:37.32 ID:???.net
- ごめん。
HtmlHelper::nestedList() に渡すには TreeBehavior だと自力で整形しないと駄目なんだね。
CakeDC の Utils プラグインにある TreeHelper::generate() なら >>363 の要求を満たせる。
- 370 :nobodyさん:2014/05/02(金) 21:48:33.85 ID:???.net
- >>368
HtmlHelper::nestedList() に渡すには
単純な入れ子構造にしておかないとだめ。
Model::find('threaded'); で取得したのはそのまま使えないと思う。
いったん Model::find('all'); で取得したデータを
Hash::extract() で階層を浅くして、それを
Hash::nest(); を使って組み直すなどの手間を掛けないと使えないんじゃないかな。
- 371 :nobodyさん:2014/05/02(金) 21:49:26.87 ID:???.net
- あ、かぶった。すまん。
TreeHelper なんてあるの知らなかった。
一度見てみるわ。
- 372 :nobodyさん:2014/05/02(金) 22:02:34.68 ID:???.net
- いえいえ。
実は俺もわりと最近知った。
- 373 :362:2014/05/02(金) 22:29:38.32 ID:???.net
- >>366-371
皆さんありがとうございます。素直に自作ヘルパー作って
配列を再帰して表示することにします。
- 374 :nobodyさん:2014/05/08(木) 16:22:29.68 ID:???.net
- フィールド名がemail以外の時ってemailバリデーション効かなくない?
サンプルコード漁ったらさらっと書いてあるけど動かない…
- 375 :nobodyさん:2014/05/08(木) 17:05:11.16 ID:???.net
- >>374
$validateの配列の書き方間違ってない?
- 376 :373:2014/05/08(木) 17:40:55.81 ID:???.net
- すまんちゃんと効いてた。これsave時にfalse返すんだな。
他のバリデーションと同様にPOST前にポップアップで教えてくれるかと思ってた。
- 377 :nobodyさん:2014/05/08(木) 21:14:06.37 ID:???.net
- え?そんな機能あったか?
- 378 :373:2014/05/08(木) 22:24:36.95 ID:???.net
- POST前ポップアップってこれのことね。
http://cdn-ak.f.st-hatena.com/images/fotolife/c/cakephper/20130211/20130211223324.png
もしかして俺何か勘違いしてるかな…
- 379 :nobodyさん:2014/05/08(木) 22:33:24.56 ID:???.net
- ブラウザさん
- 380 :nobodyさん:2014/05/09(金) 00:28:49.07 ID:???.net
- ブラウザが出してるやつかな
- 381 :nobodyさん:2014/05/09(金) 00:37:04.59 ID:???.net
- >>379-379
マジかwwChromeww本当にありがとうw
- 382 :nobodyさん:2014/05/09(金) 04:21:32.04 ID:???.net
- HTML5の話題でひとくくりにされてる最近のブラウザの機能やね。
CakePHPもFormHelperがそのための属性を出すようになったりはしてるけど。
- 383 :nobodyさん:2014/05/09(金) 10:16:45.79 ID:???.net
- クライアントバリデーションに任せっきりになってしまって、
悲惨なサイトが続出するような悪寒。
楽だし負荷軽減できるしで、いいことずくめなんだけど。
- 384 :nobodyさん:2014/05/09(金) 10:59:15.63 ID:???.net
- そうだね。悪い奴がいないと助かるんだけどね。
- 385 :nobodyさん:2014/05/09(金) 11:01:33.24 ID:???.net
- Controllerでバリデーションしなくて
Modelに移動するいい傾向になるだけでないかな?
- 386 :nobodyさん:2014/05/09(金) 13:43:36.22 ID:???.net
- いい傾向ってなんだ?
- 387 :nobodyさん:2014/05/09(金) 13:51:32.25 ID:???.net
- Fat Modelのことかと思われ
- 388 :nobodyさん:2014/05/09(金) 14:56:57.61 ID:???.net
- サーバーサイドのバリデーションをしなくていいわけじゃないから、負荷軽減にならなくね?
ちゃんと機能するようにつくれば、無通信でユーザーに間違い見せれて、
使いやすくいフォームにはなると思うけど。
- 389 :nobodyさん:2014/05/09(金) 15:49:02.85 ID:???.net
- ブラウザで弾いておいたらサーバー側での試行回数は減るだろ。
正常系の負荷はもちろん変わらんけど。
- 390 :nobodyさん:2014/05/09(金) 18:26:07.60 ID:???.net
- 初心者なんすけど
モデルの使い道がよくわかんないっす。
何から何までコントローラーで処理しちゃってモデルはスッカラカンです。
どなたかモデルの使い道というか便利さを三行で説明しなさい。
- 391 :nobodyさん:2014/05/09(金) 18:27:49.70 ID:???.net
- >>388
HTTPの勉強をもっとしましょう。
- 392 :nobodyさん:2014/05/09(金) 18:46:15.86 ID:???.net
- >>390
俺も初心者だからよく分かってないが、
コントローラはモデルに作ったメソッドを呼ぶだけで、
ざっくりした条件分岐のみにとどめておくと後から非常に見やすい気がする。
- 393 :nobodyさん:2014/05/09(金) 20:58:13.09 ID:???.net
- やりすぎると Very Fat Model になってそれはそれで見難い
バランスというかセンスが問われる部分
- 394 :nobodyさん:2014/05/09(金) 21:01:03.07 ID:???.net
- >>390
単に好みの問題だから好きにすればいいんじゃないかな
モデルはどこからでも使える上にシングルトンっぽくインスタンスが1つだけなので
共通っぽいメソッドやクラスを実装するのにも使える
- 395 :nobodyさん:2014/05/09(金) 21:32:58.38 ID:???.net
- ああそうか、モデルはなんとなくテーブルに紐付くものみたいに思ってたが
ロジック処理だけのモデルがあっても良いよな
- 396 :nobodyさん:2014/05/10(土) 01:47:38.21 ID:???.net
- >モデルはなんとなくテーブルに紐付く
これは常にRORと、その派生のCakePHPに対する批判として挙げられてるね。
本来のModelとは全然違うって、激怒しているブログがあちこちにある。
なお、CakePHP3では大幅に改善されるみたいです。
- 397 :nobodyさん:2014/05/10(土) 07:20:47.11 ID:???.net
- >>389
ああ、まぁそりゃそうか。
といっても、負荷対策が必要な状況では、効果的な対策になるほどは減らないとは思うけど。
- 398 :nobodyさん:2014/05/10(土) 10:46:10.10 ID:???.net
- Cakeはエンティティを入れるのが遅すぎた
- 399 :nobodyさん:2014/05/10(土) 10:53:41.99 ID:???.net
- http://tech.itandi.co.jp/2014/04/cakephp%E3%81%8B%E3%82%89rubyonrails%E3%81%AB%E4%B9%97%E3%82%8A%E6%8F%9B%E3%81%88%E3%81%9F%E4%B8%89%E3%81%A4%E3%81%AE%E7%90%86%E7%94%B1/
1,3は同意できるところだが
2は会社のエンジニアレベルが低いとでも言いたいのか
- 400 :nobodyさん:2014/05/10(土) 11:01:56.24 ID:???.net
- 周りがCakePHPはRailsのパクリだっつーから使ってみたら
ActiveRecordの超絶劣化っぷりにびびった
Railsも似非MVC2になりがちだけどCakeはそれ以前に
オブジェクト指向設計に真っ向から喧嘩売ってるレベル
- 401 :nobodyさん:2014/05/10(土) 12:53:17.49 ID:???.net
- そうやって批判する奴って何も具体的な事言えない奴ばかりだよな
実際どのくらいのスキルある奴なんだろう
- 402 :nobodyさん:2014/05/10(土) 14:23:07.62 ID:???.net
- Composerは確かにほかの言語のと比べて使いにくい印象はあるけど、
git submoduleしないとパッケージのバージョンを管理できないなんて、
なに言ってるかわからないレベルなんだが。
そんなことあるんかね?
- 403 :nobodyさん:2014/05/10(土) 15:56:06.47 ID:???.net
- お前らのMVCは間違ってる!ってRails式を散々disるスライドがあったが
ものがちゃんと作れれば別にいいわけで、正しいからどうだってのがよくわからん
- 404 :nobodyさん:2014/05/10(土) 17:17:38.04 ID:???.net
- >>401
DBから取ってきたデータがarrayになってる部分だと思われ
Cake3でようやくオブジェクトになるようだが
- 405 :nobodyさん:2014/05/10(土) 17:24:14.35 ID:???.net
- それよく聞くけど、オブジェクトの方が便利なん?
書き方が変わるだけのような気がするけど
- 406 :nobodyさん:2014/05/10(土) 17:30:12.91 ID:???.net
- Cake3を少し試してみたがEntity使えるだけでも結構変わるね
特にViewがスッキリするのはもちろんだけど今までHelperやControllerに溢れがちだったロジックもEntityクラスに置けるのが結構あるしテストも楽
array+Hash・Setに比べたら開発効率やコードの読みやすさは段違いに上がる
でも2から3への移行は大変そう
- 407 :nobodyさん:2014/05/10(土) 17:30:20.29 ID:???.net
- >>405
Modelのメソッドはすべてstaticです、なんて言ったらJavaやRubyなどのオブジェクト指向に
慣れ親しんだ人たちから見れば、なにそのふざけた設計は?とキレられるレベル
- 408 :nobodyさん:2014/05/10(土) 17:37:51.74 ID:???.net
- オブジェクトじゃないとActiveRecordパターンとは言えないからなぁ
- 409 :nobodyさん:2014/05/10(土) 20:22:57.11 ID:???.net
- arrayになった理由はCake1がPHP4をサポートしていたからだろうな
さすがにPHP4でオブジェクト指向にはできなかった、と
- 410 :nobodyさん:2014/05/10(土) 23:47:42.75 ID:???.net
- PHP4懐かしいな
修飾子やら例外やらオートローダーが無いとか
参照渡ししないとクローンになるとかいろいろあるが
ActiveRecordの足かせになりそうな制約はないな
- 411 :nobodyさん:2014/05/11(日) 13:33:38.34 ID:???.net
- 最近、嫌static厨が多くて困る
- 412 :nobodyさん:2014/05/11(日) 13:37:57.50 ID:???.net
- static に出来るものはそのほうが良いのにね。
見極めができないんかもな。
- 413 :nobodyさん:2014/05/11(日) 15:03:25.90 ID:???.net
- 「全部static」はさすがに嫌われて当然
- 414 :nobodyさん:2014/05/11(日) 15:07:39.63 ID:???.net
- さすがにそんなヤツはおらんやろ
- 415 :nobodyさん:2014/05/11(日) 15:08:05.37 ID:???.net
- staticとかpublicとか分別するとどんなメリットがあるの?もうおっさんだから、今だにわからない。
function hoge を _hogeにする時はあるけど。
どなたかご親切な人
わかりやすく教えてくれませんか?
- 416 :nobodyさん:2014/05/11(日) 15:18:12.11 ID:???.net
- >>414
CakeのModelはまさに「全部static」なんだが…
- 417 :nobodyさん:2014/05/11(日) 15:37:28.00 ID:???.net
- >>416
え
どこを言ってるんだろう
- 418 :nobodyさん:2014/05/11(日) 15:40:10.91 ID:???.net
- ん、Model.phpを「static」で検索してみたけどひとつもヒットしないよ
調べたverは2.4.6
cake3ではstaticになっているってこと?言葉の使い方がヘンなだけ?
- 419 :nobodyさん:2014/05/11(日) 18:47:27.75 ID:???.net
- >>399
> つまり結局はタイミングの問題でしかなくて、言語の優劣がどうとか、フレームワークの優劣がどうとか、といった観点は殆ど無く選びました。
つまり結局は、他に行ったから、とりあえず元鞘を叩いておくかっていう3流エンジニアの日常か
- 420 :nobodyさん:2014/05/12(月) 01:19:34.02 ID:???.net
- >>415
それマジで質問してるならこんなところにいないで
基本的なオブジェクト指向の勉強したほうが良いよ。
- 421 :nobodyさん:2014/05/12(月) 01:30:03.56 ID:???.net
- >>415
static のメリットをひとことで言うと、状態を持たない(状態が変化しない)
振る舞いを提供することにより、インスタンス化した場合に本来であれば考慮するべき
状態変化の副作用から開放されることではないかと。
まず間違いなく、テストは超簡単になる。
一方、アクセス修飾子のメリットはひとことで言うと
安全な設計が簡単にできるってことではないかと。
その点 CakePHP はメンバー変数の修飾子に public を使いまくってて恐ろしいほどではある。
- 422 :nobodyさん:2014/05/12(月) 01:35:05.49 ID:???.net
- 俺もstaticって使いどころがいまいちわからん。
特にphpはランタイムが短すぎて、1回しか使わないオブジェクトが多く、
staticを変に意識すると、むしろなんでもstaticでいいんじゃないかと思えてきてしまってこわい。
逆にstaticにしないと困るような事も、あんまないから、よくわからないままで結局staticは使わないという
>>415
たとえばモデルに、とある機能を作ってたら100行を超える長いメソッドになってしまい、一部を切り出したけど、
コントローラーから直接切り出したメソッドを呼ばれるのは想定外って場合に、
protectedかprivateにしておけば、呼ばれることがない。
protectedとprivateは、コントローラーやモデルを触ってるくらいなら、
正直使い分けが活きることがほとんどない気がする。
強いて例を出すと、AppController内の処理で切り出したメソッドが、ほかのコントローラーから呼ばれるのが想定外なら、
privateにしておくと呼ばれなくなる。
- 423 :nobodyさん:2014/05/12(月) 01:45:18.99 ID:???.net
- >>422
>なんでもstaticでいいんじゃないかと
だけどオブジェクトの状態に依存しないメソッドなんて
そうそう作る機会はないと思うんだが、
もし可能なら作って問題無いと思うんだけど?
というか、むしろ作るべき。
- 424 :nobodyさん:2014/05/12(月) 02:01:04.78 ID:???.net
- >>423
もちろん、思えてきてしまうだけで、よく考えるとダメな事がほとんどなんだけどね。
クラスやメソッドを書き始めるときに、まずこれはstaticにできるか?
と考えると、問題ないような気がしてしまうんよ。
そういえば、かなり昔だけどCakePHPを使い始める前のオレオレフレームワークでは、
データベースアクセスするとこ全部staticメソッドにしちゃってたなぁ。
いわゆるCRUDに対応したメソッドがあるだけだったし、データはオブジェクトじゃなくて連想配列だったから、
インスタンスいらないなぁと思って。
あとバリデーターもstaticメソッドだったなぁ。
バリデーションはコントローラーでやってたから、CakePHPでいうバリデーションルールの配列みたいなのは、
コントローラーに書いて、AppController的な親にvalidateメソッドを作ってた。
- 425 :nobodyさん:2014/05/12(月) 02:19:15.31 ID:???.net
- このスレにはガチのstaticおじさんが居る気がする
- 426 :nobodyさん:2014/05/12(月) 04:23:13.01 ID:???.net
- cakeってfindがstaticでないのが不思議でしょうがない
- 427 :nobodyさん:2014/05/12(月) 10:30:47.47 ID:???.net
- >CakePHPのModelはまさに「全部static」
言いたいことは何となく分かる
他のフレームワークだとModelのstaticメソッドがテーブル(Repository)の操作
インスタンスメソッドがレコード(Entity)ごとの操作に対応してるのが多い
CakePHP2まではEntityがないので
そういう他のFWから入ってModelのインスタンスはEntityだろと決めつけてかかると
ModelにRepositoryの要素しかなくてfindもインスタンスメソッドという点に違和感をおぼえる
CakePHP3だとEntityクラスとTableクラスがそれぞれ用意されるからギャップが減る
クラスが分かれるからfindがインスタンスメソッドなのは変わらないけど
DDDを意識した設計で個人的には好感触
というか他のFWのstaticなfindも
RepositoryないしQueryに相当するオブジェクトのインスタンスメソッドに処理放り投げてるだけだろうし
ただ単に使い勝手とどこまでFWが暗黙的に処理するかってだけの問題な気がする
- 428 :nobodyさん:2014/05/12(月) 10:33:48.09 ID:???.net
- >>426
状態依存しないメソッドなら問題ないけど
CakePHP の Model のオブジェクトって状態を持ってるから無理だよ。
たとえば同じPostクラスのオブジェクトが2個あったとして
$Post1->id = 1;
$Post2->id = 2;
ってした場合にメソッドが static なら破綻する。
- 429 :nobodyさん:2014/05/12(月) 10:36:05.68 ID:???.net
- >>427
なるほど
- 430 :nobodyさん:2014/05/12(月) 10:47:42.76 ID:???.net
- >>428
findと何か関係あるのそれ?
- 431 :nobodyさん:2014/05/12(月) 11:14:24.54 ID:???.net
- cakeってTable Data Gatewayパターンだと考えれば普通なんだけどな
- 432 :427:2014/05/12(月) 11:59:05.87 ID:???.net
- >>430
例えを簡単にするつもりだったが $id は関係無かったか。
要するに find が参照するプロパティのうち
状態依存のものが沢山あるってこと。
例えば
$Post1->primaryKey = sid;
$Post2->primaryKey = cid;
とか
- 433 :nobodyさん:2014/05/12(月) 12:02:34.37 ID:U9jrOtar.net
- TreeBehaviorsについて質問なのですが、
moveUpやmoveDownがfalseを返してきてまったく動作しません。
発行したSQLを見ると、SELECT文ばっかりでUPDATEをやっていないように見えます。
どうやったら動かすことができるのでしょうか。
- 434 :nobodyさん:2014/05/12(月) 12:18:35.60 ID:???.net
- >>433
スキーマ、レコード、moveUp moveDown のコード、クエリ
この辺を貼り付けてみて
- 435 :nobodyさん:2014/05/12(月) 12:38:18.89 ID:???.net
- CakePHPって3でActiveRecordを採用するんだったよな
- 436 :nobodyさん:2014/05/12(月) 13:15:30.27 ID:???.net
- >>434
DBやレコードはお客のやつなんでまずいんです。ごめんなさい。
スキーマにはちゃんと
parent_id, lft, righ の定義はしてあって、moveUp, moveDown以外のツリー動作は
問題なく動作しています。
public function moveup($id = null) {
$this->Category->id = $id;
$res = $this->Category->moveUp($this->Category->id, abs(1)) ;
debug($res);
}
- 437 :nobodyさん:2014/05/12(月) 13:24:21.16 ID:???.net
- >>432
CakePHPのモデルが状態を持ってることが、むしろ混乱の元になってる気がするけどな。
ループ内でsaveするならcreateしろ、とか。
結局find()したら連想配列を返すし、save()だってモデルにデータ持たせたりせずsave()に引数渡すことばかりじゃない?
よく使うfindとsaveで違和感を感じるだけで、インスタンスである必要な機能もあるけど。
まぁ言いたい事はたぶん >>427 と似たようなことなんだろうけど、
ほかのフレームワークをあまり触ってないから、違和感レベルでしか語れない。
- 438 :nobodyさん:2014/05/12(月) 13:36:54.55 ID:???.net
- >>436
じゃぁ、verify() した結果を見たらヒントがあるかも
debug($this->Category->verify());
どこかで整合性が崩れてると実行されない可能性有り。
- 439 :nobodyさん:2014/05/12(月) 13:49:48.47 ID:???.net
- >>438
ありがとうございます。試してみました。
verify()でしばらくかかりましたが、真っ白な画面がリターンされました。
これはツリーに不整合などの異常がなかったということですよね。
- 440 :nobodyさん:2014/05/12(月) 14:00:55.26 ID:???.net
- >>439
時間かかってなおかつ白い画面ってことはタイムアウトですね。
かなり大きいんですね。
成功すれば bool(true) が返る。
Shell でやってログに書き込んで確認してみたらいいかも。
- 441 :nobodyさん:2014/05/12(月) 14:03:28.70 ID:???.net
- タイムアウトで白い画面って・・・もしかして本番環境・・・?
- 442 :nobodyさん:2014/05/12(月) 14:04:31.37 ID:???.net
- TreeBehavior 適用してるテーブルに他のモデルから更新したら
整合性グチャグチャになるから注意
- 443 :nobodyさん:2014/05/12(月) 14:10:08.15 ID:???.net
- >>440
ありがとうございます。お察しの通りノードが3万以上あるツリーなのです。
白画面はタイムアウトですか。勉強になりました。
TeraTermからサーバにログインし curl コマンドでverifyのURLにアクセスしましたが、
ブラウザから呼んだ時とは違い、瞬時にプロンプトが返ってきてしまいます。
シェルでverifyを実行とは、具体的にはどうすればいいのでしょうか?
- 444 :nobodyさん:2014/05/12(月) 14:11:10.17 ID:???.net
- >>441
いいえ、本番のデータをまるまるコピーしてきましたが、デバッグ環境です。
- 445 :nobodyさん:2014/05/12(月) 14:12:13.34 ID:???.net
- >>442
他のモデルからTreeを適応しているテーブルには書き込みしに行っておりません。
- 446 :nobodyさん:2014/05/12(月) 14:13:55.11 ID:???.net
- debug=2でタイムアウトしたら
Fatal error: Maximum execution time of 30 seconds exceeded in
ってでないっけ?
- 447 :nobodyさん:2014/05/12(月) 14:15:27.41 ID:???.net
- >>446
Configure::write('debug', 2);
でやりましたが、白画面でした。
- 448 :nobodyさん:2014/05/12(月) 14:27:56.28 ID:???.net
- Console/commant/VerifyHogeShell.php
classVerifyHogeShell extends AppShell {
protected function result() {
$Hoge = ClassRegistry::init('Hoge');
return $Hoge->verify();
}
public function show() {
debug($this->result());
}
public function dump() {
//!TODO ログに書き込むロジックを記述
}
}
こんなファイルを作って
$Console/cake VerifyHoge show
とか
$Console/cake VerifyHoge dump
とか
Shell の作り方・使い方はぐぐれば幾らでも出てくる
- 449 :nobodyさん:2014/05/12(月) 14:31:07.10 ID:???.net
- >>443
cURLからアクセスしても最大実行時間は一緒だ。
コンソールからPHPプロセスを利用しなきゃ。
php のユーザーが誰かってことが抜け落ちてる。
- 450 :447:2014/05/12(月) 14:32:38.76 ID:???.net
- 1行目ミスった
>Console/commant/VerifyHogeShell.php
Console/Command/VerifyHogeShell.php
- 451 :nobodyさん:2014/05/12(月) 14:37:04.67 ID:???.net
- >>449
>>449
ありがとうございます!
AppShellなるクラスが用意されていたのですね。知りませんでした。
さっそく試してみます。
- 452 :447:2014/05/12(月) 14:41:43.59 ID:???.net
- TeraTerm ってことは Windows か。
わかってるだろうけどコマンドのディレクトリセパレータは / じゃなくて \ な。
- 453 :nobodyさん:2014/05/12(月) 15:16:40.76 ID:???.net
- >>449
>>449
verify()をShellから実行した結果、180超のエラーが出力されました。
特に多いのは index missingというやつです。
recover() で回復できますでしょうか?
- 454 :nobodyさん:2014/05/12(月) 15:22:02.02 ID:???.net
- >>453
以前自分も同じようになったときは、
recover()で上手く言った場合とそうでない場合とがあった。
上手く行かなかったときは時間もなかったんで、
独自でスクリプト書いてで lft と rght を振り直した。
すまんが深く探ってないんで、それ以上詳しいことはよく分からん。
一度やってみろとしか言えない。
- 455 :nobodyさん:2014/05/12(月) 15:24:38.22 ID:???.net
- あと、verify() でエラーが出たってことは
これからも同じ問題が発生するおそれがあるんで、
更新処理を全て点検したほうがいいな。
テストを良く書けているかどうかで、こういうときに大きく差が出る。
- 456 :nobodyさん:2014/05/12(月) 15:27:51.20 ID:???.net
- Treeビヘイビアを使ってカテゴリ管理って難しいよね。
不特定多数のカテゴリを扱うとかなったら、
今回のような問題が起きてしまう可能性があるし
- 457 :nobodyさん:2014/05/12(月) 15:28:47.24 ID:???.net
- 連投すまんが、今の状態だと recover 走らせる時もめちゃくちゃ時間かかるはずだから、
必ず Shell から実行すること。
更新中にタイムアウトなんかしたら(特にMySQLのMyISAMなどは)やっかいなことになる。
- 458 :nobodyさん:2014/05/12(月) 15:35:37.85 ID:???.net
- >>456
入れ子集合モデルは更新コストが激高だからな。
場合に応じて使い分けるしか無いと思われ。
- 459 :nobodyさん:2014/05/12(月) 15:38:35.35 ID:???.net
- >>454-456
アドバイスありがとうございます。
>これからも同じ問題が発生するおそれがあるんで、
お客が不正に行ったデータのInsertなどが原因だった可能性もありますが、
プログラムのほうも確認しておきます。
recover()もShellから実行しました。案外完了が早かったように思います。
今2度目のverify()です。
- 460 :nobodyさん:2014/05/12(月) 16:13:23.60 ID:???.net
- >>454
verify()でtrueが返りました!
moveUp()をあるノードで実行して結果をdebug文で出すとtrueが返りました。
しかし、treeには何の変化もなし!ノードの位置は一切変わっていません。
なぜなのでしょうか・・・。
- 461 :459:2014/05/12(月) 16:28:51.15 ID:???.net
- 連投で申し訳ありませんが、moveUp(), moveDonw()の仕様を根本的に勘違いしていました。
bookを読むと 同じ枝の中で順番を上に上げるのがmoveUp()なのですね。
僕はそもそもmoveUp()したノードは「一つ階層を上がって、今までの親ノードと同じ階層に来る」
ということを実現するものなのかと勘違いしておりました。
申し訳ありませんでした。しかしverify, recoverをshellから実行するなどの貴重な情報が得られて
感謝です。
- 462 :nobodyさん:2014/05/12(月) 16:30:16.90 ID:???.net
- 階層を変えるなら parent_id を変更する
- 463 :nobodyさん:2014/05/12(月) 16:31:48.27 ID:???.net
- >>462
そうですよね。
しかしparent_idを手でいじって、lft, rghtがそのままで良いのかというのが気になる点です。
- 464 :nobodyさん:2014/05/12(月) 16:32:41.62 ID:???.net
- >>461
ちょっと興味あるんだが、レコード何件あんの?
- 465 :nobodyさん:2014/05/12(月) 16:33:45.39 ID:???.net
- >>463
>parent_idを手でいじって
ちがーーーう!
TreeBehaviorが効いてるモデルでやるんだよ!!
- 466 :nobodyさん:2014/05/12(月) 16:38:21.01 ID:???.net
- >>465
3万件超あります。
>>465
もちろん、DBから直接parent_idを変えたりしませんよ。
CakephpのEdit画面(もちろんTreeのモデルのもの)から変えます。
- 467 :nobodyさん:2014/05/12(月) 17:32:11.61 ID:???.net
- >>464
んん、3万件オーバーでTreeBehaviorか。。。
ブラウザからの更新はちょっとキツイかもな。
- 468 :nobodyさん:2014/05/12(月) 17:34:01.92 ID:???.net
- >>466
>CakephpのEdit画面(もちろんTreeのモデルのもの)から変えます。
なら問題なく lft, rght 変更してくれる。
っつーか、それがTreeBehaviorの仕事だからな。
- 469 :nobodyさん:2014/05/12(月) 17:45:37.30 ID:???.net
- 改めて思うけど、カテゴリの設計って難しすぎるな
- 470 :nobodyさん:2014/05/12(月) 17:54:12.62 ID:???.net
- >>467-468
ありがとうございます。
parent_idを変更すると、思っていた階層の移動が完了できました。ご迷惑をおかけしました。
カテゴリはこれからも増えていく可能性があるので、
このままTreeBehaviorを実装していて安全なのかちょっと心配しています。
親子関係を実現するには普通にHABTMでもいいのではないかな、と思いましたが、
設計段階でTreeの採用が決まっていたので、これで作ってしまっています。
データ件数がでかくなった今、非常にデリケートなデータ構造なんだな、と改めて認識しております。
- 471 :nobodyさん:2014/05/12(月) 18:14:56.49 ID:???.net
- >>469
さらにそれを管理してくのが苦痛。
- 472 :nobodyさん:2014/05/12(月) 18:30:07.53 ID:???.net
- >>470
親子関係でHABTMってどうやるんだ
- 473 :nobodyさん:2014/05/12(月) 19:01:06.74 ID:???.net
- >>472
・categories
・articles
・category_articles(中間テーブル)
みたいなテーブルを作る
- 474 :nobodyさん:2014/05/12(月) 19:02:02.02 ID:???.net
- ごめん。中間テーブルの名前を間違えた。
categories_articlesだったかな。
- 475 :nobodyさん:2014/05/12(月) 19:42:05.93 ID:???.net
- >>472
Categoryモデルの中に
public $belongsTo = array('Parent' => array('className' => 'Category',));
public $hasMany = array('Children' => array('className' => 'Category'));
と二つ記述するやりかたですかね。
それを最初に思いついたのです。
しかしTreeのほうが上ではないかという意見が出たため、そっちを採用しました。
- 476 :nobodyさん:2014/05/12(月) 19:50:22.00 ID:???.net
- >>472
だからHABTMじゃないですね。ごめんなさい。
言うならばHas Many and Belongs to Oneでしょうか。
- 477 :nobodyさん:2014/05/13(火) 16:37:41.63 ID:???.net
- ありゃ、もう2.5.0出たのか。
なんか最近CakePHPのバージョンあがるの早い気がするけど、気のせいか?
- 478 :nobodyさん:2014/05/13(火) 16:39:47.73 ID:???.net
- >>477
年取っただけだと思う。
時代の流れが早く感じるよな。
- 479 :nobodyさん:2014/05/13(火) 16:44:46.95 ID:???.net
- 2.6も予定されてるのかよ。
さっさと3出して、2は打ち止めでいいだろ。
- 480 :nobodyさん:2014/05/13(火) 17:43:09.45 ID:???.net
- 今のCakeって$usesに書いてあるモデルは実際使われるまで読まれないんだよね?
ということは存在する全モデルを常に書いてもいいってこと?
- 481 :nobodyさん:2014/05/13(火) 18:12:50.09 ID:???.net
- ぜんぜん良くはねーと思うが、負荷にはならんだろうな
- 482 :nobodyさん:2014/05/13(火) 22:34:11.52 ID:???.net
- >>480
「今の」ってバージョンいくつからそうなったの?
- 483 :nobodyさん:2014/05/13(火) 22:43:15.01 ID:???.net
- 2.x
- 484 :nobodyさん:2014/05/14(水) 00:35:48.56 ID:???.net
- サンクス。普段は2系使ってるから特に問題ないな
- 485 :nobodyさん:2014/05/14(水) 02:38:22.28 ID:???.net
- プログラミングするとき3行毎に動作確認しないと
不安で死ぬやつって俺だけ?
- 486 :nobodyさん:2014/05/14(水) 04:51:26.28 ID:???.net
- 3行は短すぎるが、ちゃんと小さい処理単位でメソッドを分けておけば、
まとめて動作確認してもデバッグしやすいよ。
あとはテストを書け
- 487 :nobodyさん:2014/05/14(水) 07:02:10.89 ID:???.net
- そんなあなたにテストファースト
- 488 :nobodyさん:2014/05/14(水) 10:05:36.21 ID:???.net
- ぶっちゃけ、テストの利点が分からないの俺だけ?
- 489 :nobodyさん:2014/05/14(水) 10:09:17.84 ID:???.net
- さすがに君だけじゃない?
- 490 :nobodyさん:2014/05/14(水) 11:29:01.43 ID:???.net
- 最初のうちは、いまいちわからんかもね。
インターフェースのテストで、mockの使い方がわかってくるようになると、考え方が変わるかも。
- 491 :nobodyさん:2014/05/14(水) 12:33:17.82 ID:???.net
- >>490
俺も教えて欲しいんだけど
テスト書くのが面倒
テスト自体信用できない
書いてもやっぱり最初から書きたくなる
って思ってしまうんだけどそれでも書いた方がいいと思う?
できるプログラマーの人はみんな書いてるよね。
- 492 :nobodyさん:2014/05/14(水) 12:42:45.04 ID:???.net
- >>491
結論としては書くべきでFA
そのことがわかるには経験が必要
てことだと思う
- 493 :nobodyさん:2014/05/14(水) 12:51:30.16 ID:???.net
- サービスが稼動を始めてから、数ヶ月経った後くらいに、
誰かのひどいコードを見つけた時、
テストを書いてあれば・・・と思うよ。
- 494 :nobodyさん:2014/05/14(水) 13:38:02.11 ID:???.net
- view (.ctp) ファイルのテストってどうやってやるんだろう。
- 495 :nobodyさん:2014/05/14(水) 14:02:28.89 ID:???.net
- そこまでテストする必要があるのかはよく考えたほうが良いように思えるけど、
やるならSelenium使うんじゃない?
- 496 :nobodyさん:2014/05/14(水) 14:08:25.34 ID:???.net
- テスト=コードが正しく動作するか確かめる
ではないんだよね?これはブラウザで確認すればいいだけだし、
大体はコード書いた後に実行して確かめているだろ。
具体的にどういう場面でテストが必要になるの?
- 497 :nobodyさん:2014/05/14(水) 17:09:00.17 ID:???.net
- ユニットテストとユーザテストごっちゃにしている時点でなんだかな。
- 498 :nobodyさん:2014/05/14(水) 17:52:25.48 ID:???.net
- >>496
> 大体はコード書いた後に実行して確かめているだろ。
一度書き捨てて終わらせられるなら誰も書く訳がない
改修は何度も発生する=確認も同じだけ発生する=クッソ面倒
だから面倒な確認を自動化するためにテストを作るんだ
- 499 :nobodyさん:2014/05/14(水) 20:45:44.91 ID:???.net
- というよりさ!
まずテストコードってなんなの?
console.log()とは違うの?
- 500 :nobodyさん:2014/05/14(水) 21:02:32.76 ID:???.net
- お前のテスト(むしろconsoleデバッグ?)
→ 逐一人の手で実行して人間がブラウザやconsoleに表示された値やを見て想定したものかどうか確認する
自動化できてない
複数の関数やメソッドが絡むとバグの原因の特定がしづらい
他の皆の意図するテスト(単体テスト)
→ それぞれの関数やメソッドが複数の引数のパターンに対し適切な返り値を返したり
例外やエラーを吐いたりなど仕様通りの挙動をするかを確かめるコードを書く
検証する対象が小さいので比較的簡単に書けるし自動化も容易い
プログラムの小さい単位の動作をあらかじめ保証しておくことで
後の複数の関数やメソッドが絡むテストの際にもバグの原因の特定がしやすくなる
面倒だから単体テストでググれ
- 501 :nobodyさん:2014/05/14(水) 21:19:27.30 ID:???.net
- さっぱり意味が分からん
- 502 :nobodyさん:2014/05/14(水) 21:51:05.96 ID:???.net
- 例えば「足し算」ていうメソッドを作成したとする。
これは引数に例えば「1と2を入れると3が返る」というもの。
1「テストを書かないやりかた」
こんな簡単なメソッド、どうやってもミスるわけない。
とりあえず作る。最初に動くか確認する。
動いた・・・終わり
2「テストを書くやりかた」
「1と2を入力すると3が返る」というテストを書く。
開発しながらテストを走らせて正常か確認する。
テストが異常なら、異常がなくなるまでプログラムを修正する。
これをずっと繰り返す。
3「テストを先に書くやり方」
2のテストを先に書く。メソッドは空からスタート。
テストが通るまで開発を行う。
- 503 :nobodyさん:2014/05/14(水) 21:56:32.40 ID:???.net
- console.logは、phpでいえばvar_dumpとかになるなんだろうが、
使うときにコメントイン/アウトしなきゃいけないし、消し忘れるとそれがそのまま出力されて大変なことになる(センシティブな情報だったら・・・)。
- 504 :nobodyさん:2014/05/14(水) 22:52:25.27 ID:???.net
- 上司がテストケース書いて、部下にそれに合うようなコードを書かせるってのなら良いと思う。
ただcakephp1が2になったりするとテストも書き直しだよね。
結局テスト書いてもそれ以上にプログラムの進歩が速いような気もするんだよね。
ちなみにヤフーとかって10年前くらいにcgiをphpに書き直したみたいなこと聞いたけど、あれ以来書き換えてないのかな。
それとも地道に書き換えまくってるのかな?
- 505 :nobodyさん:2014/05/14(水) 23:08:58.07 ID:???.net
- >ただcakephp1が2になったりするとテストも書き直しだよね。
いきなりスパン長い話になってね?
ビジネスロジックまで全部変わるわけじゃないんだからテストコードも一部はそのまま使えるでしょ
テストコードまったくなしに書きなおすよりはいくらか書きやすいと思う
- 506 :nobodyさん:2014/05/14(水) 23:36:50.08 ID:???.net
- >>500の説明で合ってるんだが、何がわからないのかわからない
- 507 :nobodyさん:2014/05/14(水) 23:52:50.14 ID:???.net
- >>506
ありがとう。そういうメリットもあるんですね。
>>506
わからない人にとっては全くわからないんだよね。テストケースのメリット。
俺、gitもテストケースも使ったことないというか使えないので勉強します。
- 508 :nobodyさん:2014/05/15(木) 00:48:57.49 ID:???.net
- なんだかんだ言って教えるのなw
- 509 :nobodyさん:2014/05/15(木) 01:04:25.59 ID:???.net
- 経験ないとわからないかもしれんね
愚者は経験に学ぶと言うけど人間なんて全員愚者だから、がんばって経験を積もう
- 510 :nobodyさん:2014/05/15(木) 02:16:19.81 ID:???.net
- >>496
こういう >>493 時に必要になるんだよ。
例えば1日の区切りが0時じゃなく4時なサービスがあるとしよう。
DateTimeオブジェクトや日時の文字列を受けて、何日かを返すメソッドがあるんだけど、
中身を見たらこりゃひどい実装だなという時、
テストがあれば、中身を書き換えても同じ結果を返す実装にできたとわかりやすい。
- 511 :nobodyさん:2014/05/15(木) 03:48:38.98 ID:???.net
- お前ら俺が以前テストの質問した時はスルーしたくせに
テストの話題で盛り上がりやがって
- 512 :nobodyさん:2014/05/15(木) 04:08:36.66 ID:???.net
- >>511
たぶんそれから必死で勉強したんだよ
- 513 :nobodyさん:2014/05/15(木) 10:33:38.61 ID:???.net
- >>510
>中身を見たらこりゃひどい実装だなという時、
>テストがあれば、中身を書き換えても同じ結果を返す実装にできたとわかりやすい。
ここが想像できないんだよ。中身(モデル?)が酷い実装っていうけど、
前は動いてたんだよな?それを変更する時に「酷い」が分かるんだろ?
なら、テストも書き直しだと思うんだよ。俺も>>504と同じ疑問を持ってる。
Cakeのバージョンアップではなくとも、仕様が変わればテストも変わるでしょ。
- 514 :nobodyさん:2014/05/15(木) 10:45:22.44 ID:???.net
- 0か1で考えてんな
少なくとも単体テストしやすいように設計してれば
仕様を変えた部分の他に影響がないことを保証しやすいんじゃないか
テストが書いてない誰かが作ったソフトウェアを改修する時に
あっち変えたらこっち動かなくなったよみたいな経験ない?
- 515 :nobodyさん:2014/05/15(木) 10:52:06.00 ID:???.net
- んじゃあ次はgitってなんなのよ?
- 516 :nobodyさん:2014/05/15(木) 11:08:32.04 ID:???.net
- >>515
俺も思うな。
一人で開発したことしかないからか、
前に戻したくなることなんてまず無い。
毎回、add、commitする手間の方が面倒な気がするけど。
ただ、いつでも何処にでも戻せる安心感ってのは大きいのかもしれない。
dropboxでも戻せるけどどこに戻せば良いのかすらわからない。
- 517 :nobodyさん:2014/05/15(木) 11:14:00.56 ID:???.net
- >>513
別人だけど、中身ってコードのこと言ってるんだろ。
テストが完璧な仕様を表したものだと仮定すると、
テスト通りに動く限りは、実装コードはいくら変えても構わない、という理屈。
テストコードの方も変える必要がない(というか、変えたら同一の保証ができなくなる)。
もっとも、リファクタリングの過程で、新しいクラスやインターフェースを追加、とかなることが多いから、
その場合は、テストも変えていく必要はあるけど。
- 518 :nobodyさん:2014/05/15(木) 11:25:10.47 ID:???.net
- バージョン管理してないとかマジか
まあ趣味で小規模のものならそれでもいいのかな…
- 519 :nobodyさん:2014/05/15(木) 11:31:50.75 ID:???.net
- >>516
一人で開発を数年やってるが仕事でも個人サービスでもgitは重宝してる
過去ログとして何をやったかが残ること。
複数同時に機能開発ができること。
gitなしにはもう生きられない。
テストはControllerのテストは書かない。
それより下位層は書いてる。
自分が書いたコードを忘れたころに重宝してる。
他の機能実装のために、さらに下位層を変更したときに重宝してる。
デプロイツールもなしには生きられんな。
- 520 :nobodyさん:2014/05/15(木) 11:48:03.50 ID:???.net
- >>518
残念ながら商用で10以上の製品を扱ってるんだ・・。
gitの前にSubversionを勉強したこともあったけど、
バージョン管理の利点があまり思いつかないんだよな。バックアップ以外で。
マイナーアップデートしてそれをgitで管理する程度ならいいだろうけど、
開発してたら頻繁に更新するわけだろ?コード間違えも多々ある。
なのに、どのタイミングでadd、commitするか分からんし、
毎回してたら515が言うように面倒だ。
- 521 :nobodyさん:2014/05/15(木) 11:52:50.01 ID:???.net
- >>514
例えばこの2ちゃんの掲示板。
名前とメールアドレスと本文入れて投稿すれば掲載される。
この一連の処理が正しく行われるかのテストを書くわけだろ?
で、そこに「画像を追加できる」という機能が加わったとする。
コントローラーとモデルとビューにコードを追加し、テストも書き直すよな?
なら、またテストのやり直しだ。
- 522 :nobodyさん:2014/05/15(木) 12:25:34.42 ID:???.net
- >>521
テストにもいろいろ種類があるが、ここで書け書け言われてるのは、
単体テストと呼ばれるやつな。
で、単体テストの場合、一連の処理をテストするんじゃなくて、
機能単位でテストする。
俺も理解は甘いから、機能単位と言い切って良いのかわからないけど。
なので >>510 のようなメソッドは、戻り値だけに着目すればよくて、テストが書きやすいんだけど、
コントローラーのテストはちょっと書きにくい。
コントローラーのメソッドはアクションで、実行されたあとの結果がいろいろあるからな。
- 523 :nobodyさん:2014/05/15(木) 12:37:38.37 ID:???.net
- >>521
あえて掲示板ということで、CommentsControllerのaddメソッドのテストで考えてみると
1 必須項目を省いてPOSTしたら、書けてない事
2 書き込み成功していいPOSTなら、書けてる事
3 名前を省略したら「nobodyさん」になる事
もっとあるとは思うけど、addメソッドのテストとして、こんなのを確認するテストを書いたとする。
「画像を追加できる」機能が必須項目じゃなければ、「画像を追加できる」を実装した後も、
このテストは3つの部分は期待通りに動いてることを確認できると思う。
で、画像を追加する投稿についてのテストをいくつか追記して、機能追加が完成できる。
この場合あくまでテストは追記だから、テストは書き直しとは言わないと思う。
画像が必須項目だったとしたら、1と2は書き直しになっちゃうだろうけど、これも微修正って範疇じゃないかと。
- 524 :nobodyさん:2014/05/15(木) 13:17:55.24 ID:???.net
- gitって、dropboxと違い
commitやマージが便利そうだな。
- 525 :nobodyさん:2014/05/15(木) 13:33:34.19 ID:???.net
- >>523
物凄く分かりやすい!参考になった。
つまり、その1〜3をこれまではブラウザでいちいち実行してたのを
テストコードさえ用意しておけば、自動で成否を出してくれるって事だよね?
それならテストを追加する意味もあるし、すごく便利だと思う。
- 526 :nobodyさん:2014/05/15(木) 16:23:27.92 ID:???.net
- >>525
伝わったようで何よりだけど、あげておとすようで悪いが、
質問してた人が言ってたようなデメリットもやっぱりあるよ。
実装が大きく変われば、さすがにテストも修正というより書き直しになるし、
あとさっきも書いたけどコントローラーはテスト書きにくい。
仕様変更で実装が大きく変わりやすい箇所でもある。
あと >>523 この例でいうと、「画像を追加できる」機能を追加した際、
ぶっちゃけテストなんてなくても1〜3は壊れないような実装になりそうな気がすごいする。
俺としては >>510 のような、ユーティリティ的なライブラリが、テストも書きやすいし恩恵も多いと思う。
実際困ったから書いたんだけど、時間というテストがめんどくさいデータで、
結局動作確認するには、4時丁度とその前後や、逆に0時丁度やその前後を引数に、呼んでみるしかないから、それってテストコードだしな。
で、ユーティリティだからサービスのいろんな箇所で呼ばれてて、ミスったときの影響範囲も広い。
なので、テストコードがないと、修正に及び腰になってしまう。
- 527 :nobodyさん:2014/05/15(木) 16:45:41.71 ID:???.net
- >>526
なんかよく分からなくなってきたな・・・。
コード書いて「こういうイメージ?」って聞こうとしたんだけど、
どう聞けばいいからすら分からず、固まってしまったよw
- 528 :nobodyさん:2014/05/15(木) 19:50:47.49 ID:???.net
- ここはなんのスレですか?
- 529 :nobodyさん:2014/05/15(木) 19:53:03.77 ID:???.net
- スレタイ読めないの?CakePHPのスレですよ?
ちなみにCakePHPにテストという機能がちゃんと用意されてますよ?
だからその事について話し合っているんですよ?
- 530 :nobodyさん:2014/05/15(木) 20:27:14.89 ID:???.net
- >>529
くわしく
- 531 :nobodyさん:2014/05/15(木) 20:53:28.94 ID:???.net
- >>530
http://book.cakephp.org/2.0/ja/development/testing.html
- 532 :nobodyさん:2014/05/15(木) 23:34:57.49 ID:???.net
- >>526
テストコードがないと及び腰ってのすごくわかる。
自分が作ったコードですら触りたくないもん。
- 533 :nobodyさん:2014/05/16(金) 13:54:12.18 ID:???.net
- では、先生方次は最近よく聞く
composerについて教えて下さい。
- 534 :nobodyさん:2014/05/16(金) 14:02:22.96 ID:???.net
- あとで知ったかで話すから、ちょっと勉強する時間をくれ
- 535 :nobodyさん:2014/05/16(金) 14:26:46.96 ID:???.net
- composerは依存する外部のライブラリ等を管理して
autoload処理までしてくれるもの
packgistに登録されているものの他に
gitやsvnとかで管理されているもの
zip等で落としてくるもの、PEARとかも管理できる
依存関係の解決や、バージョンアップの追従とかが簡単にできるのがいいね
更新時にスクリプト動かしたりもできるから、さらにいろいろ使えるよ
- 536 :nobodyさん:2014/05/16(金) 14:41:38.71 ID:???.net
- cakeはcomposer対応がめちゃくちゃ遅かったよな。
- 537 :nobodyさん:2014/05/16(金) 21:57:48.54 ID:???.net
- composerってRubyでいうとこのgem?
- 538 :nobodyさん:2014/05/16(金) 22:04:02.91 ID:???.net
- bundlerかな
- 539 :nobodyさん:2014/05/16(金) 22:12:07.93 ID:???.net
- >>538
なるほど、さんきゅー
- 540 :nobodyさん:2014/05/17(土) 02:35:10.07 ID:???.net
- routes.phpで指定できるURLのパターンに、DBから取得した値を設定することってできる?
例えば、
/domain/DB値 みたいな感じで
ちなみに、1.3系
- 541 :nobodyさん:2014/05/17(土) 03:35:24.78 ID:???.net
- >>540
2系では無理。routes.php のタイミングでは ClassRegistry がロードされていない。
1.3系は分からんが、やってみて確かめてみれば?
- 542 :nobodyさん:2014/05/17(土) 03:39:32.10 ID:???.net
- Model使わずに直接SQL叩けば宜し
- 543 :nobodyさん:2014/05/17(土) 05:32:08.69 ID:???.net
- >>540
うーん、たぶんできるんじゃね?
http://book.cakephp.org/2.0/en/development/routing.html#custom-route-classes
まず、カスタムルートクラスを使う。
Cookbookは英語しかないが、これ。
App::uses('CakeRoute', 'Routing/Route');
App::uses('ClassRegistry', 'Utility');
SlugRoute extends CakeRoute{
public function parse($url){
$parse = parent::parse($url);
$hoge = ClassRegistry::init('Hoge');
return $parse;
}
}
こういうカスタムルートクラス書いてみたら、$hogeにHogeのインスタンスがあることまでは確認した。
なお、phpがあるPCと、これ書いてるPHP別なので、上のコードにtypoがあるかもしれない。
カスタムルートクラスでApp::uses('ClassRegistry', 'Utility');することによる弊害があるかどうかは知らない。
- 544 :nobodyさん:2014/05/17(土) 11:47:50.48 ID:???.net
- >>543
それは単にルータのクラスをRouteから変更するだけじゃん。
ルーティングのタイミング(routes.php の読み込み)は一緒だから
Model のインスタンス取得できないんじゃないかってことなんだけど。
- 545 :nobodyさん:2014/05/17(土) 11:54:40.61 ID:???.net
- すまん、言葉足らずだった。
ルータのクラスを変更することは
ここでは問題になってないってことを言いたかっただけ。
で、今 routes.php で App::uses('ClassRegistry', 'Utility');
して Model のインスタンス取得したら問題なく動いたわ。
副作用は知らん。
1.3系は ClassRegistry ってないんだっけ?
途中から出来た?
その辺はよく分からん。
- 546 :nobodyさん:2014/05/17(土) 12:16:13.55 ID:???.net
- WordPressが記事URLのルーティングを管理画面から変えられるけど、
あんな感じにできれば便利だなとは思う
- 547 :nobodyさん:2014/05/17(土) 12:21:13.08 ID:???.net
- 確かにそうだよな。
もっと初期段階でモデルにアクセスできる仕組みのほうがいい気がする。
他のFWとかのプロセスってこの辺りどうなってんのかな。
俺はCakeしか知らないから。
- 548 :nobodyさん:2014/05/17(土) 12:58:47.14 ID:???.net
- >>547
全体のローダーとルーティングで制限がかかるローダーはタイミングが別なものが多いよ
前者でモデルの読み出しができれば使える感じ
- 549 :nobodyさん:2014/05/17(土) 13:17:23.08 ID:???.net
- で、結局何が問題なの?
App::uses('ClassRegistry', 'Utility'); で初期段階でモデルにアクセスも出来たし、
あとはカスタムルートクラスで好きなようにパースして返せば、
良い書き方かはおいといて、動きそうな感じはしてるんだけど。
- 550 :nobodyさん:2014/05/17(土) 13:46:47.18 ID:???.net
- うん、行ける気がする
で、>>549 こそ何が問題なの?
- 551 :nobodyさん:2014/05/18(日) 01:51:53.74 ID:???.net
- >>550
質問に対してこれでできんじゃね?って方法を書いただけだから、
こっちに問題はないけど。
- 552 :nobodyさん:2014/05/18(日) 02:42:01.29 ID:???.net
- この板、IDでないから誰が何喋ってんのか全く分からんw
- 553 :nobodyさん:2014/05/18(日) 04:33:21.19 ID:???.net
- ところで、ClassRegistryが出てきたからついでに聞きたいんだけど、
new Hoge()じゃなくてClassRegistry::init('Hoge')が推奨されるのってなんで?
昔コントローラーじゃないところでモデル使うことがある時、
new Hoge()してるって言ったら、だめって言われたことあるんだけど、
まだ初心者だったら理由までは教えてもらえなかったんだよね。
よくわからないまま、ClassRegistry::init()を使うようにだけしてるんだけど、
理由知りたい。
- 554 :nobodyさん:2014/05/18(日) 11:39:16.13 ID:???.net
- newしたら初期化されるじゃん
- 555 :nobodyさん:2014/05/18(日) 12:23:32.63 ID:???.net
- phpunitのテスト駆動開発について。
テストを先に書くということですが、
メソッドを先に書く場合もありますか?
- 556 :nobodyさん:2014/05/18(日) 12:34:06.68 ID:???.net
- また、掲示板サイトを作る場合、
記事を書く
記事を見る
記事を削除
の3つのケースを先に書いてテストし実装する
もしくは一つの機能ごとにテストを書く実装する、のどちらが良いのでしょうか。
- 557 :nobodyさん:2014/05/18(日) 18:19:05.82 ID:???.net
- >>556
テストを先に書くことがテスト駆動開発の必須条件の一つだと思うんだけど、
別に原理原則にこたわることもないと思われ。
ただ、教科書的にはまずテストを書いて赤色から発進するのが通則。
>>556
テスト駆動開発は、一般的にはアジャイル開発の一部とされている
(たぶん、そうじゃない場合もあるはずなんだけどあまり記憶に無い)ので
単純なテストからだんだん複雑にして行くことを前提に、
最初は簡単な「記事を書く」テストを書いて実装して
簡単な「記事を見る」テストを書いて実装して、
簡単な「記事を削除」テストを書いて実装して・・・ってことなんじゃないかな?
だけどそれも程度によるだろうから、最初はざっくりアウトライン的に
全体を作って、作りこむに従って単体テストを増やしていったりテスト自体を
詳細にコーディングするってことでいいんじゃないかな?
- 558 :nobodyさん:2014/05/18(日) 18:27:15.17 ID:???.net
- >>557
ありがとうございます!
勉強になります。
- 559 :nobodyさん:2014/05/18(日) 23:31:40.02 ID:???.net
- まぁ自分で書いておいてこんなこと言うのもあれだけど、
TDDに限らず、ここで聞くより専門の書籍を一冊買って
それを読んで体系から身につけたほうがいい。
- 560 :nobodyさん:2014/05/19(月) 16:50:44.06 ID:???.net
- 画像のバリデーションで、画像をアップロードしていない場合は
バリデーション自体を中止したいのですが、良い方法はないでしょうか?
以下のようなルールをモデルに書いています。
'image' => array(
array(
'rule' => array('extension', array('jpg', 'jpeg', 'gif', 'png')),
'message' => '拡張子が違います',
'allowEmpty' => true,
)
)
- 561 :nobodyさん:2014/05/20(火) 15:39:04.32 ID:RIYxfxGy.net
- hasManyとfindについて質問です。
営業 1−多 顧客
というリレーションがあったとします。
営業 hasMany 顧客 と営業モデルに書いています。
そこで営業コントローラから 「顧客を一件ももっていない営業」をfindする方法がどうしても
思い浮かびません。
どうかヒントをいただけませんでしょうか。
- 562 :nobodyさん:2014/05/20(火) 15:56:13.36 ID:???.net
- 営業 hasOne 顧客 というアソシエーションを一時的に張って、
検索条件を
'顧客.id' => null
とすれば行ける気がするのだがどうだろう。
あと、カウンターキャッシュという裏ワザもあるが、
アプリケーション依存になるんで一長一短。
- 563 :nobodyさん:2014/05/20(火) 16:02:52.95 ID:???.net
- >>562
なるほど!試してみます。ありがとうございます。
- 564 :nobodyさん:2014/05/21(水) 16:47:46.18 ID:???.net
- クックパッドってCake使ってるのかな?
なんかURLのルールが似てる気がする
- 565 :nobodyさん:2014/05/21(水) 18:35:00.58 ID:???.net
- >>564
Railsじゃなかった?今は知らんけど
- 566 :nobodyさん:2014/05/21(水) 19:54:17.38 ID:???.net
- ああ、Railsだから似てると感じるのか
- 567 :nobodyさん:2014/05/25(日) 12:26:20.21 ID:???.net
- cakeとciのActiveRecordって
PofEAAのActiveRecordと違うと思うんだけど。何を元にしてるの?
- 568 :nobodyさん:2014/05/25(日) 13:21:00.24 ID:???.net
- CakePHPにActiveRecordは実装されていない
- 569 :nobodyさん:2014/05/25(日) 14:22:54.54 ID:???.net
- AppControllerを継承したクラスを継承したコントローラで
AppControllerに書かれた$uses、$componentsが使えない(マージされない)問題は
Cake2では直ってるんだっけ?
今確認できないのでどなたか教えてください
- 570 :nobodyさん:2014/05/25(日) 16:32:17.75 ID:???.net
- >>569
Dispatcher でリフレクション呼び出してあれこれゴニョゴニョしてるんで、
多分大丈夫。
正式なアナウンスは知らん。
- 571 :nobodyさん:2014/05/26(月) 20:03:50.85 ID:???.net
- >>569
その問題、今初めて知ったわ。
- 572 :nobodyさん:2014/05/26(月) 21:17:51.86 ID:???.net
- 久しぶりに自分が作った1.3のソース触ったけど、糞すぎて情けなくなる・・・
- 573 :nobodyさん:2014/05/26(月) 21:34:55.75 ID:???.net
- オレの1.2のコードをやるから、その汚い糞を拭き取れ。
- 574 :nobodyさん:2014/05/28(水) 12:20:55.53 ID:???.net
- カテゴリの状態を維持したまま別のコントローラーを実行するための
ルーティングってどう書けばいいですかね?
/hoge/ →Categoryモデルのname「hoge」
/hoge/news/ →Newsモデルのcategory_nameが「hoge」
/hoge/news/detail/1 →Newsモデルのidが1でcategory_nameが「hoge」
こういう場合、hogeの箇所(カテゴリ名)が不特定文字列なので
どういう書き方をすればいいか悩んでいます。cake2系です。
- 575 :nobodyさん:2014/05/28(水) 12:29:00.97 ID:???.net
- Router::routes(array('/:category/'), array('controller' => 'categories'));
Router::routes(array('/:category/:controller/'));
Router::routes(array('/:category/:controller/detail/:id'));
でどう?
- 576 :nobodyさん:2014/05/28(水) 12:33:07.08 ID:???.net
- あと、第三パラメータで正規表現でのフィルタリングができるんで、
3つ目のURLパターンにおいてIDは数値と決まっているなら
Router::routes(array('/:category/:controller/:id'), array(), array('id' => '[0-9]+'));
とすることで
/hoge/news/1
をマッチさせることが出来ると思う。
- 577 :573:2014/05/28(水) 13:36:48.07 ID:???.net
- >>575-575
ありがとうございます。この方法ですが、
他のコントローラーと共存させたい場合はどうなるのでしょうか?
/contacts/ お問い合せ用のコントローラー
/faqs/ FAQ用のコントローラー
などがサイトに存在する場合、おかしくなるような気が・・。
そういう場合は、固定のコントローラーを
ルーティングに書いていけばいいんですかね?
Router::routes(array('/contacts/:action'), array('controller' => 'contacts'));
- 578 :nobodyさん:2014/05/28(水) 13:55:25.16 ID:???.net
- 問題ない。
ルーティングは単純な正規表現を先頭からマッチさせていくだけ。
で、最後の最後に通常のマッチングがコアの方に用意されている。
- 579 :nobodyさん:2014/05/28(水) 13:56:01.83 ID:???.net
- あ、問題あるわ。すまんw
- 580 :nobodyさん:2014/05/28(水) 13:56:49.69 ID:???.net
- >そういう場合は、固定のコントローラーを
>ルーティングに書いていけばいいんですかね?
>Router::routes(array('/contacts/:action'), array('controller' => 'contacts'));
そうですね。
- 581 :573:2014/05/28(水) 15:29:39.46 ID:???.net
- >>580
ということは、固定のコントローラーは全てルーティングに書く必要があるんですね。
そうなるとあまり利便性が良くないですね。
- 582 :nobodyさん:2014/05/28(水) 17:12:42.77 ID:???.net
- TreeBehaviorのleftとrightってなんなん…これ見ると存在しないid指定してるみたいでわけが分かんないよ…
http://book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html
- 583 :nobodyさん:2014/05/28(水) 20:12:28.98 ID:???.net
- >>581
カテゴリ名を自由にするってことは、特定の文字を禁止にするんだろうから、
それを表現できるパターンを第3パラメータに書けば良いと思うよ。
たとえば ["member", "user"] というコントローラを作るんなら
$route = '/:controller/:action/*';
$default = array();
$options = array('controller' => '(member|user)');
Router::connect(compact('route', 'default', 'options'));
あと、アクションを設定しない場合に index を適用させるなら
$route = '/:controller';
$default = array('action' => 'index');
Router::connect(compact('route', 'default'));
を最初に加えておく。
あとすまん、
上で Router::routes() っていうのは Router::connect() の間違いだった。すまん。
- 584 :nobodyさん:2014/05/28(水) 20:13:54.99 ID:???.net
- >>582
lft, rght はIDじゃないよ。
TreeBehavior のアルゴリズムを理解するのにとっておきの記事
http://blog.xao.jp/blog/cakephp/understanding-of-nested-sets-model-for-treebehavior-of-cakeph/
- 585 :573:2014/05/28(水) 20:20:05.04 ID:???.net
- >>583
ありがとうございます。色々工夫してやってみます。
- 586 :nobodyさん:2014/05/28(水) 22:03:01.32 ID:???.net
- >>584
ありがとうマジで助かった!
- 587 :nobodyさん:2014/05/29(木) 01:00:35.02 ID:???.net
- RailsとCakeでMVCを覚えたせいで見事に騙され、モデルはテーブルに紐付くもんと思ってたわ
テーブル関係ないビジネスロジックをどこに書くか迷って、コンポーネントに書いてたけど
モデルに書いた方がいいんだろうか?
- 588 :nobodyさん:2014/05/29(木) 01:27:10.16 ID:???.net
- >>587
ビジネスロジックをモデルに書くのは常識だ。
コンポーネントに書いたほうが良いなんて聞いたこと無い。
Rails も Cake もその点においては何も騙してねーと思うよ?
- 589 :nobodyさん:2014/05/29(木) 08:11:31.86 ID:???.net
- テーブルをまたがる共通処理や、似て非なるテーブルに同じ処理をしたい場合に、ロジックを置く場所がないて話だと思うけど。
そういう場合にRailsの1モデル-1テーブル形式は破綻してるのは確か。
- 590 :nobodyさん:2014/05/29(木) 08:25:24.09 ID:???.net
- 「具体的に言うと、モデルはデータベースのテーブルを表しますが」
http://book.cakephp.org/2.0/ja/models.html
とあるせいで、モデル=テーブルに紐付く(原則として)と思ってたよ
市販の解説書も同じような感じで書いてる
- 591 :nobodyさん:2014/05/29(木) 08:44:24.60 ID:???.net
- >>588
モデルの中で他のモデルをClassRegistry::initとかやりたくないんだよ
コントローラに書きたくなければコンポーネントになる
- 592 :nobodyさん:2014/05/29(木) 10:03:02.00 ID:veg5U4SW.net
- じゃあLibに作れよ
Modelじゃだめって理由でComponentに置く発想がおかしい
- 593 :nobodyさん:2014/05/29(木) 10:04:39.91 ID:???.net
- は?LibよりComponentの方が使いやすいじゃん
Controllerの冒頭で配列に入れるだけで$thisで使えるんだから
- 594 :nobodyさん:2014/05/29(木) 10:18:58.89 ID:???.net
- RailsにしてもCakeにしてもActive RecordないしTable Data Gatewayパターンを利用するクラスをModelと命名して
データベーステーブルと(さらにはコントローラとも)1対1対応しなきゃいけないように見えるから勘違いしやすいんだよな
Railsは1つのモデルに関するロジックは"モデル"クラスに書けるけど
Table Data GatewayのCakeはこれすらコントローラやヘルパーに溢れ出やすい印象
複数"モデル"が絡むときに簡易サービス層として利用されやすいのがコンポーネントなのかな
コントローラから呼びやすいしファットコントローラの一番楽な回避策だろうし
初心者でも(本来の広い意味での)モデルの中にサービス層を作りやすい実装や解説にしておいてくれるとありがたいんだけど
- 595 :nobodyさん:2014/05/29(木) 10:27:52.09 ID:veg5U4SW.net
- >>593
なんだその理由ww
- 596 :nobodyさん:2014/05/29(木) 11:21:59.06 ID:???.net
- >>595
何がおかしいんだ?
- 597 :nobodyさん:2014/05/29(木) 11:35:25.87 ID:Kdl2SKiZ.net
- >>589
>似て非なるテーブルに同じ処理をしたい場合
これはビヘイビアがいい気がする。
- 598 :nobodyさん:2014/05/29(木) 13:26:17.97 ID:???.net
- 前もこの話題出たよな
結論は出なかった
- 599 :nobodyさん:2014/05/29(木) 13:48:42.54 ID:???.net
- 作るものの規模とかで最適な構成は変わるしね。
>>594 のいうサービス層が必要になる規模は、CakePHPではちょっと対象外なんじゃないかと思ってる。
CakePHPの中の人がどう思って作ってるかはしらんけど。
- 600 :nobodyさん:2014/05/29(木) 15:11:21.10 ID:???.net
- 複数モデルにまたがる処理をコンポーネントに書いている人は
$useTable = false の別のモデルを作った方がずっと楽だと思うんだが。
コントローラから直接参照できる点は一緒。
データのセット、バリデーション、フォーム値の復元。
使うモデルを $hasOne とか入れとけば ClassRegisry::init も呼ぶ必要ない。
- 601 :nobodyさん:2014/05/29(木) 15:24:59.72 ID:???.net
- 俺はコンポーネントでやる方が楽だけどな
- 602 :nobodyさん:2014/05/29(木) 15:34:31.80 ID:???.net
- おれも >>600 と同じだな。
Modelの下にサブディレクトリ切ってAppでパス通すのもありだと思う。
Lib は他で作ったライブラリを置く場所にしてる。
コンポーネントはコントローラの処理を助けることが限定されている場合しか書く意味ない。
もちろん、そういうロジックだけならコンポーネントはすれば良い。
- 603 :nobodyさん:2014/05/29(木) 16:13:20.58 ID:???.net
- 複数ページにまつわる処理といえば、削除はどうしてる?
会員制サイトだと、以下のような構成がよくあるが、
会員
└日記
└お気に入り
└掲示板の作成や投稿
会員を削除すると、その下の投稿内容も削除しないとおかしい(と俺は思う)
だから俺は、管理画面で会員を削除したら、user_idがあるモデルは全て削除している。
削除はコントローラーに書いてる。
- 604 :nobodyさん:2014/05/29(木) 16:24:33.64 ID:???.net
- >>603
会員モデルの削除を呼んだら消えるようにする
- 605 :nobodyさん:2014/05/29(木) 16:37:36.60 ID:???.net
- >>604
hasManyでdependentをtrueだな。
俺も基本はそうしてるんだけど、>>603のに「画像」がある場合は困る。
各テーブルを参照して画像情報を取得し、削除していく必要がある。
- 606 :nobodyさん:2014/05/29(木) 16:50:52.43 ID:???.net
- beforeDelete,afterDeleteでいいんじゃない
- 607 :nobodyさん:2014/05/29(木) 18:18:39.64 ID:???.net
- そうすると、Userモデル内で他のモデルも呼ぶことになるぞ?
- 608 :nobodyさん:2014/05/29(木) 18:23:19.16 ID:???.net
- >>607
画像に関して言ったんだけど
dependentで消せないものに関して、Userモデル内から他のモデル呼んでも問題ないと思うけどな
- 609 :nobodyさん:2014/05/29(木) 20:03:02.45 ID:???.net
- deleteAll のコールバックって無いんだよね?
あれば Image モデルの afterDelete に
アセットを削除する処理を書いておけば良いのだろうけど。
saveMany や saveAll はコールバック効くのに
deleteAll は効かないってのもおかしな設計ではあるな。
- 610 :nobodyさん:2014/05/29(木) 23:57:26.91 ID:???.net
- deleteAll はコールバックあるよ。
ないのは updateAll
- 611 :nobodyさん:2014/05/30(金) 01:36:47.29 ID:???.net
- >>610
あ、そうなのか!
deleteAll の第3パラメータを true にするんだな。
今初めて気づいたわ。
じゃぁ、アセットの削除をそこに書けば良いわけか。
- 612 :nobodyさん:2014/05/30(金) 10:22:00.45 ID:???.net
- つまり、どういう設計になるの?
- 613 :nobodyさん:2014/05/31(土) 17:06:44.83 ID:???.net
- gitでcakephp管理する時、丸ごと全ファイルを管理するの?
それともビヘイビアとかプラグインとかだけ?
教えてください。お願いします!
- 614 :nobodyさん:2014/05/31(土) 18:14:11.40 ID:???.net
- 全部
- 615 :nobodyさん:2014/05/31(土) 18:28:27.72 ID:???.net
- cakephpってまだcomposerに対応しきれてない?
cakephp2でcakephp/appみたいなの探してるんだけどないかな?
- 616 :nobodyさん:2014/05/31(土) 18:39:11.86 ID:???.net
- >>615
composer 使ってるけど、対応しきれてないと思ったのはどの辺り?
- 617 :nobodyさん:2014/05/31(土) 18:49:51.57 ID:???.net
- >>616
bakeでプロジェクト作らないといけないのに
ハードコーディングを直さなきゃいけないところとかかな
- 618 :nobodyさん:2014/05/31(土) 19:51:01.39 ID:???.net
- それは composer というか bake project の仕様だなー。
include_path 通しておけばハードコーディングされなくなるけど。
- 619 :nobodyさん:2014/05/31(土) 20:57:15.14 ID:???.net
- >>614
ありがとうございます!
- 620 :nobodyさん:2014/05/31(土) 23:23:49.38 ID:???.net
- 今日俺がセルフHABTM方式というのを発明したんだが
何のことだかわかる?正式な名前とかある?
- 621 :nobodyさん:2014/06/01(日) 12:20:08.01 ID:???.net
- そういうプラグインがあった気がする
- 622 :nobodyさん:2014/06/02(月) 00:43:40.92 ID:???.net
- >>620
class Entity extends Model {
public $hasAndBelongsToMany = array(
'RelatedEntity' => array(
'className' => 'Entity',
'foreignKey' => 'relational_id',
),
);
}
こういうこと?
- 623 :nobodyさん:2014/06/05(木) 11:57:49.53 ID:+YUe8hGX.net
- メール送信するコマンド作って実行したら
「コマンド ラインが長すぎます」
というエラーが出るのですが、何かわかる方いらっしゃいますか?
環境は以下の通りです。
Windows 7
CakePHP 2.3.10
PHP 5.3.5
ファイル:app/Console/Command/ApprovalShell
<?php
App::uses('CakeEmail', 'Network/Email');
class ApprovalShell extends AppShell {
public function main() {
$Email = new CakeEmail();
$Email->config('default');
$Email->from(array('hogehoge@aaaaaaa.jp' => 'ほげほげ'));
$Email->to('hogehoge@aaaaaaa.jp');
$Email->subject('お願い');
$Email->send();
}
}
- 624 :nobodyさん:2014/06/05(木) 14:05:40.48 ID:???.net
- >>623
Windowsで開発するのやめれたらいいと思うよ。
よく知らんけど、Cakeのエラーメッセージは英語。
てことは、おそらくコマンドプロンプトか、代わりに使ってるターミナル系アプリの出してるエラー。
エラーメッセージから、cakeコマンドへのファイルパスや引数も含め、
実行しようとしたコマンドの文字数が多すぎた。
てことが予想出来る。
- 625 :nobodyさん:2014/06/05(木) 16:25:42.75 ID:+YUe8hGX.net
- >>624
ありがとうございます。
おっしゃるとおりかもしれません。
- 626 :nobodyさん:2014/06/05(木) 19:12:08.87 ID:???.net
- 自分はローカル用のアプリをCakePHPで作ってコマンドライン多用してるけど
「コマンド ラインが長すぎます」
なんてエラーは出たこと無いな。
原文はなんて書いてんの?
- 627 :nobodyさん:2014/06/05(木) 19:12:52.47 ID:???.net
- あ、もちろん Windows のクライアントね。
- 628 :nobodyさん:2014/06/05(木) 20:29:33.26 ID:???.net
- みんなwindowsじゃないん?
- 629 :nobodyさん:2014/06/05(木) 22:14:09.51 ID:???.net
- 本番機はレンタルサーバでlinux系だけど社内にあるマシンは全部windowsなんで
普段はwindowsで開発、最終的なテストだけ本番機で行っているわ
PHPはわりと環境依存大きいけどcake使ってると依存度がかなり軽減されると思う
- 630 :nobodyさん:2014/06/05(木) 22:23:36.19 ID:???.net
- 俺はVM立てるな
その方がお手軽だし
- 631 :nobodyさん:2014/06/05(木) 22:26:03.50 ID:???.net
- windowsで開発してるけど
phpとかmysqlはwindows上で動かすのは無駄だからやってない
vagrantで簡単に作れるしさ
- 632 :nobodyさん:2014/06/05(木) 22:29:27.33 ID:d26v3tZW.net
- >>629
開発用のサクラ鯖に直結して開発してるぞ。
リモートプロジェクト
- 633 :622:2014/06/05(木) 23:27:51.32 ID:+YUe8hGX.net
- 解決しました。
おさわがせしました。
PHPのメール設定がおかしかったみたいです。
- 634 :nobodyさん:2014/06/06(金) 00:56:33.55 ID:???.net
- そうやってなんでもWindowsのせいにすればいいニダ…
- 635 :nobodyさん:2014/06/06(金) 01:07:28.95 ID:???.net
- XAMPP使ってるのは俺だけのようだな
- 636 :nobodyさん:2014/06/06(金) 01:37:12.74 ID:???.net
- だって、Windowsで開発してなければ起こらないトラブルや、
しなくていい苦労って多いもの。
- 637 :nobodyさん:2014/06/06(金) 02:32:32.38 ID:???.net
- windowsだと実行が困難なのってcronぐらいじゃね?
画面系で動作が変わるとしたらソース自体に問題がありそう
- 638 :nobodyさん:2014/06/06(金) 03:44:03.22 ID:???.net
- システムコールとかメール送信とかOSの絶対パスみなきゃいけない時とか
- 639 :nobodyさん:2014/06/06(金) 06:32:05.95 ID:???.net
- 開発マシンで実行しないとbakeした時面倒なんだよ
- 640 :nobodyさん:2014/06/06(金) 11:48:12.37 ID:???.net
- >>639 はわかるけど、>>639 は何で?
Windows と Mac 混在して bake してて問題ないんだが、
気づいてないだけかな
- 641 :nobodyさん:2014/06/06(金) 12:18:51.00 ID:???.net
- 知らないだけだろ
- 642 :nobodyさん:2014/06/06(金) 13:35:54.13 ID:???.net
- >>641
今試しに同じデータベースを元にして Mac と Windows で bake したのを
git で比較したけど差分なかったぞ?
- 643 :nobodyさん:2014/06/06(金) 13:45:08.57 ID:???.net
- >>642
バージョンは?
CAKE_CORE_INCLUDE_PATHって何定義してる?
- 644 :nobodyさん:2014/06/06(金) 15:39:44.51 ID:???.net
- >>643
2.5.1
CAKE_CORE_INCLUDE_PATH はコアの Cake ディレクトリを格納している
ディレクトリのパス。
- 645 :nobodyさん:2014/06/06(金) 15:59:39.81 ID:???.net
- >>644
CAKE_CORE_INCLUDE_PATHに差があるんじゃない?
- 646 :nobodyさん:2014/06/06(金) 17:22:45.98 ID:???.net
- >>645
そりゃ絶対パスだから違うわけだけど、
bake して生成された結果には影響ないよ?
ちなみに今の論点はあくまでも
>bakeした時面倒なんだよ
に対する疑問ね。
- 647 :nobodyさん:2014/06/07(土) 13:17:32.00 ID:???.net
- composerについて
これは、phpファイルのみしか管理できないのですか?
例えばjqueryとか、画像も管理できるのでしょうか?
教えてください。
よろしくお願いします。
- 648 :nobodyさん:2014/06/07(土) 14:18:28.71 ID:???.net
- >>647
composerは基本、外部のライブラリを管理したり
プロジェクトの作成に利用したりするもの
jqueryは
component/jquery
を使えば管理できる
画像は外部のものなのかい?
- 649 :nobodyさん:2014/06/07(土) 14:22:04.06 ID:???.net
- >>648
ありがとうございます。
画像やjqueryはプラグインに入れようと思って、それをbitbucketで管理します。
全てのサイトでそのプラグインをcomposerで管理できるのかなとおもいまして。
- 650 :nobodyさん:2014/06/07(土) 14:26:11.05 ID:???.net
- >>649
bitbucketで
各々サイトと、jqueryのプラグインを別に管理したとして
>全てのサイトでそのプラグインをcomposerで管理できる
ってのは可能だよ
- 651 :nobodyさん:2014/06/07(土) 16:46:31.63 ID:???.net
- >>650
ありがとうございます!
早速やってみます。
- 652 :nobodyさん:2014/06/10(火) 09:20:20.15 ID:???.net
- http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1119&forum=8
これと同じ問題でハマってます
どうすればいい?
users/123 等の時は users/index/123にしたくて
users/read
users/edit
などアクション名を指定した時は、そのアクション実行したいのですが
- 653 :nobodyさん:2014/06/10(火) 10:48:00.76 ID:???.net
- >>652
正規表現で絞れば良いだけじゃないの?
Cakeは最近使ってないからわからんが
- 654 :nobodyさん:2014/06/10(火) 11:13:53.54 ID:???.net
- おお、性器表現も使えるのか
どこかにサンプルはないでしょうか?
- 655 :nobodyさん:2014/06/10(火) 13:57:21.11 ID:???.net
- >>654
http://api.cakephp.org/2.5/class-Router.html#_connect
http://book.cakephp.org/2.0/en/development/routing.html#route-elements
- 656 :nobodyさん:2014/06/10(火) 17:33:53.47 ID:???.net
- >>655
d
結局正規表現使わなかったけど、解決しました
- 657 :nobodyさん:2014/06/11(水) 00:44:51.34 ID:???.net
- twitterのように自分自身のユーザ情報のみ
編集可能にする方法を教えて下さい。
(他人のユーザ情報は編集不可、表示のみ)
- 658 :nobodyさん:2014/06/11(水) 00:46:47.80 ID:???.net
- ログインユーザと編集する対象のユーザが同じかどうか確かめればいいだけじゃん
- 659 :nobodyさん:2014/06/11(水) 00:51:45.60 ID:???.net
- >>658
ありがとうございます。
一致したら「編集」ボタンを表示する、などの処理をすれば良いのでしょうか?
- 660 :nobodyさん:2014/06/11(水) 01:06:59.37 ID:???.net
- 基本的に信頼していいのは自分がプログラムにハードコーディングしたサーバ側の処理だけ
クライアント側は他にアプリを作ればどんなHTTPリクエストでも送れるからだ
編集ボタンを表示しないのも予防策にはなるが
根本的にはサーバ側でデータベースのアップデートやセーブやデリートをする前に
CRUDの対象となるレコードがログインユーザ自身のものかどうかを確認するステップが必要
より具体的にはログインユーザのIDと更新するユーザテーブルのレコードのIDが一致するかどうかだ
- 661 :nobodyさん:2014/06/11(水) 02:19:09.44 ID:???.net
- >>660 は、ちゃんと >>660 の言ってることを理解できたのだろうか・・・
- 662 :nobodyさん:2014/06/11(水) 08:53:19.95 ID:???.net
- リクエストにユーザーIDをつけない
- 663 :nobodyさん:2014/06/11(水) 10:34:05.54 ID:???.net
- あれ?
ユーザー情報の更新のリクエストにユーザーIDを含むようなフォームを作ったとしても
Cakeのパラメータ改ざんとCSRFのチェックが有効なら
悪意あるユーザーがフォームを改ざんして他のユーザーIDに変えたら
パラメータ改ざんチェックで引っかからんのかい?
教えてエロい人
まあそれでも>>662みたいに根本的に他のユーザの情報を更新できないようにしたほうが安心安全か
人為的なミスも起きにくいし
データベースを変更しないユーザー情報表示画面の時だけリクエストにユーザーIDを含める
ユーザー更新・削除時は対象レコードの選択にログインユーザのIDをそのまま使う
- 664 :nobodyさん:2014/06/11(水) 17:28:51.09 ID:???.net
- >>663
CSRF対策は、そのページに行くまで正しい経路をたどってるかどうか
フォーム改ざんは、そのページに含まれるポスト対象のフィールドが正しいかどうか
のチェックだったはず。なので、POSTされるフィールド値を変更されたとしても、
Cake側では対応できないはず。
- 665 :nobodyさん:2014/06/11(水) 20:19:39.05 ID:???.net
- ありがとうございます。
皆様のおかげでテストケースの有用性がわかるようになりました。
composerの便利さも。
jenkinsとかはどうなんですか?
- 666 :nobodyさん:2014/06/11(水) 21:00:28.09 ID:???.net
- >>569の問題、2.5でも直ってねーじゃねーか
AppControllerを継承したAdminControllerを継承したEventControllerを動かしたら
AdminControllerのusesに書いてあるモデルが、AdminControllerのbeforeFilter内で使えなかったぞ
EventControllerのusesに追加したら動いたが、なんだかなー
- 667 :nobodyさん:2014/06/11(水) 21:09:11.43 ID:???.net
- >>666
マージする継承クラスを指定できるパラメータがあったはず。
ドキュメント読んでみて。
- 668 :nobodyさん:2014/06/11(水) 21:52:04.25 ID:???.net
- >>667
$_mergeParentのことか?
これでAdminControllerを指定したら、今度はAppControllerをマージしてくれないからダメ。
ぐぐったらこれ皆困ってるらしくてそれぞれ独自に_mergeVarsを改造したりして直してるな。
なんでこの問題公式が放置してるんだ?
- 669 :nobodyさん:2014/06/11(水) 22:06:20.17 ID:???.net
- >>668
あ、本当だな。
CakePHPが糞と言われるのがよく分かるwww
- 670 :nobodyさん:2014/06/11(水) 22:07:34.04 ID:???.net
- それがCakeクオリティ!
3の開発で忙しいんじゃないかな(*´∀`*)
- 671 :nobodyさん:2014/06/11(水) 22:43:50.86 ID:???.net
- 糞とか言ってる暇があったら issue 出すか、プルリクしろよ。
オレはやんないけど。
- 672 :nobodyさん:2014/06/12(木) 01:35:46.71 ID:???.net
- >>671 出したところで却下かと。
>>668 はいくつかのコントローラに共通する機能が必要なら、
その時は継承ではなくてコンポーネントを作ったらどうかな?
コンポーネントはそのために存在しているわけだし。
共通機能を継承で得ようとするのは、言語やフレームワークを問わず、
あんまり良い選択ではないと思うけど。
- 673 :nobodyさん:2014/06/12(木) 01:39:01.21 ID:???.net
- え?
うーむこれがPHP脳というやつか
- 674 :nobodyさん:2014/06/12(木) 01:48:11.52 ID:???.net
- >>673
言語は問わないと書いたがな。
たとえば
EffectiveJava 第4章 項目14「継承よりコンポジションを選ぶ」
コンポーネントは文字通りこのコンポジションパターンだよ。
- 675 :nobodyさん:2014/06/12(木) 02:42:37.90 ID:???.net
- >>672
>>666の例で言うと、EventController(他にもあるが)は管理者専用機能のコントローラである。
管理者用コントローラに共通の処理(ログインなど)をAdminControllerに書き、EventControllerはそれを継承した。
同じことをコンポーネントでやろうとすると、すべての管理者用コントローラーに
まったく同じコード(コンポーネントのメソッドを呼び出すコード)を書かねばならないのでは?
非常に不便だと思うが、俺が勘違いしてたら教えて欲しい。
- 676 :nobodyさん:2014/06/12(木) 02:56:04.36 ID:???.net
- Controller::beforeFilter() に言及してたから、
その処理なら Component::startup() でいいんじゃないかと思ったんだけど、どうだろう?
場合によってはメソッドの呼び出しも必要になるけれども
けど、それは parent:: で親クラスのメソッドを呼ぶのとそれほど変わりないのかなと。
- 677 :nobodyさん:2014/06/12(木) 02:57:29.99 ID:???.net
- >>672 がややずれてるのは
>いくつかのコントローラに共通する機能
としてるけど、>>666 で問題にしてるのは
広い意味では機能で間違いないんだけど
単に設定値である点においてズレてる。
ここではそれこそ、コンポーネントの
使い方なんかを指定しているわけで、
これは継承してほしいと思うよ。
- 678 :nobodyさん:2014/06/12(木) 03:11:49.49 ID:???.net
- >>677
1.x系からのふるまいだから、仕様変更が入る可能性は低くないかな。
どうしても継承の継承が必要なケースで
さらに、孫クラスに基底クラスから継承させたいパラメータがあるなら
基底クラスのコンストラクタで $this->uses に入れればいいわけだし。
- 679 :nobodyさん:2014/06/12(木) 09:12:51.74 ID:???.net
- こんなゴミなもの対応されたら
また名が廃る
- 680 :nobodyさん:2014/06/12(木) 11:19:04.70 ID:???.net
- 3のソースからは $_mergeParent は消えてるみたいだな。
- 681 :nobodyさん:2014/06/12(木) 11:22:15.38 ID:???.net
- 常識的に考えて、マージしないとおかしいだろ
何だこの仕様
- 682 :nobodyさん:2014/06/12(木) 11:22:23.38 ID:???.net
- 3使ってる人いるん?
どんな感じですか?
- 683 :nobodyさん:2014/06/12(木) 11:28:47.32 ID:???.net
- 3は継承全部マージされるよ
パフォーマンスはお察し
- 684 :nobodyさん:2014/06/12(木) 12:11:49.21 ID:???.net
- 3に苦労して移行するくらいなら、LaravelとかRailsに移るかな。
使ってこそのフレームワークだから、コミュニティの勢いは重要。
- 685 :nobodyさん:2014/06/12(木) 12:25:24.65 ID:???.net
- cakeとsymfonyが本命FWとして争っていた時期が懐かしい
- 686 :nobodyさん:2014/06/12(木) 13:23:35.06 ID:???.net
- みんな良く勉強できるな。他の言語に移るのは辛いわ。。。
- 687 :nobodyさん:2014/06/13(金) 08:29:35.00 ID:???.net
- Cake使い続けるほうが長期的に見て辛い
- 688 :nobodyさん:2014/06/13(金) 08:39:23.01 ID:???.net
- それはあるw
書いたコードの分だけ、負債がどんどん増えていく
- 689 :nobodyさん:2014/06/13(金) 09:00:43.34 ID:???.net
- その負債の原因がCakeではなく自分にあるとも気づかぬままにw
- 690 :nobodyさん:2014/06/13(金) 10:44:08.86 ID:???.net
- 管理者用の機能って、Adminコントローラを作るんじゃなくて
adminプレフィクスを使うのが一般的な方法だと思っていたんだが
実際のところみんなはどうやっているんだ?
- 691 :nobodyさん:2014/06/13(金) 11:00:42.12 ID:???.net
- >>690
俺はクッキーでログイン画面作って、セッション有る無しでview表示を少し変えてる。
ずっとこれでやってるけど。。。
ダメかな?
- 692 :nobodyさん:2014/06/13(金) 12:20:32.10 ID:???.net
- 一般利用者も管理者も同じaction通してるってことか。
全体的に管理者の機能が一般利用者とそんなに変わらなければそれでもいいのかもね。
プレフィクスを切っている場合でも
public function admin_search() {
$this->search();
}
なんてコードは実際に書かれるわけで。
- 693 :nobodyさん:2014/06/13(金) 14:29:24.42 ID:???.net
- >>691
面白そうだったんで最初やってみたけど、
同じクラスにヤバいアクションが混在するのが気持ち悪い。
それ以降やったこと無いな。
>>691
表示だけならそれでいいんじゃない?
- 694 :nobodyさん:2014/06/13(金) 17:20:45.32 ID:???.net
- 俺は管理画面と一般画面のappは分けてるよ
管理画面だけ変えたい設定(キャッシュしないとかdebug2とか)があるし。
- 695 :nobodyさん:2014/06/14(土) 17:11:30.81 ID:???.net
- みなさん、ホーム画面ってどのコントローラーでやってます?
ホーム用のコントローラーを作るか既存のコントローラーでやるか
- 696 :nobodyさん:2014/06/14(土) 17:15:43.40 ID:???.net
- ホーム専用
- 697 :nobodyさん:2014/06/14(土) 17:19:19.02 ID:???.net
- 専用じゃないや
HomesControllerだけど他にもaboutとかシンプルなページと兼用
- 698 :nobodyさん:2014/06/14(土) 17:26:13.81 ID:???.net
- >>697
その場合、コントローラー付きで直アクセスされた場合、
何かリダイレクト処理を入れてるんですか?
(/homes/indexとか/homes/aboutでアクセスされた場合)
- 699 :nobodyさん:2014/06/14(土) 17:37:45.91 ID:???.net
- >>698
routes.php弄る
- 700 :nobodyさん:2014/06/14(土) 17:42:44.81 ID:???.net
- あ、違うな
対策はしてない
最近やってないから忘れてる…
- 701 :nobodyさん:2014/06/14(土) 18:59:09.94 ID:dq/AB5k+.net
- ルーティングについて質問です。
URLに「hoge」がついていたら、パラメーターをhogeとして受け取りたいです。
/users/ →UsersControllerのindexアクション
/users/detail →UsersControllerのdetailアクション
/hoge/users/ →UsersControllerのindexアクションでパラメーターhoge
/hoge/users/detail →UsersControllerのdetailアクションでパラメーターhoge
というイメージなのですが、こういう事はルーティングの設定で可能でしょうか?
可能なら書き方を教えてください。2.4系を使用しています。
- 702 :nobodyさん:2014/06/14(土) 21:50:21.39 ID:???.net
- >>701
できるよ
/* /hoge/users/ がマッチする設定 */
$route = '/hoge/users/';
$defaults = array('controller' => 'users', 'action' => 'index', 'hoge');
Router::connect($route, $defaults);
/* /hoge/users/ がマッチする設定 */
$route = '/hoge/users/:action';
$defaults = array('controller' => 'users', 'hoge');
Router::connect($route, $defaults);
/* /users/ と /users/detail は設定なしの標準でマッチ */
- 703 :nobodyさん:2014/06/14(土) 21:54:32.07 ID:???.net
- あ、コメントミスった。正しくはこっち
/* (1) /hoge/users/ がマッチする設定 */
$route = '/hoge/users/';
$defaults = array('controller' => 'users', 'action' => 'index', 'hoge');
Router::connect($route, $defaults);
/* (2) /hoge/users/detail などがマッチする設定 */
$route = '/hoge/users/:action';
$defaults = array('controller' => 'users', 'hoge');
Router::connect($route, $defaults);
/users/ と /users/detail は設定なしの標準でマッチ
(2) のパターンは detail 以外のアクションにも適用されることに注意して。
もしアクションを限定したいのなら別の書き方が必要。
- 704 :700:2014/06/15(日) 00:45:45.76 ID:???.net
- >>702-702
ありがとうございます。大変参考になりました。
- 705 :nobodyさん:2014/06/15(日) 14:07:12.52 ID:???.net
- フォームヘルパーのinput作成のname部分を
data[Model][name]→nameにする方法って無いでしょうか?
- 706 :nobodyさん:2014/06/15(日) 16:51:00.51 ID:???.net
- >>705
FormHelper のパラメータでってことなら不可。
- 707 :nobodyさん:2014/06/15(日) 17:42:36.89 ID:???.net
- >>706
やっぱり無理ですか。諦めます
- 708 :336:2014/06/15(日) 18:33:33.91 ID:???.net
- >>707
オーバーライドして、アウトプットを置換するだけじゃん
- 709 :nobodyさん:2014/06/16(月) 00:20:49.49 ID:???.net
- フォームヘルパー本当に使い辛い
散々ハマった挙げ句、自分でFormタグ書いてるわ
- 710 :nobodyさん:2014/06/16(月) 12:40:04.49 ID:2sVNmbqM.net
- 現在、cakeのAuth認証を使ってログインシステムを作っているのですが
一度登録済のパスワードをユーザ操作により変更した場合、
パスワードの認証対象の値はハッシュ値で自動でDBに登録されるのですが
それを再び登録し直すにはどうすれば良いのでしょうか?
例)
[入力パスワード] [ハッシュ値]
testpass ijierwaaasdfkjiewi32jasdfkj3
↓ ユーザがパスワードを変更した場合
testpass2 asdafasdfasjd・・・etc ←ハッシュ化する関数は何でしょうか?
- 711 :nobodyさん:2014/06/16(月) 18:38:51.83 ID:???.net
- フィームヘルパーのselectで0の値が空欄になるのは仕様ですか?
- 712 :nobodyさん:2014/06/17(火) 00:26:53.74 ID:???.net
- >>710
Security::hash($password, null, null)
ちなみに v2.4 までは
AuthComponent::password($password)
だったけど、2.5 からは非推奨。
- 713 :nobodyさん:2014/06/17(火) 00:34:56.25 ID:???.net
- Security::hash() の第2と第3パラメータは要らないみたいだ
Security::hash($password)
でOK
- 714 :nobodyさん:2014/06/17(火) 06:18:50.52 ID:???.net
- CakePHPてprimary idは必ずauto incrementのintでないと駄目なん?
INSERT時にidがnullであることを前提にしてるから、自前でid渡すと
バリデーション時にisUniqueやonCreateの指定がうまくいかなくなるね。
これはCakeではそういうもんなのか。自前でバリデーション書くしかないのか。
- 715 :nobodyさん:2014/06/17(火) 11:33:53.22 ID:???.net
- >>714
Model::$primaryKey で設定
動的な変更も可
複数キーは不可。3から対応
- 716 :nobodyさん:2014/06/17(火) 11:38:54.51 ID:???.net
- >>714
>バリデーション時にisUniqueやonCreateの指定がうまくいかなくなるね。
そうか?
- 717 :nobodyさん:2014/06/17(火) 12:03:04.11 ID:???.net
- >>715
それはもちろん指定してる。
だが、isUniqueやonCreateはうまくいかなかった。
結局数字のidを追加して対応した。
- 718 :nobodyさん:2014/06/17(火) 12:32:01.97 ID:???.net
- あぁ、そういうことか。なるほど。
onCreate は使ったこと無いんでよく分からんけど、
isUnique は、保存前に Model::$id をセットしてやってもダメなん?
- 719 :nobodyさん:2014/06/17(火) 16:22:43.39 ID:???.net
- >>718
それは試してないな。primaryKeyの名前がidじゃなかったから、idは一切いじらなかった。
Model::isUniqueのソースあらためて見たら、$this->idにNULLを入れていたらうまくいったかもしれん。
- 720 :nobodyさん:2014/06/17(火) 17:08:04.87 ID:???.net
- Model::$id は、primaryKey の値のことなので、
スキーマのフィールド名が id であるかどうかとは無関係。
- 721 :nobodyさん:2014/06/18(水) 03:28:03.88 ID:???.net
- >>720
なるほど!
後で試してみよう
- 722 :nobodyさん:2014/06/18(水) 12:55:32.95 ID:1XJ5G0pn.net
- すみません、今ドットインストールの講座が終わりまして、
自分でCakePHPのサイトを作ろうと思っているのですが、気になった点がありました。
今、作ろうとしているサイトは、ポートフォリオ系になるので、
自分が作ったゲームやWebサイトを置く予定であります。
CakePHPを使う必要性は薄いのですが、フレームワーク経験が必須なため、
経験を積むという意味で、CakePHPを使用しました。
そして、サイトには、大きく分類して、トップページ、ゲーム、Webサイト、リンクがあり、
それぞれ、topsテーブル、gamesテーブル、sitesテーブル、linksテーブルがあります。
そこで、気になったのが、
CakePHPでは、Controller、View、Model、データテーブルの名前を揃えなければならないと習ったのですが、
そうなると、出力するテーブルが違う場合は、GamesController、SiteControllerのように、
コントローラーとフォルダを用意すべきでしょうか。
それとも、1つのコントローラー、1つのViewフォルダにまとめられるでしょうか?
- 723 :nobodyさん:2014/06/18(水) 13:01:47.43 ID:???.net
- 好きなようにすれば良い
- 724 :nobodyさん:2014/06/18(水) 13:23:44.25 ID:1XJ5G0pn.net
- つまり、Controller名、フォルダ名と異なるテーブルを使用することは可能で、
特に問題ないとのことでしょうか?
- 725 :nobodyさん:2014/06/18(水) 14:07:44.93 ID:???.net
- >>722
topsってテーブルが気になるな。何があるテーブルか分からん。
sitesテーブルとlinksテーブルの違いとか。
お前さんの用途は「自作のゲームやWebサイトの情報を公開する」だろ?
じゃ、「products」テーブルだけか、分けても「links」「games」だけだと思うんだが。
あと、基本的なCakeの命名規則が分かってないよ。
Controller:GamesController
Model :GameModel
View :Games
テーブル:games
- 726 :nobodyさん:2014/06/18(水) 14:20:51.04 ID:lT0uB39l.net
- >>713 >>713
ありがとうございます!!
- 727 :nobodyさん:2014/06/18(水) 14:29:45.54 ID:1XJ5G0pn.net
- 説明がたりませんでした、申し訳ありません。
Webサイトに載せるのは、ゲームとWebサイトです。
topsは、トップページなのですが、ここに更新履歴を置くところです
sitesは、メインとなるホームページ以外に作った、Webサイトを置くところです。
ここでは、ゲーム以外の製作物と認識してくだされば十分です。
linksは、素材とかをお借りしたサイトとかへのリンクです。
gamesテーブルとsitesテーブルは、productsテーブルにまとめたほうがよさそうです。
ご助言ありがとうございます。
そうなると、
Controller:TopsController
Model :TopModel
View :Tops
テーブル:tops
Controller:GamesController
Model :GameModel
View :Games
テーブル:games
Controller:LinksController
Model :LinkModel
View :Links
テーブル:link
という風に分けた方が、使用するテーブル単位で分けた方が無難ということでしょうか
- 728 :nobodyさん:2014/06/18(水) 15:13:40.83 ID:???.net
- だからtopsって何なんだよw
更新履歴ならnewsとかupdatesとかにしたらどうだ?
- 729 :nobodyさん:2014/06/18(水) 15:41:33.35 ID:???.net
- 1XJ5G0pnはもう少し勉強したほうがいいな。根本的なMVCが分かってない
- 730 :nobodyさん:2014/06/18(水) 15:45:20.63 ID:???.net
- いや英語を勉強した方がいい
- 731 :nobodyさん:2014/06/18(水) 16:30:07.27 ID:1XJ5G0pn.net
- すみません、画面名からテーブル名作ってしまいました。
最初は、更新履歴を表したテーブル名は、newsでつけていたのですが、
コントローラー名とフォルダ名を揃えなければならないということ思い出して、
それでトップ画面の名前を、更新履歴のテーブル名にしてしまいました。
(トップ画面に更新履歴を表示させるため)
それで、テーブル名とコントローラー名、フォルダ名がずれていても問題ないということでしょうか?
- 732 :nobodyさん:2014/06/18(水) 16:39:06.81 ID:???.net
- モデルとコントローラはむしろずれてないとバグりやすくなるだろ。
1画面にニュースとリンクを両方表示したいときどうするつもりだ?
画面に名前をつけたのがView、データの集まりに名前をつけたのがModel。
Cakeでは便宜上Viewのフォルダ名とコントローラ名を合わせると幸せになれるというだけ。
- 733 :nobodyさん:2014/06/18(水) 16:39:37.90 ID:???.net
- ずれるの意味が分からんが、MVCでバラバラなら問題あるだろ
- 734 :nobodyさん:2014/06/18(水) 16:59:54.99 ID:ma+gijMn.net
- 秒速で1億稼ぐ豚が・・・レイプ
http://www.tanteifile.com/diary/2014/06/17_01/
- 735 :nobodyさん:2014/06/18(水) 17:34:03.35 ID:???.net
- 上の方でも誰か書いてるけど、1XJ5G0pn はまず好きにすればいい。
つまり、いろいろ質問してるけど、とにかくやってみてから
問題を見つけて行ったほうがいい。
手を動かさない奴に何をいっても無駄だ。
>という風に分けた方が、使用するテーブル単位で分けた方が無難ということでしょうか
などという小賢しい質問をする前にまず作れ。
そして壊して作りなおせ。
- 736 :nobodyさん:2014/06/18(水) 23:32:42.92 ID:???.net
- Cakeマスターの皆さんに質問
ViewからModelのvalidateを参照して、「名前は○文字までです」みたいな表示をしたい。
ベストプラクティスなやり方ありますかね?
もしくはViewからもModelからも見える所に数値のdefineを置くべきだろうか。
- 737 :nobodyさん:2014/06/19(木) 00:35:54.86 ID:???.net
- >>736
文字数制限をViewでも管理したいってことか?
そう頻繁に変わるものじゃないから、
Viewに直接注意書きを書くのが一番だと思うが
- 738 :nobodyさん:2014/06/19(木) 01:10:02.52 ID:???.net
- うちは最近設定値関係は Config に json で保存するパターンを試してる。
パーサのオーバーヘッドが多少気になるけど、まぁ悪くない。
- 739 :nobodyさん:2014/06/19(木) 01:18:19.13 ID:???.net
- >>737
Viewから変更する必要はなく、注意書きを書きたいだけなんだよね
制限文字数なんかは後から変更される可能性があるので、ModelとViewの両方に直書きしたくない
やはり設定ファイル式にすべきか
- 740 :nobodyさん:2014/06/19(木) 02:04:30.51 ID:???.net
- Configモデルに数値を保存してコントローラーから操作すればいいじゃん。
モデルキャッシュを使うと、重くならないぞ
- 741 :nobodyさん:2014/06/19(木) 02:06:51.32 ID:???.net
- viewからmodelを参照するのは全く構わないと思う。俺はviewからいつでもmodelのインスタンスを参照できるように$getmodel('Foo')みたいなクロージャを用意してるので、バリデーションルールにもアクセスできる。
- 742 :nobodyさん:2014/06/19(木) 16:22:55.58 ID:???.net
- Cakephp2で、core.phpのprefixesを有効にしています。
Configure::write('Routing.prefixes', array('admin'));
routes.phpでルーティングをしたい時、
Router::connect('/', array('controller' => 'pages', 'action' => 'index', 'home'));
Router::connect('/admin/', array('controller' => 'pages', 'admin' => true));
としているのですが、同じような内容を2回書くのが面倒です。
これは仕様として仕方ないのでしょうか?
- 743 :nobodyさん:2014/06/19(木) 23:44:09.30 ID:???.net
- cakephpを2から3に上げる時とか、
業務でやってたら怖くない?
慣れなん?
サーバー移転ですら怖くてできん。。
- 744 :nobodyさん:2014/06/19(木) 23:45:58.63 ID:???.net
- 業務システムのフレームワークをベータ版にしようとするお前がこえーよw
- 745 :nobodyさん:2014/06/19(木) 23:47:32.48 ID:???.net
- >>744
今はそうだけどさ
仮にstableになっても。
- 746 :nobodyさん:2014/06/20(金) 00:11:16.79 ID:???.net
- 2->3 はハードル高そうだな
- 747 :nobodyさん:2014/06/20(金) 01:16:57.68 ID:???.net
- 2であと3年は戦うつもり
- 748 :nobodyさん:2014/06/20(金) 09:35:32.81 ID:???.net
- 3に変えてまでCakeについていく気はないな
別のフレームワークに変えるだろう
でも今からだと何がいいんだろう
- 749 :nobodyさん:2014/06/20(金) 10:09:05.76 ID:???.net
- >>748
ファルコンってどうなん?
速いみたいだけど。
- 750 :nobodyさん:2014/06/20(金) 11:20:56.99 ID:???.net
- >>748
laravelじゃないか
phalconは業務でも使ってるけど
バグはそれなりにあって、Segmentation Faultで落ちると結構大変
速度は比較にならないほど速いし、フレームワークの仕組みも良いけどさ
- 751 :nobodyさん:2014/06/20(金) 16:37:24.67 ID:1CC0efjo.net
- cakePHPを使ったシステムで
アップローダーを作ろうとしているのですがウィルスファイルをアップロードされると不味いので
アップロード可能なファイル種類を事前に jpg のみに制限しておいた方が無難でしょうか?
- 752 :nobodyさん:2014/06/20(金) 17:18:38.33 ID:???.net
- >>751
どうやって制限するの?
- 753 :nobodyさん:2014/06/20(金) 17:31:29.21 ID:???.net
- >>752
バリデーションに書く
- 754 :nobodyさん:2014/06/20(金) 17:41:37.43 ID:???.net
- >>753
mimetypeで制限するってことか
jpeg画像のウィルスとかもあるからねぇ
- 755 :nobodyさん:2014/06/20(金) 17:53:47.33 ID:???.net
- つーか、jpeg型ウィルスって実行するには
別のウィルスに感染させる必要があるんだろ?
単に画像を閲覧しただけで感染するなら、対策とか無理じゃないか?
twitterとかfacebookはウィルスだらけになるぞ
- 756 :nobodyさん:2014/06/20(金) 18:27:17.32 ID:I3iP4JeK.net
- という事はつまり、jpgファイルであったとしても >>755のアドバイスを参考にすると
jpgのみアップロード可能にしておけば、ウィルスに感染していない人が
その画像を閲覧する分には何も影響がないと言う事でしょうか?
ウィルス感染している人自体が少ないと思うので被害は少ないですよね。
- 757 :nobodyさん:2014/06/20(金) 18:38:27.21 ID:???.net
- >>756
と言うより、防ぎようがない気もする。
でも、画像アップロード出来るWebサービスは日々オープンしてるわけだし、
そこまで神経質になっても仕方ないよ。
- 758 :336:2014/06/20(金) 18:41:21.97 ID:???.net
- 再エンコード
- 759 :nobodyさん:2014/06/20(金) 20:23:31.26 ID:???.net
- それいいね、目から鱗
- 760 :nobodyさん:2014/06/20(金) 21:08:45.45 ID:5NSL3HdG.net
- >>758
詳しく
- 761 :nobodyさん:2014/06/20(金) 22:04:51.68 ID:???.net
- >>760
画像を読んで再エンコードすれば
余計なバイナリが入ってたとしてもなくなる
- 762 :nobodyさん:2014/06/21(土) 00:35:05.85 ID:???.net
- Wordpressが確か再エンコードしていた気がする
- 763 :nobodyさん:2014/06/21(土) 00:48:00.43 ID:???.net
- それは再エンコードじゃなくてサムネイル作ってるだけでは。
まあサムネイル作って無効な画像かどうか(ライブラリによるがnullが返ったり真っ白画像になったり)を調べるという手はあるかも。
- 764 :nobodyさん:2014/06/21(土) 01:03:27.67 ID:???.net
- 今どき、JPEGだけのアップローダーにどんな役割があるのか興味あるな。
- 765 :nobodyさん:2014/06/21(土) 03:26:03.92 ID:f1vlSuIg.net
- ↑
jpgでいいやん。jpgでエロ画像みえるやん。jpgで072できるやん。
- 766 :nobodyさん:2014/06/22(日) 12:51:34.63 ID:???.net
- 以下のテーブル2つ(hasOne)で、profilesデータをsaveする際に
insertは問題ないのですがupdateが上手くいきません。
(上書きされずに毎回insertされる)
saveメソッドでupdateするには主キーを渡す必要があるのは分かっているのですが、
その方法がよく分かりません。このような場合はどうすれば良いのでしょうか?
usesテーブル
-id//主キー
-username
-password
profilesテーブル
-id//主キー
-user_id//外部キー
-birthday
class ProfilesController extends AppController{
public function edit(){
$id=$this->Auth->user('id');
if($this->request->is(array('post','put'))) {
$this->request->data['Profile']['user_id'] = $id;
if ($this->Profile->save($this->request->data)) {
$this->Session->setFlash(__('The profile has been saved.'));
} } }
テーブルを1つにまとめてしまえば話しは早いのですが
別の都合でそれができません。
- 767 :nobodyさん:2014/06/22(日) 14:20:31.99 ID:???.net
- >>766
profileにuser_idを渡すはX
profileにidを渡さないと。
- 768 :nobodyさん:2014/06/22(日) 15:16:50.54 ID:???.net
- >>767
ありがとうございます。
解決しました。
- 769 :nobodyさん:2014/06/22(日) 22:23:19.92 ID:???.net
- Model::create()したらテーブルカラムのDEFAULT値が勝手にdataにセットされるの止めて欲しいわ。
おかげでUPDATE処理時に更新対象じゃないカラムが勝手にDEFAULT値に変わってえらい事になった。
なにしてくれるんじゃい。
- 770 :nobodyさん:2014/06/22(日) 23:25:35.42 ID:???.net
- whitelistつかえ
- 771 :nobodyさん:2014/06/24(火) 16:40:44.26 ID:???.net
- Cakeでシステム作って、Apache benchしたらRequests per secondが1.5ぐらいと激遅。
DBアクセスやめて固定のJSONを1行返すだけにしても大きく変わらず。
Core i7のWin8のXampp環境でもCentOSのVPS環境でもそんな感じ。
いくらCakeが遅いって言っても遅すぎると思うのだが、なにかおかしいです?
- 772 :nobodyさん:2014/06/24(火) 17:44:24.00 ID:???.net
- キャッシュ使えや
- 773 :nobodyさん:2014/06/24(火) 17:59:57.86 ID:???.net
- そういうレベルではない
根本何か間違えてるだけだろ
- 774 :nobodyさん:2014/06/24(火) 21:11:44.93 ID:???.net
- ネットワークの問題かApache benchの使い方間違えてるに1ペリカ
- 775 :nobodyさん:2014/06/24(火) 23:54:56.03 ID:NjjfXiKQ.net
- 検索ボタンを押した際に
GETパラメータでcakeのコントローラにアクセスを掛けたいのですがどうすれば良いでしょうか?
本来は、検索ボタンを押した際に@でコントローラのメソッドにアクセスを
したいのですが、Aになってしまいます。
@・・・期待しているGETアクセス
http://test.com/hoge/buta/123/tarou
A・・・想定外に生成されるURL
http://test.com/hoge/buta?id=123&name=tarou
コントローラ
HogeControler
{
public function Buta($id , $name)
{
//ここで「/」区切りでアクセスされた値を取得する。
}
}
HTML
<form name="name_form" action="/hoge/buta" method="get">
<input type="text" id="id_test" name="id" value="">
<input type="text" id="id_test" name="name" value="">
</form>
- 776 :nobodyさん:2014/06/25(水) 00:05:21.21 ID:???.net
- javascript
- 777 :nobodyさん:2014/06/25(水) 00:44:49.49 ID:???.net
- >>775
GETパラメータならAで正しいだろ
- 778 :nobodyさん:2014/06/25(水) 00:53:52.36 ID:???.net
- >>775
HTTPのお勉強からやり直しましょう
- 779 :774:2014/06/25(水) 01:07:07.36 ID:1IpoS71w.net
- >>777 >>776
やはり通常のFormではCakePHP用のURLを生成する事は出来ないみたいですね。
仕方無いので検索ボタンをクリック時に動的にURLを組み替えてリダイレクトする事により実装する事にします。
- 780 :nobodyさん:2014/06/25(水) 01:11:23.04 ID:???.net
- 例に突っ込むのもアレだが
ID指定した時点で検索というよりただの詳細表示のような
- 781 :nobodyさん:2014/06/25(水) 01:50:00.94 ID:???.net
- javascriptでやるのが無難だな。俺もそうしてるし。
- 782 :nobodyさん:2014/06/25(水) 12:47:26.75 ID:???.net
- 検索項目が増える時のことを考えると、
2の方がいいと思うんだが
- 783 :nobodyさん:2014/06/25(水) 13:46:34.28 ID:cgps1MKk.net
- >2の方がいいと思うんだが
どういうこと?
- 784 :nobodyさん:2014/06/25(水) 14:13:35.35 ID:???.net
- そのあたりはAPIの設計に関わることだからなんとも言えない
- 785 :nobodyさん:2014/06/25(水) 14:21:54.78 ID:???.net
- 検索項目が増えるのにGETでやりたいってのは、設計ミスじゃね?
それならPOSTにしろよ
- 786 :nobodyさん:2014/06/25(水) 15:45:34.59 ID:???.net
- >>783
ルーティングや引数の設定が面倒。
ていうか大体の検索エンジンとかgetパラメータでやってね?
- 787 :nobodyさん:2014/06/25(水) 20:30:38.80 ID:???.net
- 冪等かつ安全な処理はGETが普通っすね
POSTだとキャッシュもされないし
- 788 :nobodyさん:2014/06/25(水) 21:43:08.93 ID:???.net
- 記事中の
hoge.com/app/webroot/media/tarot.jpg
が読まれた際、
hoge.com/media/tarot. jpg
が読まれるようにしいのですが、良い方法ないでしょうか?
nginxでやってます。
ちなみにhoge.comは自分のドメインです。
- 789 :nobodyさん:2014/06/25(水) 21:50:26.46 ID:???.net
- >>788
意味わからん
- 790 :nobodyさん:2014/06/25(水) 22:32:59.91 ID:???.net
- >>789
すいません。自己解決しました。
- 791 :nobodyさん:2014/06/26(木) 02:12:49.47 ID:???.net
- せっかくだから張っておけよ
http://www.matomater.com/16864/
- 792 :nobodyさん:2014/06/26(木) 21:12:17.80 ID:ceT3Qpnq.net
- linux のシェルについての話しはどこですれば良いですか?
ここだとすれ違いですよね?
- 793 :nobodyさん:2014/06/26(木) 21:39:46.70 ID:???.net
- php で日付の正規表現を行いたいのですが
以下の形式の日付型文字列であればOK、違っていればNGと厳密なバリデーションチェックを掛けたいのですが
どうすれば良いでしょうか?
2014-06-10
- で split してチェックを掛けるしかないのでしょうか?
- 794 :nobodyさん:2014/06/26(木) 22:09:00.35 ID:???.net
- $check = '2014-06-10';
$isValid = date('Y-m-d', strtotime($check)) === $check;
- 795 :nobodyさん:2014/06/26(木) 22:17:51.48 ID:h6oXqOHu.net
- >>794
サンクス!
ここまで短く判定出来るなんて、、、
驚きです。
- 796 :nobodyさん:2014/06/26(木) 22:29:39.04 ID:???.net
- PHPって質問スレないのか?
- 797 :nobodyさん:2014/06/26(木) 22:32:22.88 ID:???.net
- date関数って第二引数にfalse突っ込んでも0と同じ扱いで動くのか
きめえな
- 798 :nobodyさん:2014/06/26(木) 22:57:46.67 ID:???.net
- >>797
大丈夫だよ。あなたの顔に比べれば断然綺麗なものですよ^^b
- 799 :nobodyさん:2014/06/26(木) 23:04:09.80 ID:???.net
- これがPHPerです
- 800 :nobodyさん:2014/06/26(木) 23:54:58.72 ID:???.net
- キモくても何でも動けばいいんだよ。形にこだわり過ぎるのはよくない
- 801 :nobodyさん:2014/06/27(金) 11:40:50.24 ID:???.net
- デザインやHTMLコーディングもやっている人に聞きたいんだけど、
先にHTMLコーディングをしてある程度のファイルを作って、
その後にViewファイルを作る?それともいきなりViewから作る?
俺はトップページとか主要なページのHTMLコーディングを先にして
それからView化するだけど、後から変更する事が多くて二度手間になるのを感じる。
だから、先にデザインとかレイアウトとか全て完璧に決めて、
それからView化した方が良いのかな?とも思うんだけど、
すぐに動きを見たいから、Controllerと同時に作りたくなる。
結果、直してばかりで面倒になって投げ出したくなるw
そんなアプリばかり作ってるんだけど、何か良いやり方はないかな?
- 802 :nobodyさん:2014/06/27(金) 12:27:28.48 ID:???.net
- 手書きラフ
↓
Photoshop
↓
マークアップ
↓
CSS
- 803 :nobodyさん:2014/06/27(金) 12:28:38.18 ID:???.net
- >>801
後からの変更を少なくする調整力があれば問題なし。
- 804 :nobodyさん:2014/06/27(金) 13:16:39.40 ID:???.net
- >>803
俺も同じやり方なんだが、後からマークアップを変えたくなる。
>>803
Cakeの場合、レイアウトやエレメントに分けるだろ?
その後にマークアップの変更やデザインの追加・変更などが入ると、
何度もやり直したりして、投げ出したくなる
- 805 :nobodyさん:2014/06/27(金) 16:32:32.36 ID:???.net
- たしかにビューは混沌とするからな
俺はややこしくなりそうな場合だけは
ビューには echo 以外は一切記述しないのを目標に、
専用のヘルパーを作って加工のロジックは隠ぺいするようにしてる。
それなりに扱い易くはなるが、万能ではない。
- 806 :nobodyさん:2014/06/29(日) 22:38:39.46 ID:qTkMeLPd.net
- JavaScriptを用途ごとにファイルに分けると、本番環境にアップする最に圧縮する手間が凄くかかります。
そこで、1ファイルにゴリゴリ共通関数も纏めて書いてますが、皆さんはどうしてますか?
- 807 :nobodyさん:2014/06/29(日) 22:52:42.19 ID:???.net
- >>806
gruntでまとめて処理
coffeescriptで用途ごとにファイル作成ってやってるよ
- 808 :nobodyさん:2014/06/30(月) 08:44:32.98 ID:???.net
- 僕はgulpちゃん!
- 809 :nobodyさん:2014/06/30(月) 14:03:48.42 ID:???.net
- そもそも圧縮アップしない。ファイルサイズが少々減る程度で、大して変わらん
- 810 :nobodyさん:2014/06/30(月) 16:21:21.70 ID:???.net
- phpstormで自動圧縮できるんじゃないだろうか。
- 811 :nobodyさん:2014/06/30(月) 17:47:06.48 ID:cdSjRfUN.net
- >>809
圧縮しないとソースコード筒抜けじゃん。
難読化しないといけないんとちゃいまっか?
- 812 :nobodyさん:2014/06/30(月) 20:09:23.46 ID:???.net
- >>811
Javascriptだろ?筒抜けで困ることなんて無いと思うが
- 813 :nobodyさん:2014/06/30(月) 20:22:22.30 ID:cdSjRfUN.net
- >>812
我ながらコードセンスが良い
綺麗なコードなのでぱくられたくないなーとw
- 814 :nobodyさん:2014/07/01(火) 19:58:59.95 ID:???.net
- Cakeでtwigを使いたいんだが
TwigView以外で使えるのない?
- 815 :nobodyさん:2014/07/02(水) 17:32:38.36 ID:???.net
- Cake2系でhasManyの絞り込みってどうすれば良いのでしょうか?
$this->Model->hasMany['Hoge']['conditions'] = array('Hoge.type' => 1);
$data = $this->Model->find('all');
とすれば、hasMany先のテーブル内で絞り込みは出来るのですが、
絞り込みの結果、「一致するデータがない」場合でも、
Modelのデータは取得できてしまいます。
なにか良い書き方、方法は無いでしょうか?
- 816 :nobodyさん:2014/07/02(水) 23:13:55.69 ID:???.net
- cakeのmodelのリレーションってみんな使ってるのかな。
俺的には使わないほうが後々面倒がないという考えなんだが。
- 817 :nobodyさん:2014/07/03(木) 00:15:43.70 ID:???.net
- >>815
Hoge モデルを、hasMany とは別に存在チェック用に hasOne でアソシエーション張る
$hasOne = array('HogeOne' => array('className' => 'Hoge'));
で、検索条件に HogeOne.id != null を加える。
- 818 :nobodyさん:2014/07/03(木) 00:16:37.86 ID:???.net
- >>816
何のためにCake使ってんのか意味不明すぎる
- 819 :nobodyさん:2014/07/03(木) 00:28:54.40 ID:Gi3lwfX6.net
- 仮に2chの様な規模の掲示板をcakeで構築しようとしたら
(寧ろ構築は出来るかもしれないけど)
パフォーマンス劣化が半端無い気がするのですが如何でしょうか?
2chがDBを使わずにログファイルで管理しているのは
やはりFW何かを使うと速度低下が否めないからでしょうね。
- 820 :814:2014/07/03(木) 00:36:46.85 ID:???.net
- >>817
出来ました!!!こんな方法があったんですね。
大変勉強になりました。ありがとうございました。
- 821 :nobodyさん:2014/07/03(木) 00:56:55.55 ID:???.net
- 2chのread.cgiってmod_cgidso使っててC言語製じゃなかった?
どの程度の性能なのかしらんけどFW以前にPHP使ってる時点ですでにサーバの数増やさざるを得なさそうな気が
ORMやFW使うとさらに遅くなるってのは間違いない
- 822 :nobodyさん:2014/07/03(木) 01:07:33.29 ID:???.net
- >>819
cakeが他のFWより極端に遅いってのがあるから
FW以前の話だな
- 823 :nobodyさん:2014/07/03(木) 01:11:12.39 ID:???.net
- http://www.techempower.com/benchmarks/#section=data-r9&hw=peak&test=query
FacebookみたいにHHVM使うなら話は別かもな
Cakeがまともに動くのかしらんが
- 824 :nobodyさん:2014/07/03(木) 01:28:28.14 ID:???.net
- >>823
hhvmが早いといっても、php-raw(素のphp)の2倍しか速くない
cakeは遅すぎて計測不能
cakeよりちょっと速いといわれる
railsやsymfonyでphp-rawで書いたのの1/10の速さでしかない
cakeじゃ無理だな
fuelでphp-rawの半分、phalconでphp-rawと同じぐらいだからここら辺で書かないと
他はyafやphpixieな
- 825 :nobodyさん:2014/07/03(木) 01:37:08.52 ID:???.net
- Cakeで頑張るならPHPの中間コードキャッシュ入れて
DBスレーブサーバ(ないしAmazon RDS)とロードバランサ使って
ユーザが増えた時はサーバ台数多めで対応
徐々にコードやキャッシュを調整して台数や一台あたりに要求される性能を減らしていくって感じか
速度もある程度はスケールアウトでカバーできるいい時代になった
まず新サービスに大勢の人が来る保証もないし
動作速度より開発速度や書きやすさを優先するからこそのFWっしょ
そんなに速度が気になるなら最初からPhalconやJavaやJVM系言語やC#でも使うよろし
- 826 :nobodyさん:2014/07/03(木) 01:41:59.54 ID:???.net
- >>825
バランスじゃないのかな?
railsは突出して開発速度?が速いけど
cakeだとphalconと比べてもあまり大差ないみたいだしな
流石に10倍速度が違う≒アクセス10倍の差があるだからな
あくまで、速度が重要視される場合な。
cakeで捌ける人数しかこない前提なら問題ないし
元の話の2chなら話にならないよな
- 827 :nobodyさん:2014/07/03(木) 01:56:21.45 ID:???.net
- http://www.techempower.com/benchmarks/#section=data-r5&hw=i7&test=query
http://www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=query
CakePHPが遅すぎて計測不能なんじゃなくてフレームワークが増えすぎて中の人が徐々に手が回らなくなっているのでは?
過去のを見るとちゃんと結果が載ってる回もある
ところでDartの結果良いな
いつの間にこんなに
- 828 :nobodyさん:2014/07/03(木) 02:01:52.84 ID:???.net
- >>827
githubでコード集めてるから
人気がなくなった(外部のコードを書く人がいなくなった)ってほうになるな
- 829 :nobodyさん:2014/07/03(木) 02:04:48.87 ID:???.net
- >>827
r7でrailsぐらいか
- 830 :nobodyさん:2014/07/03(木) 02:05:10.64 ID:???.net
- 開発者がCakePHPから他に移ってるのもあるだろうし
Cakeでベンチ対決に参加しても悲しくなるだけだし
- 831 :nobodyさん:2014/07/03(木) 02:09:04.71 ID:JnE+cuIZ.net
- >>823 >>823 >>823 >823
そもそも2ch位のトラフィックを捌けるFWとかなさそうですね。
- 832 :nobodyさん:2014/07/03(木) 02:10:17.86 ID:JnE+cuIZ.net
- >>825
流石に2chクラスだとCakeじゃ無理でしょ。
- 833 :nobodyさん:2014/07/03(木) 02:11:15.57 ID:JnE+cuIZ.net
- cakeで作られている大規模サイトで有名なのはどこですか?
- 834 :nobodyさん:2014/07/03(木) 02:14:41.70 ID:???.net
- 2chクラスの人が集まるコンテンツを作る方が大変なんですけど
- 835 :nobodyさん:2014/07/03(木) 02:33:52.59 ID:???.net
- >>831
'捌ける'の前提がよく分からんが
RDBとORMありのFW使った上で2chと同じサーバスペック同じ台数で捌けるかどうかってことか?
Cakeには無理だろうが全FWが駄目と判断するのは早計でしょ
2chのWebサーバって未だにEvent MPMがまともに使えないVer.のApacheだし
書き込みのほうのbbs.cgiは所詮Perlだしガチガチに高速化されてるとも思えないな
http://www.techempower.com/benchmarks/#section=data-r9&hw=i7&test=json
>>834
まったくだ
- 836 :nobodyさん:2014/07/03(木) 02:34:55.37 ID:???.net
- >>833
nanapiとランサーズ
- 837 :nobodyさん:2014/07/03(木) 02:56:35.42 ID:JxPD7Z4w.net
- >>836 >>836
ランサーズの重たさを見てやはりcakeの底が見えました。
ところでなんで ランサーズ がcake使ってるってわかったの?
- 838 :nobodyさん:2014/07/03(木) 03:02:55.42 ID:???.net
- 公式ブログで公表してるから。
- 839 :nobodyさん:2014/07/03(木) 14:01:04.31 ID:???.net
- >>827
やっぱJVM系優秀だなぁ。
- 840 :nobodyさん:2014/07/04(金) 07:21:47.42 ID:???.net
- これ実は深刻だな。
https://github.com/cakephp/cakephp/issues/3857
運が悪いと、ある日突然 DB が壊滅するかもしれん。
更新時に id も無駄にセットしていれば被害は(ほぼ)出ないわけだが、
常にトランザクションを張っておくのが正解かな?
- 841 :nobodyさん:2014/07/04(金) 23:56:36.75 ID:SDFDitCY.net
- PHPで先頭と末尾に全角・半角スペースが含まれているかを判定するにはどうすれば良いでしょうか?
" aaa bbb "
→ 含まれている
"aaa bbb"
→ 含まれていない
※ワードの真ん中にスペースがあってもOKですが
文字列の前後に全角・半角スペースが含まれている場合にはバリデーションでエラーを通知したいです。
- 842 :nobodyさん:2014/07/05(土) 00:14:24.58 ID:???.net
- /^[ ]|[ ]$/
- 843 :nobodyさん:2014/07/05(土) 00:26:41.66 ID:???.net
- u が抜けてるぞ
/^[ ]|[ ]$/u
- 844 :nobodyさん:2014/07/05(土) 00:26:45.58 ID:bSC+q1kt.net
- >>842
サンキュー
- 845 :nobodyさん:2014/07/05(土) 00:45:30.65 ID:aE3ig5ya.net
- >>843 >>843
さんくす
やりた関数が作れました。
- 846 :nobodyさん:2014/07/05(土) 00:49:59.15 ID:???.net
- >>840
トランザクションしか手の打ちようがないと思うけど、
これってどんな ORM でも同じ問題おこるんじゃないの?
- 847 :nobodyさん:2014/07/05(土) 01:06:28.71 ID:???.net
- うげえ、まだこんな問題あるのかよ。
以前WHERE 1=1で運用中のテーブル全消しされた悪夢が蘇る。
- 848 :nobodyさん:2014/07/05(土) 01:35:04.96 ID:3rDWh52g.net
- バリデーションはAjax使って全部サーバサイドだけで行っています。
JavaScriptでやるよりセキュリティー的にも開発工数の短縮化対策にも良いよね?
- 849 :nobodyさん:2014/07/05(土) 01:38:16.33 ID:???.net
- レスポンスが若干もっさりする、というデメリットに目をつむれるならそれでもいいんじゃね?
- 850 :nobodyさん:2014/07/05(土) 03:11:16.29 ID:???.net
- >>845
trim使った方がいいよ。
スペースあったら自動削除して登録みたいな。
- 851 :nobodyさん:2014/07/05(土) 03:35:07.33 ID:???.net
- >>848
エラーがなければ送信ボタン押すってやつ?
入力項目が多いと重くなりそうだし、汎用性も低いんじゃないか?
- 852 :nobodyさん:2014/07/05(土) 07:31:42.75 ID:???.net
- >>846
指定したレコードだけでなく全てが破壊されるFWは他に見たことないな…
- 853 :nobodyさん:2014/07/05(土) 11:32:54.03 ID:???.net
- >>848
requiredとかありふれた形式チェックくらいは、クライアントでやってもいいんじゃね。
開発工数ったって、そんなのほとんどないに等しいだろ。
- 854 :nobodyさん:2014/07/05(土) 20:25:37.65 ID:???.net
- 双方に同じチェック実装するのがなんかだかなあ
- 855 :nobodyさん:2014/07/05(土) 21:59:45.13 ID:???.net
- >>854
俺も思う。
- 856 :nobodyさん:2014/07/05(土) 22:18:10.80 ID:???.net
- AjaxでCakeのバリデーション呼び出せばいいやん
- 857 :nobodyさん:2014/07/05(土) 23:28:29.38 ID:???.net
- twitterのようにフォローボタンをAjaxで処理するにはどうしたらいいの?
画面遷移なしで"フォロー"と"フォロー解除"を行いたいです。
AjaxとjQuery初心者でググってもイマイチよく分からない...
- 858 :nobodyさん:2014/07/06(日) 00:29:47.41 ID:???.net
- 856ですが、内容がアレだったのでこう少し詳しく。
Jsヘルパーのrequestメソッドを使用しようと思ってます。
@『フォロー』ボタンを押す(ボタンはdiv #follow)
AAjaxでpost送信
B「フォローした相手」のデータをsaveする
C画面遷移なしで『フォロー解除』ボタン(ボタンはdiv #unfollow)に切り替え
Cのボタンの切り替え方法が分かりません。
よろしくお願います。
- 859 :nobodyさん:2014/07/06(日) 05:13:50.01 ID:ayo5h1or.net
- >>854 >>854
JavaScript でチェックなんかしなくてもサーバサイド一本にすると
凄く開発効率があがるよ。マジオススメ。
両方チェックとか馬鹿の極みだろ。
- 860 :nobodyさん:2014/07/06(日) 05:31:33.41 ID:???.net
- >>859
それ、開発効率が上がるって言わねえよ
単に要件を下げてるだけだ
- 861 :nobodyさん:2014/07/06(日) 06:18:30.25 ID:ayo5h1or.net
- >>860
じゃー、お前はクライアントとサーバサイドで同じ処理をガリガリかいてろ
- 862 :nobodyさん:2014/07/06(日) 10:04:46.22 ID:???.net
- そこでnode.jsっすよ(棒
- 863 :nobodyさん:2014/07/06(日) 11:47:11.80 ID:???.net
- サーバサイド一本って、それ普通じゃないの?
普通というか正当なCakeのバリデーションというか。
そこから凝るとAjaxを使ったクライアントサイドになるわけで。
- 864 :nobodyさん:2014/07/06(日) 11:53:03.79 ID:???.net
- そもそもサーバサイドのバリデーションを省略することがありえないからな
- 865 :nobodyさん:2014/07/06(日) 12:19:46.52 ID:???.net
- >>858
ajaxの成功時のコールバックに書けばいいよ
jqueryのpostメソッドなら3番目のcallback引数、ajaxメソッドならoptionsのsuccessプロパティ
- 866 :nobodyさん:2014/07/06(日) 12:21:22.39 ID:???.net
- サーバサイドは必須
クライアントサイドは要件次第
- 867 :nobodyさん:2014/07/06(日) 13:35:04.95 ID:ayo5h1or.net
- サーバサイドは必須
クライアントサイドは暇人のみ必須
- 868 :nobodyさん:2014/07/06(日) 13:50:27.42 ID:???.net
- とりあえず、HTML5だけでやれるものでもやったらいいじゃん。
- 869 :nobodyさん:2014/07/06(日) 14:01:42.86 ID:???.net
- クライアントでのバリデーションが要件次第って理解できない奴はそういう仕事をやった事ないだけか、もしくは普段低品質な物を納品してるだけなんじゃね?ほっとけよ
- 870 :nobodyさん:2014/07/06(日) 15:40:52.42 ID:ayo5h1or.net
- クライアントでバリデーションを幾ら入れたって
サーバサイドに入れなくちゃ意味ねーだろ。
- 871 :nobodyさん:2014/07/06(日) 15:44:02.56 ID:???.net
- 噛み合ってないなあ
サーバサイドに入れるのは大前提で
UIの質の向上のためにクライアントサイドにも実装するかどうかってことでしょ?
入力時にリアルタイムでバリデーションするとかそんな感じの
その上で実装方法としてAjaxでサーバサイドのバリデーションを使いまわす方法と
クライアントでJavaScriptで同じバリデーションを書く方法があるって話
- 872 :nobodyさん:2014/07/06(日) 15:51:05.55 ID:???.net
- requiredとかtype属性つけるだけで、暇人とか工数とか言ってるの笑えるわw
HTML5が対応していないブラウザなら当然スルーされるから、サーバサイドでのVaildationになるのは自明だろ。
いまどき最低限それくらい書いといて当たり前。
- 873 :nobodyさん:2014/07/06(日) 15:58:05.81 ID:???.net
- >requiredとかtype属性つけるだけで
見たところその前提で話してるのは少数派
簡単なチェックだけクライアントサイドでも実装すればいいという意見はもっともだけど
他はJSで書かないといけないような
もっと複雑なチェックも含めて話してるんじゃないのか?
- 874 :nobodyさん:2014/07/06(日) 16:20:06.81 ID:???.net
- 根本的にクライアント側からのHTTPリクエストなんていくらでも変えられるから
クライアント側のチェックを信用せずサーバ側の実装が必須ってのは前提としてOKなんだよな?
これは仮にHTML5に対応しないブラウザがこの世から消滅したところで変わらない
だからクライアントのバリデーションを実装する主な目的は
セキュリティやデータの正確さの保証ではなくUI・UXもしくはサーバ負荷の低減
早い段階で(サーバを煩わせずに)ユーザが正しくない入力に気付くことは必須ではないが有用だってこと
仕事なら要件次第というのもその通りだろうし
HTML5の属性で実現できる程度なら常に書いておけというのもわかる
各自のイメージしている仕様や前提が違うだけだよな
- 875 :nobodyさん:2014/07/06(日) 16:25:16.79 ID:???.net
- あとはクライアントサイドならレスポンスが早いというメリットもあるね
クライアントサイドのバリデーションはなくてもいいけど、あったらうれしい
そんな感じなのはみんな分かってると思うけど、そうじゃないのかなー?
- 876 :nobodyさん:2014/07/06(日) 16:31:12.33 ID:???.net
- >>875
俺は、あなたと同じ感じ。
あったら嬉しい♩
- 877 :nobodyさん:2014/07/06(日) 20:43:56.62 ID:???.net
- そう、レスポンス
それが分からない奴はその程度の品質の仕事しかしてないって事
- 878 :nobodyさん:2014/07/07(月) 00:35:24.40 ID:???.net
- うわあんあ!プログラム全部作り直してーって思った時どうする?
我慢して作り続けるか、一から作り直すか。
- 879 :nobodyさん:2014/07/07(月) 07:41:59.67 ID:???.net
- >>878
作ればいいじゃない
- 880 :nobodyさん:2014/07/07(月) 11:17:31.99 ID:???.net
- 最近日本語が読めない人がレスを延ばしてるのな
- 881 :nobodyさん:2014/07/08(火) 18:18:22.90 ID:???.net
- テストケースで、今週の日付を返すメソッドをテストする時どうする?
テスト側でわざわざ今日の日付を取得してでもやるべきなのかな。
- 882 :nobodyさん:2014/07/08(火) 19:21:17.99 ID:???.net
- なんかそれ簡単にするPHPの追加機能なかったっけ
- 883 :nobodyさん:2014/07/08(火) 19:56:03.84 ID:???.net
- >>881
テストケースがあるならやらないとダメなのでは?
テストケース作った奴に聞け
- 884 :nobodyさん:2014/07/08(火) 20:34:19.53 ID:???.net
- >>883
テストケースを自分で作ってるんだけど、
テストするためにメソッド追加するのは本末転倒だし。
- 885 :nobodyさん:2014/07/08(火) 21:10:41.73 ID:???.net
- モック使うだろ普通
- 886 :nobodyさん:2014/07/08(火) 21:57:00.34 ID:???.net
- 焦点は現在時刻を返す部分をいかに切り分けるかってとこじゃない
より汎用的に引数に指定した日時の週の日付を返すメソッドを予め作ってテストしておいて
本体はその汎用的なメソッドを現在時刻を引数に呼び出すだけのメソッドにして目視確認
ってのが驚きの少ない無難な方法だと思うけどそのメソッド自体にテストケース書けと言われると微妙か
2つ目は現在時刻を返すメソッドを実装したクラスのインスタンスを注入する仕様にする方法
テストの時は同じインターフェースで固定値を返すように実装したモックオブジェクトを代わりに注入
PHPUnitならgetMockつかえばモックオブジェクト作るのは簡単だね
もし他のライブラリ使ってもいいならメソッドの実装にCarbonを使う
DateTimeクラスを継承していて非常に使いやすいし
現在時刻を返すスタティックメソッド(Carbon::now)もモックできるので楽
https://github.com/briannesbitt/Carbon
- 887 :nobodyさん:2014/07/08(火) 22:07:18.39 ID:???.net
- ごめん正確には現在時刻じゃなくて現在日時だな
- 888 :nobodyさん:2014/07/08(火) 23:07:28.08 ID:???.net
- >>886
>>886
ありがとうございます!
やってみます。
- 889 :nobodyさん:2014/07/08(火) 23:27:31.87 ID:???.net
- githubで配布されてる、timecopってライブラリいいよ。コアの時刻系関数を全部上書きされ、モック日付を設定するAPIが追加されるので、今日があたかも昨日かのようにテストできる。結構な規模のシステムで1年くらい使ってるけど、特にハマりどころもなかったよ。
- 890 :nobodyさん:2014/07/08(火) 23:32:03.79 ID:???.net
- Rubyのあれの移植か
ライブラリじゃなくてエクステンションだね
- 891 :nobodyさん:2014/07/08(火) 23:43:10.63 ID:???.net
- そうだね。すまん。
- 892 :nobodyさん:2014/07/09(水) 02:01:00.01 ID:???.net
- pr関数を改造してbasics.phpに書いてたんだけど、composerでupdateすると上書きされちゃうのね。
上書きされずpr関数を上書きしたい場合
どうすればいいかな?
- 893 :nobodyさん:2014/07/09(水) 08:16:02.07 ID:OfaKG9nk.net
- 無理ちゃうか?
- 894 :nobodyさん:2014/07/09(水) 19:17:35.46 ID:of68YZwX.net
- すれ違いかもしれないですが
Windows 7 で一番最初に付けたPC名を変更する事は出来ますか?
例)
USER_A
↓
USER_B
- 895 :nobodyさん:2014/07/09(水) 21:25:01.58 ID:???.net
- PHPもフレームワークも関係ありませんよ?
Windows板に行きましょう
- 896 :nobodyさん:2014/07/09(水) 21:40:14.07 ID:???.net
- >>892
あえてやるなら composer のコマンドと basics.php の編集のバッチを
続けて記述したスクリプトを書くってことぐらいしか思いつかん。
具体的な書き方は分からん。
- 897 :nobodyさん:2014/07/10(木) 10:49:28.02 ID:???.net
- User(会員)→Photo(会員が投稿した写真)
というモデル構成の場合について質問です。
写真を置くディレクトリ構造ってどうしてますか?
http://example.com/images/users/(会員ID)/(画像ファイル名)
http://example.com/images/photos/(写真ID)/(画像ファイル名)
http://example.com/images/users/(会員ID)/photos/(写真ID)/(画像ファイル名)
という3パターンが思い浮かぶのですが、
どうした方が後々管理しやすいと思われるでしょうか?
皆さんがやっている方法を教えてください。
- 898 :nobodyさん:2014/07/10(木) 14:19:59.62 ID:???.net
- サービスの内容による。
少なくとも想定する会員数と画像の枚数、
会員毎の画像以外のアセットの有無、
あるなら何がどの程度か、などがないとなんとも言えない
- 899 :nobodyさん:2014/07/10(木) 21:45:46.46 ID:???.net
- サブドメイン http://img.example.com/
データベースにBLOB型でぶち込む
と言う手もあるぞよ
- 900 :nobodyさん:2014/07/10(木) 22:31:15.57 ID:???.net
- >>899
BLOB型でぶち込むって、ファイル自体をDBで保存するの?
- 901 :nobodyさん:2014/07/11(金) 10:54:21.57 ID:???.net
- そういうことでしょ。
メリットは、DBMSの一貫性保持の機構がそのまま利用できること。
デメリットは、ファイルシステムに保存する場合より、パフォーマンス面でかなーり不利。
SQLServerでいうところの、FileStreamみたいなのが欲しいところ。
- 902 :nobodyさん:2014/07/12(土) 05:21:43.91 ID:eXF6HCkL.net
- お前ら開発の時ローカルで開発して
コードをサーバにアップするっていう開発スタイル?
面倒なのでいつもサーバ直結してリモートプロジェクトで開発してるんだが。
これってあかんの?
- 903 :nobodyさん:2014/07/12(土) 07:03:18.07 ID:???.net
- >>902
いろいろおかしい
- 904 :nobodyさん:2014/07/12(土) 07:06:49.47 ID:eXF6HCkL.net
- >>903
クライアント環境とサーバ環境で差異が出るでしょ?
だったら直接リモート接続で開発した方が効率が良いと思うんだよね。
- 905 :nobodyさん:2014/07/12(土) 07:26:55.38 ID:???.net
- >>902
別におかしくない
- 906 :nobodyさん:2014/07/12(土) 08:23:55.68 ID:Xst9czPt.net
- あほか。Vagrantとgit使えよ!
- 907 :nobodyさん:2014/07/12(土) 09:07:45.94 ID:???.net
- >>902
それだとバグった状態のまま不特定多数の人間が使えることになる
画面表示がおかしいだけならまだしも、本番DBがぶっ壊れたり
セキュリティに大穴があいた状態になるかもしれない
- 908 :nobodyさん:2014/07/12(土) 09:12:03.92 ID:???.net
- 変更中にアクセスされたときに
不具合が起きる可能性よりも
メリットを感じるなら
やればいいさ
- 909 :nobodyさん:2014/07/12(土) 09:25:16.62 ID:???.net
- >>907
本番につなぐなんて誰が言ったのか
- 910 :nobodyさん:2014/07/12(土) 10:53:52.48 ID:???.net
- 釣りか
- 911 :nobodyさん:2014/07/12(土) 11:14:11.35 ID:???.net
- コードをサーバにアップ???
- 912 :nobodyさん:2014/07/12(土) 11:26:59.71 ID:???.net
- >>907
一瞬なら大丈夫
- 913 :nobodyさん:2014/07/12(土) 11:36:07.30 ID:???.net
- これって、一人だけでオレオレ開発してる人だよな
- 914 :nobodyさん:2014/07/12(土) 11:50:03.80 ID:???.net
- gitの使い方が全く分からん
リポジトリやコミットの意味はわかるんだが
- 915 :nobodyさん:2014/07/12(土) 11:50:20.97 ID:???.net
- サーバが自分用の開発サーバなんだろ
ツマンネ
- 916 :nobodyさん:2014/07/12(土) 12:02:45.78 ID:???.net
- どうやったってデプロイの瞬間とか無防備なんだし
実稼働中の追加案件開発でそうなるのは仕方ない
- 917 :901:2014/07/12(土) 12:03:22.96 ID:eXF6HCkL.net
- http://test.main_site.com/ ← こっちで開発(基本認証)
↓ テストOK 本番環境へのシェルの実行
http://main_site.com/ ← こっちが本番環境
こーいう感じで開発しています。
クライアントとサーバとの誤差もすくなくて生産効率は凄く良いのですが、、、
あかんの?
- 918 :nobodyさん:2014/07/12(土) 12:08:08.33 ID:???.net
- >>917
それは至って普通にある形
あかんのは>>902の書き方
- 919 :nobodyさん:2014/07/12(土) 12:18:20.16 ID:???.net
- 916の言うクライアントとは?
http://test.main_site.com/のこと?
テストOK⇒本番デプロイ
その後、やっぱりまずかった元に戻そうって時にシェル1発で戻せるようにできてる?
- 920 :nobodyさん:2014/07/12(土) 12:29:59.91 ID:???.net
- >>916
追加案件とかブランチ切って開発してテストして問題なければマージじゃないの?
git 使わない開発とかもはや想像つかないけどな。
- 921 :nobodyさん:2014/07/12(土) 12:30:41.14 ID:???.net
- >>914
soursetree使うといいで
- 922 :nobodyさん:2014/07/12(土) 14:28:02.05 ID:???.net
- git使ったほうが良いサイトってどのくらいの規模?
テーブル数が50ぐらいなるサイトは使った方がいい?
- 923 :nobodyさん:2014/07/12(土) 14:30:31.69 ID:???.net
- 小規模でも使った方がいいよ
別にそんな難しいもんじゃないし
- 924 :nobodyさん:2014/07/12(土) 14:40:57.65 ID:???.net
- >>919
シェルで環境戻すってどうやるの?
- 925 :nobodyさん:2014/07/12(土) 19:25:17.41 ID:???.net
- foreachで最初と最後の配列を特定するにはどうすればいいの?
PHPのreset、end関数みたいなのがあればいいんだけど。
- 926 :nobodyさん:2014/07/12(土) 20:05:27.81 ID:???.net
- >>912
ワロタ
- 927 :nobodyさん:2014/07/12(土) 20:43:33.58 ID:???.net
- >>925
お前、PHPじゃなくて何使ってんだよ
- 928 :nobodyさん:2014/07/12(土) 22:24:38.62 ID:???.net
- fizz buzzを勉強しろ
- 929 :nobodyさん:2014/07/13(日) 11:06:34.73 ID:???.net
- gitの話題で気になったが
本番環境でgit pullとかしてる奴いるの?
- 930 :nobodyさん:2014/07/13(日) 11:27:40.80 ID:???.net
- そりゃいるだろ
スレチだが
- 931 :nobodyさん:2014/07/13(日) 11:41:21.79 ID:???.net
- >>929
趣味では楽だからやってる
仕事では一切やらない
ファイルシステムとしての安全性が担保されてないはず
- 932 :nobodyさん:2014/07/13(日) 14:06:39.50 ID:???.net
- つまり、みんなはテスト環境・本番環境と2つ用意してるの?
ローカルでも用意している人もいるだろうし、場合によっては3つ?
- 933 :nobodyさん:2014/07/13(日) 14:34:23.28 ID:???.net
- 開発環境
テスト環境
本番環境
エンプラだと、ミドルが面倒(特にライセンス)だから、開発環境を多人数で共用することが多いけど、
Web系は、そういう制限が少ないから、個人個人がローカルに開発環境作るのが当たり前なんじゃね?
- 934 :nobodyさん:2014/07/13(日) 15:38:00.75 ID:???.net
- >>932
俺の場合はプロジェクトの規模によって違うな
- 935 :nobodyさん:2014/07/13(日) 15:40:00.87 ID:???.net
- そういう場合はテスト環境はステージング環境と言うところもあるね
最近は開発PCのスペックも十分でローカルにVM立ててやることも多いね
- 936 :nobodyさん:2014/07/13(日) 17:11:27.37 ID:???.net
- ローカル→xampp
テスト環境→自分で契約しているサーバ
本番環境→クライアントが契約しているサーバ
- 937 :nobodyさん:2014/07/14(月) 19:33:26.67 ID:???.net
- SOHOでもやってるのか?
- 938 :nobodyさん:2014/07/15(火) 13:33:30.91 ID:???.net
- Paginator->optionsの設定で質問です。
URLが
http://example.com/posts/:category_id/?type=1&area=2
だとして、Paginator->optionsを以下のように指定しました。
(:category_idはルーティング済みだとお考えください)
$this->Paginator->options(array('url' => array('controller' => 'posts', 'action' => 'index', 'category_id' => $category_id), 'convertKeys' => array('type', 'area')));
しかし、$this->Paginator->next()を表示した時のURLが
http://example.com/posts/:category_id/page:2
となっており、URLパラメータのtypeとareaが付いていません。
設定がおかしいのでしょうか?ご存知の方は教えてください。
Cake2.4.10を使用しています。
- 939 :nobodyさん:2014/07/15(火) 20:02:08.57 ID:???.net
- URL に page:2 がついているところを見ると、paramType を querystring にはしていないように思える。
convertKeys は paramType がデフォルトの named の時には何もしないよ。
つまり >>938 が想像している機能じゃない。
こうしたら動くのでは?
$this->Paginator->options(array('url' => array('controller' => 'posts', 'action' => 'index', 'category_id' => $category_id, '?' => $this->request->query)));
- 940 :nobodyさん:2014/07/15(火) 20:05:19.07 ID:???.net
- >>939
ありがとうございます!この方法で動きました
- 941 :nobodyさん:2014/07/15(火) 20:11:55.43 ID:???.net
- どういたしまして
- 942 :nobodyさん:2014/07/16(水) 01:11:04.31 ID:???.net
- HTMLヘルパーに関して教えて下さい。
以下のようにaタグ内にspanが2つ入ったHTMLを出力するには
HTMLヘルパーをどう書けば良いのでしょうか?
<a href ="http://hoge/controller/action/">
<span class="fuga">ABC</span>
<span class="piyo">XYZ</span>
</a>
HTMLのままビューに書くのは無しの方向でお願いします。
- 943 :nobodyさん:2014/07/16(水) 01:38:20.50 ID:???.net
- 第3パラメータ $options = array('escape' => false);
- 944 :nobodyさん:2014/07/16(水) 01:43:34.95 ID:???.net
- <?php
echo $this->Html->link(
$this->Html->tag('span', 'ABC', array('class' => 'fuga')) . PHP_EOL . $this->Html->tag('span', 'XYZ', array('class' => 'piyo'));
array('controller' => 'controller', 'action' => 'action', 'full_base' => true),
array('escape' => false)
);
?>
試してないけどこんな感じか
spanみたいな属性が環境に依存しないタグを複数入れ子にしてまでヘルパーに固執する意味があまりわからん
Well-Formattedなマークアップを確実に出力するメリットよりもHTMLの見通しが悪くなるデメリットが勝るように思える
このHTMLならURLの出力さえヘルパーに面倒見てもらえれば充分じゃね?
- 945 :nobodyさん:2014/07/16(水) 01:52:30.97 ID:???.net
- そうだな。aタグのhrefを<?php echo Router::url('/controller/action');?>
ってな感じにするだけで良いと思う。
- 946 :nobodyさん:2014/07/16(水) 02:18:18.31 ID:???.net
- >>943-944
どうも有り難うございます。
943さんの記述でいけました。
仰る通りここまで記述が長くなると
ヘルパーでの対応はやめた方が良さそうですね。
大変勉強になりました。
- 947 :nobodyさん:2014/07/16(水) 02:36:58.58 ID:???.net
- PHP 5.4でarray()の糖衣構文が使えればヘルパーまみれでも少しは読みやすくなるんじゃないかな
あとは<?php ?>と$thisとechoを一々書かなくて済むと最高なんだが
- 948 :nobodyさん:2014/07/16(水) 02:41:15.08 ID:???.net
- echo はshort_open_tagのONでいけるけど$thisは難しいな
- 949 :nobodyさん:2014/07/16(水) 02:52:19.44 ID:???.net
- その条件をほぼ満たしてるTwigのプラグインなら見かけたことあるけど使ったことはない
https://github.com/WyriHaximus/TwigView
- 950 :nobodyさん:2014/07/16(水) 06:10:15.29 ID:???.net
- 5.4 からは short_open_tag の設定に関わらず echo の短縮構文は常に有効。
$this はヘルパーを変数に入れ直せばほぼ消える。
- 951 :nobodyさん:2014/07/16(水) 08:31:58.76 ID:???.net
- HTMLヘルパーなんて使ったことないな。
何故わざわざ独特の書き方をして自分やHTMLコーダーに不便な思いを強いなくてはならないのか。
- 952 :nobodyさん:2014/07/16(水) 20:50:59.63 ID:???.net
- 新手の質問だよなそれw
素直に聞けば良いものを。。。
- 953 :nobodyさん:2014/07/17(木) 01:55:57.38 ID:4qeUm9n8.net
- >>919
安心しました。外をあまり知らないのでイレギュラーな開発スタイルかと思ってましたw
>>919
本番でNGにならない様に開発環境でおもいっきりテストしています。
もしバグがあった場合には、開発環境で開発&修正をして再び本番環境にスクリプトを展開する様にしています。
>>936
xamp バグが多過ぎない?
- 954 :nobodyさん:2014/07/17(木) 12:22:59.07 ID:???.net
- >>953
Cakeで開発する点においては、バグは感じないよ。
ただし、古いxamppのバージョンなら動作が糞重くなる
- 955 :nobodyさん:2014/07/17(木) 13:12:27.85 ID:???.net
- xamppのバグで困ったことはないが
Windows用のAPCやmemcachedがうまく動かず困ったことはある
バージョンの相性が厳しい
- 956 :nobodyさん:2014/07/17(木) 14:51:38.30 ID:???.net
- xampp ってそんなにバグあるか?
- 957 :nobodyさん:2014/07/17(木) 20:48:19.93 ID:???.net
- xampp俺も好きじゃないな。
linux環境と少し違うから環境整えるのに一苦労。
- 958 :nobodyさん:2014/07/17(木) 23:21:39.62 ID:???.net
- 個別に入れた方が後々いいしね。
どのみち、設定ファイルは触らないとダメなんだし。
- 959 :nobodyさん:2014/07/17(木) 23:23:50.62 ID:???.net
- シェルスクリプトとかcronとか動かねーしな。
もはやExcel開くときしかメリットを感じない。
- 960 :nobodyさん:2014/07/22(火) 11:17:54.78 ID:???.net
- 新しいの来たね。またここの住人さんの指摘かな。感謝感謝。
- 961 :nobodyさん:2014/07/22(火) 23:52:59.82 ID:???.net
- どういたしまして
- 962 :nobodyさん:2014/07/25(金) 03:13:26.91 ID:ZnC0S1uF.net
- cakePHPを使って事前にSQLを実行して作成済みの
ビューを実行するにはどういうコードを書けば良いでしょうか?
例)
hoge_view as (
select test_name , test_id as hoge_table );
この事前作成済みの hoge_view をcakePHP経由で呼び出したいです。
>>956
多過ぎて地道にmysql / php とかインストールしてますよ。
- 963 :nobodyさん:2014/07/25(金) 03:55:22.05 ID:???.net
- >>962
Model::query()
- 964 :nobodyさん:2014/07/25(金) 10:12:13.66 ID:???.net
- ビューのModel作りゃいいだろ
- 965 :nobodyさん:2014/07/25(金) 11:13:14.28 ID:???.net
- それすらわからず、xamppをdisるわけか・・・
- 966 :nobodyさん:2014/07/25(金) 11:41:59.02 ID:Q+uw5XLP.net
- >>963
Viewのモデル作成とかもあるんですね。
- 967 :nobodyさん:2014/07/27(日) 14:03:04.17 ID:akY7lnX2.net
- Cakeのバージョン:2.3だと思います。
2点質問があります。
(1)Authコンポーネントに関して
既存システムで「hoge_users」テーブルに対してauth認証を通す処理があります。
こちらに「fuga_users」テーブルに対してauth認証を通す処理を作成したいです。
ログインページは双方で別にしたいため、コントローラーも別になります。
既存処理はAppControllerでauth認証の設定をしているため、そこで分岐させれば
うまくいくのかと思ったのですがどうも上手くいきません。
上記のようなことを実現させるためには、どのような方法を取ればいいのでしょうか?
(2)webroot配下の静的ページに関して
例えばTestコントローラのresultアクションとしてあるURLの配下に
http://www.sample.com/Test/result/hoge.html
このように静的ページを配置したいと考えています。
URLも変更したくないため、極端な話 webroot/Test/result/ ディレクトリが
作成できればいいのですが、Cakeのルール?に即していないからか
http://www.sample.com/Test/result/hoge.html→表示される
http://www.sample.com/Test/result/→表示されなくなる
という状況になってしまいます。
こちらを上手く解決する方法があれば教えて頂けないでしょうか?
宜しくお願い致します。
- 968 :nobodyさん:2014/07/27(日) 15:18:41.97 ID:???.net
- composer使う場合、update時に対象外ファイルとか設定出来ませんか?
configファイルまでupdateされて困ってます。
- 969 :nobodyさん:2014/07/27(日) 18:07:31.12 ID:???.net
- >>968
saveの時に第三パラメーターで更新するカラムを指定すればいいよ
- 970 :nobodyさん:2014/07/29(火) 23:52:01.63 ID:???.net
- cakephp2.5.1をnginxの環境で試運転してるんだけど、
トップページをToppagescontrollerで運用していて、
routes.phpでRouter::connect('', array('controller' => 'Toppages', 'action' => 'index', 'home'));
とやっています。
FirefoxやIEでは正常に動作しますが、Chromeだけはなぜか
トップページが表示されず、https://github.com/cakephp/cakephp/blob/17ae40f0ce616edbbaa4f9b2381988f508b7cbfd/lib/Cake/Console/Templates/skel/webroot/index.php
と同じ内容の生PHPファイルがダウンロードされます。
誰か解決方法分かる人いますか?
- 971 :nobodyさん:2014/07/30(水) 00:39:00.62 ID:???.net
- リダイレクトキャッシュが働いてるだけじゃねぇ?
別環境の Chrome はどうなん?
- 972 :969:2014/07/30(水) 20:23:16.04 ID:???.net
- >>971
ありがとうございました。
リダイレクトキャッシュが働いてたみたいです。
chromeの履歴削除と、再発防止に該当コントローラーに
$this->response->cache('-1 minute', '10 minutes');
を追加しました。
- 973 :nobodyさん:2014/08/01(金) 01:47:52.34 ID:IViy/2On.net
- スレ違いかもしれませんが、JavaScriptスレが過疎っているのでここで質問させてください。
textareaの中が次の様な値が入っているとします。
AAA{改行}
BBB{改行}
CCC{改行}
{改行}
↓ となっているのを、末尾の改行だけを削除する
AAA{改行}
BBB{改行}
CCC{改行}
にはどういうコードを記述すれば良いでしょうか?
- 974 :nobodyさん:2014/08/01(金) 02:11:43.96 ID:???.net
- CakePHP関係あるの?
PHPの質問なのかJavaScriptの質問なのかすらわからない。
それはそれとして考え方としては、文字列の最後に改行コードが2つ連続してるか
どうかを判定して、それが真なら文字列末尾を削ればいいんじゃない?
- 975 :nobodyさん:2014/08/01(金) 02:59:26.93 ID:???.net
- >>973
var textarea = 'AAA¥nBBB¥nCCC¥n¥n';
var new_testarea = textarea.replace("¥n¥n","¥n");
alert(new_testarea);
¥は半角に直せ。あと、Javascriptの質問はWeb制作板に行け。
お前は質問する板を間違えているだけだ。
- 976 :nobodyさん:2014/08/01(金) 03:38:52.05 ID:HDhLII9a.net
- https://www.youtube.com/my_videos?o=U
- 977 :nobodyさん:2014/08/01(金) 04:13:53.79 ID:???.net
- HABTMで使ってる中間テーブルのフィールドでソートする事ってできんのかな。
中間テーブルには結合に必要な情報以外含めちゃ駄目なのか?
- 978 :nobodyさん:2014/08/01(金) 04:17:08.37 ID:???.net
- >>975
これ以上はスレ違いなので続けないけど、その書き方だと
文末じゃなく途中に空行があったときにそっちにhitしちゃう。
- 979 :976:2014/08/01(金) 05:27:15.04 ID:???.net
- 結局afterFindでどうにかしたわ
- 980 :nobodyさん:2014/08/01(金) 12:30:54.30 ID:???.net
- >>978
良いんだよ。例題が例題なんだし。
- 981 :nobodyさん:2014/08/01(金) 13:38:20.68 ID:???.net
- >>977
それはやらないほうが良いと公式でも言ってるよ。
替わりに hasManyThrough を使う。
http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html#hasmany-through
つまりただ単に、主 hasMany 中間 belongsTo 従属 ってことだ。
- 982 :nobodyさん:2014/08/01(金) 15:29:47.99 ID:???.net
- >>981
Thx!
- 983 :nobodyさん:2014/08/03(日) 00:28:06.38 ID:iSh91Ahhw
- ttp://old-journal.sooey.com/2008/03/26/717/
これ何度読んでも最後から二番目の例がよく分からんのだけど、
$posts = $this->Post->find($options[0], $options);
ってなんでfindの二番目の引数に$options全部渡してんの?$options[1]じゃ駄目なん?
あとここだけfunction index() なのもよく分からん。public外す理由は?
- 984 :nobodyさん:2015/01/10(土) 11:41:23.56 ID:uqtqFgbzE
- 質問です。
cakephpの勉強を始めたんですが
viewの記述が物凄く長くなりませんか?
HTMLヘルパーをコントローラで使ってはいけないということなんですが
DB情報の1項目で
>>944さんの記述のようにすごく長くなります。
分担作業が出来るということでMVCいいらしいんですが
どのファイルをページデザイナーさんに渡すんですか?
総レス数 984
240 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★