【PHP】フレームワーク CakePHP 16ホール目【v2.4】at PHP
【PHP】フレームワーク CakePHP 16ホール目【v2.4】 - 暇つぶし2ch1:nobodyさん
13/09/09 01:56:10.19 m9OPw/HT
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです

■本家
URLリンク(www.cakephp.org)
APIドキュメント
URLリンク(api.cakephp.org)
github - cakephp
URLリンク(github.com)
the Bakery
URLリンク(bakery.cakephp.org)
Issue
URLリンク(cakephp.lighthouseapp.com)
CheatSheet[1.2] (PDF)
URLリンク(cakephp.org)

■日本語公式
URLリンク(cakephp.jp)
フォーラム
URLリンク(cakephp.jp)
cookbook(マニュアル)
[2.x] URLリンク(book.cakephp.org)
[1.3] URLリンク(book.cakephp.org)

スレリンク(php板)l50

2:nobodyさん
13/09/09 01:58:03.76 m9OPw/HT
無いので建てた
過去ログのタイトル記入漏れ

【PHP】フレームワーク CakePHP 15ホール目【v2.2】
スレリンク(php板)l50

3:nobodyさん
13/09/09 16:35:03.60
テンプレが貼られるのを待たず質問。CakeDCって何ですか?
「CakeDCとは」でググったんですけど出てきませんでした。
CakeDCのユーザー認証は標準のユーザー認証機能より良いんですか?
CakeDCのデメリットはありませんか?
あと、「CakeDC」でググると一番最初に出てくるサイトは
「このサイトは危険にさらされている可能性があります。」
とか書いてありますけど大丈夫ですか?

4:nobodyさん
13/09/09 17:07:58.33
>CakeDCって何ですか?

CakePHP のコアデベロッパーが多数在籍してるSIer
CEOがCakePHPの元開発リーダー
以前ほどは CakePHP の開発における依存度は高く無いとはいえ、影響力は絶大。
Github のリポジトリで公開しているプラグインはどれも有名で多くのユーザーが使ってる模様。


>CakeDCのユーザー認証は標準のユーザー認証機能より良いんですか?

Usersプラグインのことでしょうか?
だとすると、CakePHP の機能を置き換えるものじゃなくて、
補完および隠蔽して使いやすくしているのだとおもう。


>CakeDCのデメリットはありませんか?

ネットの評判を見る限り、特に致命的な欠陥はないでしょう。
実際には実装に応じて要求が異なるので何がデメリットになるのかは場合により異なる。
CakeDCに限らないが、どのプラグインを使うにしてもひと通りソースを読めないと安心して運用するのは厳しいと思うよ。

WordPress みたいな気軽な感覚(それも問題あるけど)で
初見のプラグインをホイホイ放り込んですんなり使えるとは思わない方がいい。

5:nobodyさん
13/09/09 17:12:55.63
>あと、「CakeDC」でググると一番最初に出てくるサイトは

ググったトップがどれのことか分からんが、
URLリンク(www.cakedc.com)
ならそんなエラー俺の環境じゃ出てこなかったけどな。

6:nobodyさん
13/09/09 23:06:57.23
>>4-5
ご丁寧なレス頂き本当にありがとうございます。
Usersプラグインのことです。
>初見のプラグインをホイホイ放り込んですんなり使えるとは思わない方がいい。
と言うのは肝に銘じます。

>>5に関しては日本語でググってしまったので
「プラグイン/CakeDC/users - CakePHP2 Memo」
と言うページがトップに来ました。
URLは念のためあえて貼りません。

7:nobodyさん
13/09/10 00:28:29.95
Usersプラグインは、プラグインとは名ばかりのサンプル実装と考えたほうがいいよ。
サンプルといっても、微妙なつくりになってるところもあるから、
使えるところだけ参考にしながら別途書くのがいい

8:nobodyさん
13/09/10 22:27:53.62
cakephp2を触り始めて日記を作ったのですが
URLを直で .../delete/1 などとすると
An Internal Error Has Occurred.というエラーがでて削除はされないのですが

自分でhtmlファイルを作り そこにポストでボタンを作成し日記のデリートURLに飛ばすと普通に削除できてしまいます

これは自分のコントローラーが悪いのかどこか書き方が間違っているのでしょうか?

9:nobodyさん
13/09/11 00:00:08.07
山ほど可能性があるのでそれじゃ情報少なすぎる。

まずそのエラーが出てるってことはデバグの出力を抑制してるんじゃない?
質問する場合は必ず Configure で debug の値を 2 にしておく。
それだけで解決することも多い。
で分からなければ、出た文面をそのまま貼り付ける。

ただ文面から推測すると、bake したコントローラをそのまま使ってるっぽいが、違う?

10:nobodyさん
13/09/11 00:06:48.10
いや、debug 値は関係無さそうだな。
bake ファイルなら例外を投げるからそれでもなさそうだな。
いったいどんなコード書いてるんだ?
Controller のメソッド貼り付けて見たら?

11:8
13/09/11 00:23:34.10
ちょっと自分でもわからず書いていますのでわかりにくかったらすいません。

普通に作ったダイアリー上で削除ボタンはしっかり動作します

URLを直に/delete/id とすると
Error: The view for diarysController::delete() was not found.
とでます。これは普通ですよね?URLから削除をさせないため、ほかのとこにアクセスさせないため

少しいろいろ書いてあるので消しましたがたぶんこれで動いてるはずです
public function delete($id) {
if ($this->request->is('post') || $this->request->is('put')) {
$this->Diary->delete($id);
$this->redirect(array('action' => 'index'));
}

ここまで正常だと思うのですが
自分で作ったhtmlファイルに
<form action="自分のURL/delete/ID" method="post">
<input type="hidden" name="_method" value="POST"/>
<input type="submit" value="DELETE">
</form>

で記述してこれで投げると消されてしまいます
どうすれば解決できるのでしょうか・・・?
ポストを判定するまえになにか条件いれればいいのでしょうか?

12:nobodyさん
13/09/11 01:35:06.52
CakePHPは初心者も大事にするFWなんでお答えします。
結論から言うと、質問の中にそもそも答えが含まれてる。

> Error: The view for diarysController::delete() was not found.

がなぜ出力されるのかというと、アクションの結果を描画するためのビューがないっていうこと。
なので、このエラーそのものと、レコードが削除されないことは実は関係がない。

> URLから削除をさせないため、

の措置はアクション内部でのリクエストタイプ判定で行ってる。
で、これがほんとうに意味が分かって言ってるんなら、質問の答がこれですよ。
URLを直接叩いて削除しちゃうと良くないことが多いので、そうしないようにコードに記述してる。
つまり、コントローラが悪いのじゃなくてリクエストの仕方が悪いだけ。

> ほかのとこにアクセスさせないため

「ほかのとこにアクセス」が意味不明だが、リダイレクトの事を言ってるのならば、
別にそういうふうに作りたければそうすればよいだけで、このエラーの内容とは直接関係がない。

13:nobodyさん
13/09/11 01:35:43.16
> if ($this->request->is('post') || $this->request->is('put')) {

で判定してる $this->request というのは自動的にセットされる CakeRequest のオブジェクトで、
リクエストに纏わる諸々のデータ・構造が内包されてる。
こいつの CakeRequest::is() メソッドでリクエストタイプを判定して、POST か PUT なら
モデルに対して削除を命令して、「描画せずに」array('action' => 'index') へリダイレクトする。
ここでこのリクエストに対する処理は終わり。(厳密には多少の後処理はある)

ちなみに分かってるかも知れないけど、この array('action' => 'index') っていうのは URL そのもので、
足らないパラメータ('plugin' や 'controller') はRouter で自動補完されて完全なフルパスにパースされる。


で、先程のは POST か PUT の場合だけど、それ以外(まぁGETだが)は評価ブロックを抜けて
通常のレンダリングに移行する。
仮に Diaries/delete.ctp を配置しておけば上記のエラーは出ないというだけ。

こんな説明で分かりましたか?

14:nobodyさん
13/09/11 01:40:10.71
あらら、それと、
diaysController って DiariesController の書き間違いだよね?

15:8
13/09/11 02:09:49.14
とても詳しく説明してもらってすいません

書き間違えはすいません 日記のようなものを作っています。少し改変しました

ちょっと補足します
> URLから削除をさせないため、

というのはその通りです。
> ほかのとこにアクセスさせないため
なんでもないです。すいません

>仮に Diaries/delete.ctp を配置しておけば上記のエラーは出ないというだけ。
エラーは別にあってもなくてもいいのですが

<form action="自分のURL/delete/ID" method="post">
<input type="hidden" name="_method" value="POST"/>
<input type="submit" value="DELETE">
</form>

この部分の回答がほしくて理解不足でもう出ていたらすいません

日記はその書いた人した消せない仕様なのですが
メモちょうなので↑のコードを書いてそこにあるボタンを押すことでどのIDの日記でも削除できてしまう
のをどうしたらいいかの回答がほしいです


ちょっと自分のやっていることが特殊なのか言葉不足なのかもしれません。

16:8
13/09/11 02:11:10.50
>仮に Diaries/delete.ctp を配置しておけば上記のエラーは出ないというだけ。
今回はエラーは別にあってもなくてもいいのです。本当は書いたほうがいいんでしょうけど・・・

17:nobodyさん
13/09/11 02:28:30.27
あぁ、権限の話でしたか。
消したいのに消せないので困ってるのかと勘違いしてた。

それなら CakePHP 以前に、PHPでリクエストを送ったユーザーを
どう識別するのかってことが分かってないと。

実現する便利な機能(端的に言うと AuthComponent ですね)
は備わってるけど、"PHP ログイン 認証" とかでググって
まずは素のコードが書けるようになってから Cake に
再チャレンジした方がいい。

今のままだとサンプル見てもどの部分がCakeの機能で、
どの部分がPHPなのかさっぱりわからない状態じゃないかな?

もしそうならいったん基礎に戻ったほうが結局は早く理解できて効率がいい。

18:8
13/09/11 02:35:31.22
ポスト判定をする前にまずログインしてるか調べてそのあとユーザーとその日記の書いたユーザが一致か調べればいけますかねぇ・・・

きっちり基礎ができているとは言いがたいですけどがんばって見ます

19:nobodyさん
13/09/11 02:46:57.82
ある程度基礎ができてるなら、上のレスで書かれてる CakeDC の
Users プラグインを使って認証を一通り実装してみるといいです。
とても勉強になりますよ。

20:nobodyさん
13/09/11 06:06:04.88
StackOverflowてCakeの質問してみたけど全然レスが付かない
別の質問もしてみたけどやはりレスが付かない
そもそも8 viewsしかされてないし、Cakeってだけでスルーされちゃうのだろうか

21:nobodyさん
13/09/11 06:25:05.97
>>20
だからどの質問だ?
url貼れ

22:nobodyさん
13/09/11 08:46:56.10 AXWD8Gpa
チュートリアルを見ると1テーブルに1モデルでそのモデルに対して複数のコントロールとビューがあるパターンしかないんですけど、
自分がやりたいのは複数のビューとコントロールに対して、複数のテーブルからデータを集めてきて処理をしたいんです。
その場合、モデルで記述するクラスはテーブルを使わない独自クラス、呼び出すテーブルはアソシエーションで定義するという理解でいいですか?
モデルに使用するテーブルをクラスとして別々に記述できるといいんですけど、違うみたいだし。

23:nobodyさん
13/09/11 10:36:21.33
>>22
1モデル=1テーブル という図式があたかも
規則であるかのように受け取られてしまうのが
チュートリアルの欠点のように思う。

それは全く気にする必要なし。

やりたいようにやればいい。

あと、標準のプロパティで張れるアソシエーションは限界があるので
それを越えようと思えば 'joins' キーでパラメータを指定したり、
直書きする。

一例を上げると、主テーブルに対して2つのテーブルをLEFT JOINするときに、
サブテーブルのキー同士を結びつける条件はプロパティの設定では不可能。
こういうときはメソッド内で joins で指定するしか無い。

Cake3 はもう少しマシになってるらしいが。

24:nobodyさん
13/09/11 10:41:19.91
Cake3 は Table クラスが分離される模様

25:nobodyさん
13/09/11 11:21:24.92
さすがにその頃にはCake卒業したい

26:nobodyさん
13/09/11 12:01:01.77
もう時間ないぞ

27:nobodyさん
13/09/11 12:07:33.07
>>18
お前、チュートリアル(認証系の方)にちゃんと書いてあるぞ
翻訳も完了してるんだから最低限チュートリアルやってから質問しに来い

28:nobodyさん
13/09/11 12:15:38.97
>>27
そういうなよ。
CakePHPのドキュメントは正直分かりにくいし、
初心者というのはいろんな情報を手探りで集めるんだし

29:nobodyさん
13/09/11 12:47:53.86
ぶっちゃけ公式ドキュメント見るのが一番効率悪い
よくできてないだろ、あれ
絶妙に必要な情報が欠落していて、中級者でも戸惑う

30:nobodyさん
13/09/11 13:02:57.78
かなり同意。
CakePHPのドキュメントは分かりにくいよね。
ぐだぐだと長い文章書いてある割りに、
開発中にあれ?どうなってるだっけ?と思った疑問には全然答えてくれない。

31:nobodyさん
13/09/11 13:43:15.36
そう、ボリュームが足りないとはあまり感じないんだけど
開発してたら調べたくなるようなことが、悉く載っていない
結局ぐぐってどこかの馬の骨のブログにたどり着き、
古い情報やサンプルコードを、必死で直しながら使うことになる

32:nobodyさん
13/09/11 18:44:25.49
ドキュメントで翻訳されていないページはみんなどうしてんの?

33:nobodyさん
13/09/11 20:21:07.93
そのまま読むかググるq

34:nobodyさん
13/09/12 01:00:10.04
apiの方かソースコードを読む

35:nobodyさん
13/09/12 01:45:24.46
>>34 に同じく。
ドキュメント、面白くさせようとしてるんだろうけど無駄な文章や修飾が多い。
用語のゆらぎも多い気がする。

36:nobodyさん
13/09/12 23:09:03.21
質問させて頂きます。
下記のリレーションを持つモデルがあります。
User hasmany Thread(Thread belongsto User)
Thread hasmany Response(Response belongsto Thread)
User hasmany Response(Response belongsto User)

Threadの詳細表示画面(viewアクション)で
一覧表示されるResponseのuser_idの代わりに、
Userテーブルのフィールドの一つであるusernameを
表示させたいんですが、スマートなやり方はありますか?

力技で何とかしようと結構時間を掛けて試行錯誤したんですが
上手く行かなくて質問させて頂きました。

37:nobodyさん
13/09/12 23:12:30.82
36です。書き忘れましたがCakePHPのバージョンは2.3.9です。

38:nobodyさん
13/09/12 23:22:00.75
$this->Thread->Response->User->displayField = 'username';
$this->Thread->recursive = 2;
$thread = $this->Thread->read();

はどう?
試してないから間違ってたらすまん

39:nobodyさん
13/09/13 00:07:10.21
>>36です。ありがとうございます。

$this->Thread->Response->User->displayField = 'username';
を試してみましたが、
Indirect modification of overloaded property AppModel::$User has no effect
とエラーが出ました。

また、
$this->set('thread', $this->Thread->find('first', $options));

$this->set('thread', $this->Thread->read();

$thread = $this->Thread->read();
にも書き換えてみましたが、Threadの中身が表示されなくなりました。

$this->Thread->recursive = 2;
はヒントになりそうな気がします。

今日はもう眠いのでまた明日試してみようと思いますので、
お世話になれれば幸いです。

40:nobodyさん
13/09/13 01:32:12.20
あぁ、すまん、Thread が持つ Response に含まれる User の username ね。
それなら displayField 云々は要らないな。
これは単純に User.username のデータを拾えるようにしてそれを表示すれば良いので、
一番雑なやり方だけど簡単なのは上で書いたように recursive を 2 にすればデータを取得できる。

どんな形式で返されてるかは debug() とか使って確認してちょうだい。
データアクセスはなれるまで少し面倒くさいけど仕方ないね。

ただ、このやり方で発行されるクエリはかなり大雑把。
Containable というビヘイビアの使い方をもし知らなければまずそれを覚えて損はない。
しかしこれもパフォーマンスを追求するなら酷いSELECT文になることが多い。
パフォーマンス上げたいなら最終的には細かくチューニングしなくちゃならないです。

41:nobodyさん
13/09/13 01:43:58.32
あと気になるのは

> $this->Thread->Response->User->displayField = 'username';
> を試してみましたが、
> Indirect modification of overloaded property AppModel::$User has no effect
> とエラーが出ました。

これは出ないはずなんだけどなぁ。
本当に Response::$hasMany に User をセットしてる?
それさえしていれば、Response::$User プロパティがコールされたタイミングで
(なければ)自動的にセットするんで上記のエラーは出ないはずなんだが。。。

> Threadの中身が表示されなくなりました。
というのは何でかよく分からんけど、どんなクエリ発行されてるのか確認すると良いと思う。

42:nobodyさん
13/09/13 11:04:36.05 lL7QR+Re
すみません。教えてください
/libs/view/helpers/paginator.php の関数を一部書き換えたいのですが
/app/views/helpers/ に自作クラスファイルを置く場合、どうやって書けばいいのでしょうか?

43:nobodyさん
13/09/13 11:34:39.66
パターン1: 継承する

/app/View/Helper/MyPaginator.php

App::uses('Paginator', 'View/Helper');
class MyPaginator extends Paginator {

}

class PostsController extends AppController {

public $components = array('Paginator' => array('className' => 'MyPaginator'));

}

パターン2: Paginator を app にコピー

/app/View/Helper/Paginator.php

(元の Paginator をそのまま貼り付けて適宜改造)


パターン1 のほうがいい。

44:nobodyさん
13/09/13 11:52:08.68 lL7QR+Re
丁寧にありがとうございます
1の方法を試したのですがPHPの書式エラーが出てうまくいかなかったので、
とりあえず2の方法で実装できました

45:nobodyさん
13/09/13 13:19:06.74
え、どんなエラー?
ひょっとして1.3使ってる?

46:nobodyさん
13/09/13 13:50:01.95 lL7QR+Re
はい。1.3です
Appなんて知らないよ、みたいなエラーでした
私自身cakePHPを使ったことないのですが、現行システムを引き継いで、
新システム+機能追加を行えという依頼が来ているので、四苦八苦しているのです

47:nobodyさん
13/09/13 13:54:32.98
うわぁ、大変だなぁ。

エラーは多分App知らないじゃなくて、そんなメソッドないよってエラーではないかと。
1.3 のときは App::uses() じゃなくて App::import() 使ってた。
このへんはだいぶ変わってるからなぁ。
とりあえずパターン1でもApp::uses の行を削除すれば多分動く。

あと、クラス名とか大幅に間違えてたすまん。
Paginator じゃなくて PaginatorComponent だよな。

48:nobodyさん
13/09/13 13:57:05.57
いや、 Component じゃなくて Helper だ。
なんかgdgdになってきたわw

49:nobodyさん
13/09/13 14:02:15.60 lL7QR+Re
ありがとうございます。
今他の人が動作確認等をしているところなので、エラー画面を出すわけにもなので、また後で試してみます
他社が作ったシステムなのですが、不具合だらけで、よくこんなので数年運用していたな…と思えるもので
お客さんもこの制作会社に愛想をつかしたのかなと

50:nobodyさん
13/09/13 17:19:36.52
そう言えば何年も前に1.2で納品したサイトをこの前こっそり覗いたらまだそのまんま稼働してた。

ひょっとして裏でメンテナンスしてる?と思ったけどどうやらそのままっぽい。

あれを今こっちによこされても触る気しねぇなw

51:nobodyさん
13/09/13 22:37:32.90
>>36です。

>>41すみません。ご指摘頂いている通り
リレーション(実際にはbelongsTo)の設定に漏れがありました。
お騒がせしました。

おかげさまで力技で何とかusernameを表示させることができました。
本当はContainableとか使ってスマートにやれれば良いのでしょうが
今のところパフォーマンスはそこまで気にしなくて良さそうなので
とにかくありがとうございました。

52:nobodyさん
13/09/14 22:05:34.75
CakePHPでテストを書いてて質問です

モデル内の「1ヶ月以上放置ユーザーのデータを書き換える」という関数のテストを書きたいのですが
関数内でdate()を使っているのでテストを動かす日付によってテスト結果が変わってしまうことになります
テスト中はdate()をモック化して常に同じ日付を返すような事はできないでしょうか?

53:nobodyさん
13/09/14 22:38:16.25
>>52
URLリンク(github.com)

54:nobodyさん
13/09/14 22:50:16.35
へえ、こんなのあるんだw
あざっす

55:nobodyさん
13/09/16 00:08:58.74
View内にSQLを書くのはあり?

56:nobodyさん
13/09/16 01:32:09.97
別にいいんじゃない?

57:nobodyさん
13/09/16 01:36:20.86
え?

58:nobodyさん
13/09/16 01:37:11.54 KEkZXyyj
>>56
本当にいいの?

59:nobodyさん
13/09/16 01:46:36.58
これなら良いだろ?

<?php echo 'SELECT * FROM posts;'; ?>

60:nobodyさん
13/09/16 07:24:05.78
>>59
それで出来るの!

61:nobodyさん
13/09/16 12:45:44.30
いいこと思い付いた
viewにユーザーにSQL入力してもらうフォーム置いとけば、アプリの開発要らないんじゃね?

62:nobodyさん
13/09/16 13:57:55.65
>>59
やっかたけど文字列が帰ってくるだけだった

63:nobodyさん
13/09/16 14:58:11.99
>>62
まさか真に受けるとは思わなかった。。。

常識的にViewではSQLは書かないという前提があって、
だけど文字列で表示するというだけならば問題ないよね
っていう流れで書いたつもりなんだけど
悪気はなかった。すまん

64:nobodyさん
13/09/16 16:39:46.11
>>62
おまえかわいいな

65:nobodyさん
13/09/16 16:59:49.24
View から SELECT だけは許可できる仕組みって作れないものかね?

66:nobodyさん
13/09/16 17:03:04.01
>>63
親をループさせながら子のデータを取得したいんだけど
コントローラーでやると複雑になって、面倒くさいからVIEWでSQL書いちゃえば早くね?と思ったんだけどダメか?

67:nobodyさん
13/09/16 17:59:16.56
>>66
定石だと、それはモデルでやるべきだろうな。

68:nobodyさん
13/09/16 20:49:35.86
開発して専用のサーバーに設置したのですが、robots.txtへのアクセスが全部エラーとなってtmpの下のerror.logに記録されています
[MissingControllerException] Controller class Robots.txtController could not be found.
特に害はないのですがどうすればエラーをなくせますか?

69:nobodyさん
13/09/16 21:47:16.36
本来は所得税が0の年が一度でもあったら参政権を生涯剥奪するべきだが
少なくとも生活保護や自己破産は選挙権と引き替えにすべき

70:nobodyさん
13/09/16 21:59:16.92
>>69
MVCモデルのことですか?いまいちわかりません。

71:nobodyさん
13/09/16 22:21:35.91
>>68
robotx.txt が設置されてないだけと思うんだが、違う?

72:nobodyさん
13/09/16 22:22:09.07
>>68
robotx.txt が設置されてないだけと思うんだが、違う?

73:nobodyさん
13/09/16 22:26:35.95
すまん、二重カキコになってしまった。
しかちいつまでたっても2ちゃんのシステムは垢抜けないな

74:nobodyさん
13/09/17 12:59:52.45
>>55だけど。思いついた!
子テーブルのビューを作って親のループ中にrequireすればいい!

モデル理解するの無理そうだからそうしよう!

75:nobodyさん
13/09/17 13:45:38.86
controllerはわりと理解した
viewもわりと理解した
modelがよくわからない
他人が書いたソースを眺めるだけじゃなく、ちゃんと書籍なりで勉強すべきかな

76:nobodyさん
13/09/17 13:54:53.58
フォームのinput submitでハマった。
普通なら/xxxx に飛ぶのに/xxxx/ に行ってしまって、その後のボタン処理が滅茶苦茶。
結局判らずリンク先をダイレクトに指定して回避したけど気持ち悪い。
Twitter Bootstrapを最近入れたけどCakePHPのフォーム処理と使い勝手が悪い感じがする。

77:nobodyさん
13/09/17 13:59:43.68
入門書はいくつかあるけど中級以上向けのガイドが欲しいな
実際に開発始めると、例みたいに簡単な1コントローラ、1モデル、1ビューの構成に片付かない
1コントローラ複数モデルになると一気にコントローラが太るのを何とかしたい

78:nobodyさん
13/09/17 14:21:37.80
>>74
なんか苦戦してるみたいだけど、
具体的に詳しく書けば何らかの助言は貰えると思うよ。

よくは分からないけど、あなたは今良くない方向へ向かっている気がする。
同じ努力をするなら少し方向を考え直した方がいいのでは?

79:nobodyさん
13/09/17 16:36:07.83
複数形で書いたり単数形で書いたり、気持ち悪いったらありゃしない

80:nobodyさん
13/09/17 16:37:37.77
>>76
フレームワークが暗黙的にいろんなデータを補完しているから、
初心者だとよくはまる失敗の典型ではないかと思います。

詳しく見れば必ず解決できるはずなんだけど、最初は調べ方すらわからないのが普通。

問題になってる FormHelper::create() のパラメータを書いて見れば?

81:nobodyさん
13/09/17 16:40:07.14
>>79
アングロサクソンに合わせるしか無いのであきらめろ。
世界の文化を上書きできるならもう一度戦争してみればいい。

82:nobodyさん
13/09/17 16:52:47.46
複数形が単純に「s」つけるだけならいいけど、company→companiesみたいに単純なものじゃないときにどうしていかわからないよ

83:nobodyさん
13/09/17 17:35:09.83
どうでもいいけどdataの複数形は?

84:nobodyさん
13/09/17 17:37:54.93
datum

85:nobodyさん
13/09/17 17:41:21.66
>>83-84
ギャグじゃなければ逆

86:nobodyさん
13/09/17 18:00:02.50
はっ!

87:nobodyさん
13/09/18 15:18:46.52
ちょっと聞いてみるんですけど、
FoodsテーブルにcolumnとしてDish_id, Calorie, (質問には関係ないけどFoodnameも)が有って、
Dishesテーブルの内容を、それぞれのrowに属するFoodのCalorieの合計の大きい小さい順に
paginatorの機能を使って並び変えられるようにしたい時、どうするのが一番良いですかね?
DishesテーブルにCalorieの合計値を属性として持たせる、と言うのは思いついたんですがどうでしょうか?
CakePHPは2.2を使ってます。

88:nobodyさん
13/09/18 15:59:01.32
>>87
間違ってないので良いんではないでしょうか

89:nobodyさん
13/09/18 16:05:46.78
>>88
そうですか、ありがとうございます。
ただそうなると、もしFoodsテーブルのcalorie情報とDishesテーブルのcalorie合計値情報が
絶対矛盾しない様にしたいと思ったらトランザクションとか使わないといけないですよね?
もしくはcronとかを回してFoodsテーブルとDishesテーブルで矛盾が出たら検知するプログラムを走らせるとか?

90:nobodyさん
13/09/18 21:07:53.48
MySQL ならトリガー使えばDB側で正確さを担保できる

91:nobodyさん
13/09/19 01:15:58.79
>>55だけど!モデル理解するの無理そうだから。もうコントローラーにHTML書いて書いてく!

92:nobodyさん
13/09/19 01:47:34.39
お、おう・・・

93:nobodyさん
13/09/19 05:11:21.97
フレームワーク使う意味ないやんw

94:nobodyさん
13/09/19 11:46:18.88
>>93
でもちゃんと理解できるまでそうするっていうのならありじゃない?
理解してないのに使うなは禁句

95:nobodyさん
13/09/19 12:02:37.73
ネタなのかマジなのかわからないのが沢山混じってるな・・・

96:nobodyさん
13/09/19 22:23:16.57
cakeを使うメリットを教えてほしいんだが、何がそんなにいいの?

97:nobodyさん
13/09/19 23:00:16.87
勘違いしてるようだが
他FWに比べて、いいから使ってるわきゃない

98:nobodyさん
13/09/20 00:26:53.84
日本語資料が(他と比べると)多い
それが一番じゃないかな?

99:nobodyさん
13/09/20 00:31:48.40
最初になんとなくCakeを選んでしまった
今は後悔している

100:nobodyさん
13/09/20 04:37:03.54
>> 96 97 98
96だが、日本語の資料が多いだけか。
他FWに比べて他のメリットってなにもないよね。
参考になったよありがとう。

101:nobodyさん
13/09/20 05:51:49.74
特定のページに行くとセッションが切れるのなんなの?

102:nobodyさん
13/09/20 07:38:57.90
>>101
特定のページの作りがおかしいんだろうな

103:nobodyさん
13/09/20 09:51:34.51
>>101
ファイルの存在しないパスのアセットを取得しようとしてるかも。
一度CSSとかfaviconとかの記述をチェックして下さい。

104:nobodyさん
13/09/20 16:20:28.57
AuthってAppControllerに指定してる?
してないならセッション切れの原因になると思う
俺も一部のコントローラーだけ指定してたらそうなった

105:nobodyさん
13/09/20 17:24:32.38
>>100
cakeはcontrollerの部分はすごく便利
だが、modelはダメダメ
viewもわりと使いやすい

106:nobodyさん
13/09/20 17:31:35.17
俺は基本デザイナーで、片手間でフレームワークを覚えなくちゃなんなくて
仕方なく始めたのがCakePHP1.3だった。

で、特に不満もなく今に至るという感じで、
なんとか2系にはシフトできたけど
ほかのフレームワークを試せるほど余裕が無い。

Cakeをある程度使えるようになるまで時間がかかったから、
それと同じぐらいの手間をかけてまで
他にまで手を広げようという意欲がわかないだけで、
簡単に他のを試せるならCakeを使っていないかもしれない。

そういう人は多いのじゃないかと思うがどうだろう。

107:nobodyさん
13/09/20 17:58:36.98
俺がCakeに手を出した頃(2009~10)が多分Cakeの全盛期だったんだと思う
その頃はまだFuelPHP等も流行ってなく、PHPのMVCフレームワークといえばどの本も大体Cakeを筆頭に挙げてた
で俺も勝ち馬に乗るつもりで手を出してみたんだけど、使ってみたらイマイチで他に新しいのがどんどん出てきた
けどキッツキツの仕事のスケジュールの中ではコードの再利用や学習コストを考えると他に以降できない
気に入らない点のいくつかは2で改善したし一応使い物になってるのでそのままって感じ

108:nobodyさん
13/09/20 18:10:37.86
後発が良いツールなのは世の常だけど、
情報量が少ないとわざわざ覚えようと思わないよね

109:nobodyさん
13/09/20 18:48:44.64
情報量に関してはCakeが特にいいと思わないな。
英語でもいいから公式ドキュメントをもっと充実して欲しいね、使い込む人用に。
ネットの記事や本も2より1の時の方が多かったよね、3になったら更に減ったりするのかな。

110:nobodyさん
13/09/20 18:51:58.92
ドキュメント十分だろ。これ以上はソース読めレベル。

111:nobodyさん
13/09/20 20:07:24.91
ドキュメントって何だか文系向けだよね。
体系的・科学的じゃない。

112:nobodyさん
13/09/20 20:09:43.10
100だが
Struts(java)⇒Symfony1系⇒ZendFW1系⇒Symfony2系⇒Cake2系と変遷してきた。

ドキュメントは公式のページで充分だしわからないとこはソースみりゃいいよね。
どんなFWでも同じ。

初めて触ってみたけどcakeの良いとこが多少学習コストが低いかもくらいしか見つからなかったんだ。
それで聞いてみた。

113:nobodyさん
13/09/20 20:27:59.86
公式ドキュメント全然十分じゃないよ。開発中知りたい事が全然載ってない。
初心者騙しにしかなってない。
わからなかったらソース読めとかアホかそんな効率悪い事できるのは暇人だけ。皆働いてんだよ。

114:nobodyさん
13/09/21 00:07:12.40
Haveの複数形はhasでいいの?havesになったりしない?

115:nobodyさん
13/09/21 00:39:39.41
俺はどうも複数形には慣れないな
単数形にすることも出来るけど、フォーム処理で躓く時あるし

116:nobodyさん
13/09/21 00:53:11.30
一応テーブル名複数形、モデル名単数形のコーディング規約にしてるけど
数人でプロジェクト組むと、うっかり守らない奴が出るんだよなあ

117:nobodyさん
13/09/21 01:19:39.04
>>114
名詞でhaveなんか使うのか?別にいいけど。。。

118:nobodyさん
13/09/21 01:21:56.95
ちなみに名詞で have って言ったら「(莫大な富とかを)持ってる人」みたいな意味です。
その場合は単数形が have で、複数形が haves だよ。

119:nobodyさん
13/09/21 01:27:56.10
英語文化は尊重するけど、英語じゃない単語の扱いが半端無く面倒くさい。

120:あ
13/09/21 01:41:26.10
iphoneアプリのサーバ側でcakephpを使おうと思ってます。
会員制のアプリで、アプリからブログの更新ができるようにしたいです。
ログイン後のトークン発行など、、ここらへんがよくわかりません。。
どんな流れになるのでしょうか?
よろしくお願いします。

121:nobodyさん
13/09/21 03:32:29.71
>>120
URLリンク(book.cakephp.org)

122:nobodyさん
13/09/21 09:22:19.71 IxVA/8jO
わかる方がいれば、教えてほしいんですが以下のSQLをCakePHP用に
書き直す場合にどのようにすればよいでしょうか

select
カラムA,(select カラムB from テーブル where カラムA=t1.カラムA order by rand() limit 1)
from
(select カラムA from テーブル group by カラムA) t1;

123:nobodyさん
13/09/21 12:05:47.80 h7jpowpU
>>122
直書き 一択

124:nobodyさん
13/09/21 12:12:42.26
>> 113
調べることが暇人ってなんだ?
やりたいことが載ってないって応用力ないんだなww
答えそのものが載ってないとできない奴っているよねw
cakeが初心者用のフレームワークって納得したよ。

125:nobodyさん
13/09/21 12:29:05.54
たとえばさ、モデルのバリデーションの指定方法一覧ぐらいは、公式が用意してくれてもバチはあたらないと思うんだ
ソース検索して開いて見るより、ドキュメントがあったほうが見やすいだろ?

126:nobodyさん
13/09/21 12:38:54.14
2系を使っています。コントローラとアクションが
存在するか調べる機能ってないですかね?
小一時間ググったのですが、見つけられませんでした・・・

127:nobodyさん
13/09/21 12:48:08.89 h7jpowpU
>>126
特別な方法はないと思う

Shellプラグインの作成で結構地味に調べたのを記憶してる

128:nobodyさん
13/09/21 12:54:35.00
ないのかよ

129:nobodyさん
13/09/21 12:55:01.64
> 125
公式
URLリンク(book.cakephp.org)

ソース
lib/Cake/Utility/Validation.php

公式に全部載ってるかどうか知らんが、1つでも載ってたらソース見ないの?
どんなチェックしてるか知らないのに実装するの?

> 126
URLリンク(phpspot.net)

130:nobodyさん
13/09/21 14:04:59.28
>>129
cakeの機能としてはないんですね。
ビューの一部をDBに保存してるのであればと思いましたが、
ないということなので定数からパスを作成して調べます

131:nobodyさん
13/09/21 16:43:48.92 McaoFmaC
フォームのデータの受け取り方がどうしてもわかりません。
具体的にはコンボボックスやラジオボタンで選択されたデータをコントローラーで知りたいのですが、

$this->data[テーブル名][カラム名] データベースのデータじゃなくてコントローラーで設定した値なので使えない。
$this->param['form][???] paramにPOSTデータが全部入るようなのですが、二番目の引数に何を指定すれば求めるものが取得できるのかわかりません。
何を入れてもnullが返ってきます。根本的に考え違いしていますか?

132:nobodyさん
13/09/21 16:56:23.08 IxVA/8jO
>>131
間違ってたらごめん。
どんなデータがpostされてるかはchromeなら要素検証から見れるから
それを参考に書いてみるといいと思う。

cakephp2しか触ったことないけど、その場合は下の感じで受け取るね
$this->request->data['model']['id']みたいな感じ

133:nobodyさん
13/09/21 17:01:45.99
var_dump($this->request->data);
で確認してみるとよさそう

134:nobodyさん
13/09/22 03:28:58.52
debug()さん「・・・」

135:nobodyさん
13/09/22 03:45:13.84
2.3.10(たぶん2系)で、AuthのuserModelでバーチャルフィールドを
指定していると、ログイン時になにも入力しなくても
ログインできてしまう問題に遭遇した。

バーチャルフィールドの指定を外すとエラーチェックしてくれるから
バーチャルフィールドが問題だと思うけど、
これを突き止めるのに4時間かかったぜ・・・
似た問題に遭遇してる人は参考にしてください。

136:nobodyさん
13/09/22 03:48:28.58
>>129
あざっす、そこに載っていたのか
そのページ前からあった?以前英語のページ含め結構探したんだが…

ソースは基本読まないで使うなあ、バグ解析などで必要にならないと読まない
他人のコード読みながら作る時間があったら自分で作るからなあ

137:nobodyさん
13/09/22 03:49:53.63
>>135
再現してみたいので出来ればもうちょい詳しくお願いします。

バーチャルフィールドの指定ってのは

User::$virsutalFields = array(...);

ってことでいいのかな?

138:nobodyさん
13/09/22 04:17:47.94 ILax0A3i
>>136
>他人のコード読みながら作る時間があったら自分で作るからなあ

フレームワーク使う意味ないんじゃ…

139:nobodyさん
13/09/22 04:30:37.36
なんで?言ってる意味がわからん

140:nobodyさん
13/09/22 12:58:56.82
作るのが面倒、時間ないからFW使うんじゃないよ
むしろそういう奴は使わない方がいいと思う

141:nobodyさん
13/09/22 13:56:20.61
は?FWって開発速度を上げるために使うものだろ
他に何のメリットがあるんだよ

142:nobodyさん
13/09/22 14:03:11.87
>>141
速度だけだと思ってるなら勉強しなおせ。

143:nobodyさん
13/09/22 15:00:26.29
開発速度あげるだけなら、オレオレが一番早いと思うが。
自分が好きなように作れるんだし

144:nobodyさん
13/09/22 16:08:37.23
えっ
どんな低機能のフレームワークだよ…

145:nobodyさん
13/09/22 19:24:19.17
> FWって開発速度を上げるために使うもの
wwwwくそわろた

146:nobodyさん
13/09/22 21:32:19.12
セッション切れ問題がデータベースを空にしたら治った
原因不明過ぎて怖い

147:nobodyさん
13/09/22 23:04:15.03
そういうのあるね。特にAuth関係は不可解なこと多い

148:nobodyさん
13/09/22 23:12:27.52 1/Rn/nVo
本番でなったら恐ろしすぎるんだけど

149:nobodyさん
13/09/22 23:59:51.35
ま、nanapiとかランサーズとか
有名な会員サイトで使えてるんだから、何とかなるでしょ

150:nobodyさん
13/09/23 00:16:18.34
Twitterのあうth認証って新しく作ったアカウントだと拾ってくれなかったりする?

151:nobodyさん
13/09/23 05:48:35.98
>>146
> セッション切れ問題がデータベースを空にしたら治った
> 原因不明過ぎて怖い

あ、それ簡単だよ。セッションが壊れてるの
MySQLはデフォルトの設定で文字数が定義より多くて
溢れても、途中で切れるだけで処理が正常終了しちゃうんだよね。
その時、壊れたセッションが出来上がる。

152:nobodyさん
13/09/23 10:30:15.39
>>145
何もおかしいこと言ってないと思うんだけど何が面白いのかな

153:nobodyさん
13/09/23 10:43:47.86
やっぱそうだよね
俺もそう思っていた

154:nobodyさん
13/09/23 13:37:52.78
コントローラーに書いてある$thisってなにがはいってるの?
何を指してるの?

155:nobodyさん
13/09/23 13:43:42.09
マジで言ってんの?

156:nobodyさん
13/09/23 13:49:32.13
CakeはSecurity.levelの設定をhighにしてるとわけのわからないセッション切れとか問題てんこ盛りで起きる
仕方なくmediumで使うと安定している

157:nobodyさん
13/09/23 14:34:05.91
>>152
お前も勉強しろ

158:nobodyさん
13/09/23 16:47:11.98
>>152
「フレームワーク メリット」でぐぐって勉強しましょう。

>>154
クラスを勉強しましょう。

159:nobodyさん
13/09/23 17:10:55.17
反論できないと見える

160:nobodyさん
13/09/24 10:22:15.50 PewVrVzx
cakeのわかりにくさは、モデルのわかりにくさ、単数形複数形の使い分けの分かりにくさに直結してると思う

161:nobodyさん
13/09/24 10:48:16.58
思いません

162:nobodyさん
13/09/24 11:01:06.76
マジックメソッド、コールバックメソッド、
リフレクションを用いた初期設定値の自動マージ、
そのあたりの隠蔽された処理の把握に苦戦する。

とは言え、これはCakeに限ったことじゃないが。

163:nobodyさん
13/09/24 12:09:00.22
>>162
オレもいまCake使ってて
モデルが単数形でコントローラーが複数形だけど
それって他のフレームワークも同じ?
フォームヘルパーとか$this->request->data=$this->Post->read()の値をフォームで使えるようにするらしいけど
$this->set('xxx',$this->request->data);じゃなくて
そのまま使えるけどそれも隠蔽されてるっていうの?

164:nobodyさん
13/09/24 13:18:17.37
>>153
一人のキチガイが根拠も示さず必死に否定してるけど
開発速度向上はフレームワークのメリットのひとつだよ

165:nobodyさん
13/09/24 13:56:07.30
>>163
未作成のモデルをCakePHPみたいに暗黙的に呼び出すというのは俺は知らない。
SynfonyにしろCodeIgniterにしろテーブルと関連付けた
アクティブレコードを明示する必要があって、
そこで単数形にするかどうかは好きにすればって感じだったと思う。

> フォームヘルパーとか$this->request->data=$this->Post->read()の値をフォームで使えるようにする

え、そうなん?初耳だわ。

166:nobodyさん
13/09/24 14:28:03.92
>>165

>ほとんどの場合、このような形式を意識することはありません。
>CakePHPの FormHelper やモデルのfindメソッドは全てこの形式に従っています。
>FormHelperを使っていれば、 $this->request->data で簡単にこの形式のデータにアクセスできるようになっています。

$this->setに代入じゃなくて
$this->request->dataに代入で使える

変なの

167:nobodyさん
13/09/24 14:53:11.90 2aQmFqKG
そこまでやってくれなくても… って感じだな

168:nobodyさん
13/09/24 16:31:42.77
モデルを単数形、テーブルを複数形、コントローラーを複数形っていうルールは他のフレームワークも同じですか?
教えてください

169:nobodyさん
13/09/24 16:36:08.50
>>164
141を読んでくれ。これをどう解釈するかだ。

170:nobodyさん
13/09/24 17:46:21.20
単数形、複数形の問題ってビューのコーディング時にも悩むんだよな

171:nobodyさん
13/09/24 18:01:42.34
>>169
他に何のメリットがあるの?
開発速度以外はデメリットだらけだろ
オープンソースのFWはオレオレ作る時間がない時に仕方なく使うもの

172:nobodyさん
13/09/24 18:10:35.82
>>171
品質の向上とかあるだろggrks。

cakeが最良とは言わんが、今の時勢でフレームワークを使うことを考慮しないのはありえん。

173:nobodyさん
13/09/24 18:12:57.27
>>171
メリットのひとつだけど他にもいろいろあるでしょ

174:nobodyさん
13/09/24 18:24:26.00
>>171
・利用者が多いので、プラグイン作成の手間が省ける
・大規模サイトでも利用されてる安心感
・命名規則が統一してるから、名前付けで悩まなくてもいい
・不特定多数で開発する時、意思の疎通が図りやすい
・コピペで作っても不具合が起きづらい
・公式が現在も開発を続けている安心感

まだ続けてるか?

175:nobodyさん
13/09/24 18:28:31.88
>>171
逆に実行速度以外オレオレのメリットがないような

176:nobodyさん
13/09/24 18:29:58.01
>>175
そもそも実行速度求めるならPHP使う必要があるのかと。

177:nobodyさん
13/09/24 18:34:34.37
スレが伸びてると思えば、
やはり不毛なフレームワーク論争かw

178:nobodyさん
13/09/24 18:38:55.69
PHPを使うとどうせ遅いんだから、という理由で速度を全く気にしないというわけにもいかないよな

179:nobodyさん
13/09/24 18:50:09.35
>>178
「遅い」の定義は要件次第だから、前提条件がないとこれもまた不毛な議論に。

180:nobodyさん
13/09/24 21:21:03.36
cakeでは簡単なことしかできないように思える。
cakeで凝ったつくりのサイトとかあったら教えてもらえませんか?

181:nobodyさん
13/09/24 21:39:34.62
>>180
逆にcakeでできないことって何だろう。。。
根性あれば大抵できると思うんだが。

182:nobodyさん
13/09/24 23:14:27.72
>>180
そもそもあんたが言っている「凝った作りのサイト」が
どういったものなのかわからないので答えようがない。

cake以外で作っていてもいいから、
まず「凝った作りのサイト」の例をいくつか上げてくれ。
サイトいうだけじゃなく凝ってる部分はどこかも言うように。

183:nobodyさん
13/09/25 00:17:25.95
facebookとかtwitterとか言い出したりしてw

184:nobodyさん
13/09/25 00:26:04.71
CakeでSNS作ったんだけどどうやって集客すんの?

185:nobodyさん
13/09/25 01:34:52.18 QAhhx/Ja
それcakephpと関係ないような…

186:nobodyさん
13/09/25 01:50:11.08
>>184
ケーキ食べ放題とかでアピール、かな・・・

187:nobodyさん
13/09/25 13:03:59.31
Cake最新版を落としてきて、cake test core AllTestsをやったら
Fatal error: Class 'PagesController' not found
と出るんだけど、なにこれテスト通らないのにリリースされてんの?

188:nobodyさん
13/09/25 14:54:07.29
>>187
そのテストはお前に必要なのか?

189:nobodyさん
13/09/25 21:12:17.21
>>178
PHPだから遅いのは確かだが、その中でも早いフレームワークは出てきてる。

>>180
「凝った作りのサイト」ってよくわからんが技術が無いだけじゃないの?

>>184
SEO対策だね。初歩しか知らんからそれ以上はなにも言えないw

190:nobodyさん
13/09/25 23:37:22.39
人間がストレスたまらないスピードなら遅いって言われる部類でも構わない

191:nobodyさん
13/09/26 00:26:56.50
>>189
SEO対策は集客のためにするんじゃないぞ。

SEOは単に検索エンジンにとって適切な作りにするだけだ。
それによって、検索した時の順位が上がることがあるが、
集客できるかどうかはコンテンツ次第。

192:nobodyさん
13/09/26 21:43:37.36
htmlヘルパーのhtml->imageのurlで生成されるa要素に属性をつけることは可能でしょうか?
やり方がございましたらご教示お願いします

193:nobodyさん
13/09/26 22:53:10.81
出来ません。
HtmlHelper::link() メソッドでラップするなり何なりして下さいませ。

194:nobodyさん
13/09/26 23:27:13.45
まだhtmlヘルパーなんてのあるんだね。
プログラムに処理させるのは簡単なループと条件判定とURLぐらいにして
普通にタグを書くべきだという結論にいたったけどね。

195:nobodyさん
13/09/27 02:25:34.52
まぁまぁ賛同するわ、その意見

196:nobodyさん
13/09/27 11:37:18.57
>>193
やっぱりそうなりますか
ありがとうございます

>>194
現在ページのけつにスラッシュありかなしかで相対パスが変わってしまうのを無視できるのでヘルパー使ってます
絶対パスだったら生でいいと思います

197:nobodyさん
13/09/27 13:21:36.12
PHPスレがないのでここで質問しますが
PHPでバリデーションする場合ってどうやってますか?

cakephpみたいにvalidateのmessage=>'エラー'とかみたいなのがあればいいのですが
ライブラリをぐぐっても多すぎて困ってます

PHP長年やってる人はどのようにしてるのでしょうか?
いちいちif分で2ページにわたり書いてました
フレームワークを使わないでPHPでやる方法の上級者の意見を参考にしたいです教えてください
使ってるライブラリ名とかでもいいです

198:nobodyさん
13/09/27 16:33:01.11


199:nobodyさん
13/09/27 17:16:00.06
>>197
いちいち二ページ書くのがいやだからフレームワークを使う
フレームワークを使うのが嫌なら二ページ書くしかないだろ

200:nobodyさん
13/09/27 17:54:19.34
2ページって・・・
ひょっとしてノートにでも書いてるの?

201:nobodyさん
13/09/27 18:11:54.74
>>197
cakephpにはvalidateのmessage=>'エラー'とかみたいなのがあるのでそれを使います。

202:nobodyさん
13/09/27 20:46:51.61
複数のページにauth認証をかけていて、ログインしたuserは全てのページが見られるようになってるんですが、
特定のユーザーだけ、特定のページのみ閲覧可能にする方法はございますでしょうか
ご教示お願いいたします

203:nobodyさん
13/09/27 23:51:29.97
特定のユーザーか否か判定して正しければ正規のアクションを実行し、
そうでなければエラーページ表示しろ

204:nobodyさん
13/09/28 00:10:22.06
>>202
ACO, ARO を使ったアクセス制御を勉強して下さい。
CakePHPの組み込みで3種類の設定が用意されています。

データベースを用いた方法が最も柔軟で高機能ですが、
管理が複雑になるので始めはiniファイルかphpファイルを用いたやり方がオススメです。


設定ファイルは

app/Config/acl.ini.php
app/Config/acl.php

のいずれかをカスタマイズして用います。

チュートリアルには残念ながらデータベースを用いる方法しか載っていませんが、
ググればある程度日本語の資料も出てくると思います。

205:nobodyさん
13/09/28 01:32:35.29
>>204
cakebookが本当にひどいな。見ない方がいい。普段はcakebookの出来には寛大だが、こればかりは無理!

206:nobodyさん
13/09/28 01:43:14.41
>>196
いえ、ですからaタグのhrefのURLの部分だけでいいと言ってるんです。

207:nobodyさん
13/09/28 02:24:59.99
HtmlHelper::link() にかぎらず、使い所だけおさえておけばいいんじゃない?

フレームワークってあくまでも標準を提供するだけであって、
規約でさえも単なるバリエーションの一形態として捉えたんで良いのではないかと。

規約に縛られ過ぎも良くないし、規約を無視し過ぎも良くない。
中庸が良いと思う。

208:nobodyさん
13/09/28 07:50:01.51
>>203
どうもです
たしかにそれがシンプルですね

>>204
ACO,AROですね
勉強してみます
おすすめの方法の方向でやってみたいと思います
ありがとうございました

209:nobodyさん
13/09/28 10:59:00.81
>>204
aco,aroっていまいち使いどころがわからない。
例えばあるページの一部のリンクの表示をユーザーによってオンオフする場合、
aco,aroを使い、かつ、ボタンの表示制御のコードも書くよね。
なんか楽になってない気がするんだよね。

210:nobodyさん
13/09/28 12:27:13.28
>>209
ACO, AROしらんけど、ユーザーによってオンオフするという機能の
作り方にある種の壁がある。

・壁を乗り越えられない人

if ($user == 'admin') { 管理画面表示 }
こんなコードを書く

・壁を乗り越えた人
if ( 権限があるか?('管理画面', $user) ) { 管理画面表示 }
こんなコードを書く


前者はユーザーが増えた時どうするの?
新たにグループ作りたくなったらどうするの?
adminだけど特定の場合(無料ユーザー等)には
管理画面の一部を消したくなったらどうするの?
などなど拡張性が低い。(全体的にメンテナンスが必要になるしコードも見づらくなる)

後者の書き方をしておけば、引数のユーザーから
いろんな条件を元に表示する権限を決めるだけだから拡張性が高い。

ACO, AROは、後者の壁を乗り越えた人だけが理解できる機能だと思う。

211:nobodyさん
13/09/28 13:52:09.15
>>210
adminだけど特定のユーザーに管理画面解放する使い方って?
俺の認識では、管理画面とユーザー用管理画面は
分けるべきだと思うが。共通化するなんて怖い

212:nobodyさん
13/09/28 14:23:58.43
リクエストとレスポンスのお互いを集合論的に捉えることが出来るのが
ACO,AROの最大のメリット。
だと思う。

213:nobodyさん
13/09/28 14:56:21.69 mm0OqWTD
みなさんはviewにヘルパーとか使いまくりますか?

214:nobodyさん
13/09/28 15:13:51.00
ビューにヘルパーは使った事がありません
ビューは非プログラマに書かせるから、ctp自体使わずHTMLに近いテンプレートシステム使ってます

215:nobodyさん
13/09/28 18:23:01.86
>>211
説明の仕方が悪かったね。

adminでもGoogle Appのように
無料契約やビジネス契約によって機能が制限されることはある。

そういう話だったが、普通に田中さん(マネージャー)とか
そういう例えにしておけばよかったね。

216:nobodyさん
13/09/28 19:02:36.41
ACO,AROは名前が紛らわしい

217:nobodyさん
13/09/28 20:16:14.74
ACO - アクセスコントロールオブジェクト(Access Control Object) - ある主体が取り扱う「物」
ARO - アクセスリクエストオブジェクト(Access Request Object) - ある物を取り扱う「主体」

218:nobodyさん
13/09/28 20:22:28.91
>>217
何もわからねえぞ
理系か

219:nobodyさん
13/09/28 22:27:35.62
たとえばdiariesテーブルに複数人のdiaryがまとめて入っているとして、
他人のdiaryが見られないように制御をするとしたら、ACO&AROの仕組みでは対応できなくない?
リクエストを受けたときに、そのユーザーが対象のactionを実行できるかできないかの制御しかできないんでしょ?

220:nobodyさん
13/09/28 23:57:31.97
CakePHP1系の情報ブログに書いてる人、消してくれないかなあ…
検索時邪魔でしょうがない、確実に今開発してる人の生産性を少しずつ下げてる

221:nobodyさん
13/09/29 01:03:09.68
>>219
デフォルトというか、Cakeの組み込みはそうです。
でも拡張すれば出来なくはない。
昔やったことがある。
ただ、管理が分けわからなくなって嫌になったんで、そのやり方は封印して
結局PHPの設定ファイルに書き込む方法に落ち着いた。

まぁ、俺が下手なのは認めるとして、逆に言うと、下手な人間にも使えるような
うまい仕組みとはいえないと思う。

222:nobodyさん
13/09/29 01:12:36.30
下手な人でも使えるなんてのは幻想だよ。
だから技術職というものがあり、
技術があることで金を稼いでいるんだ。

223:nobodyさん
13/09/29 01:54:05.25
>>220
久々に感動した自己中

224:nobodyさん
13/09/29 01:58:37.63
ワロタ

225:nobodyさん
13/09/29 02:04:25.72
そもそもの元凶は
2で仕様変え過ぎ

226:nobodyさん
13/09/29 13:11:03.72
検索するとき期間を1年以内にすれば大体問題ないよ

227:nobodyさん
13/09/29 13:37:17.57
そんなことどうやってできるの

228:nobodyさん
13/09/29 13:43:46.71
あ、できたw

229:nobodyさん
13/09/29 13:48:05.32
もしかしてChromeじゃないとできないとかある?

230:nobodyさん
13/09/29 13:52:02.75
URLに自分でパラメータをつければいんじゃね?
&tbs=qdr:yみたいに

231:nobodyさん
13/09/30 13:40:06.80
>>214
俺はヘルパー使いまくりだけど、HTMLに近いてSmartyみたいな感じ?

232:nobodyさん
13/09/30 14:07:01.24
サイト全体で共通の関数はどこにかくのかな!?

233:nobodyさん
13/09/30 14:08:21.98
vendors

234:nobodyさん
13/09/30 17:13:49.37
自分で作るならLib
サードパーティー製ならVendors
URLリンク(book.cakephp.org)

235:nobodyさん
13/09/30 21:53:03.23 YNM1OLM4
emailコンポーネントを利用してメール送付しようとしてるのですが
送信処理はできてもヘッダーにtoがないのですが原因などわかりますでしょうか・・・

236:nobodyさん
13/09/30 22:56:45.74 YNM1OLM4
すいません。単純にポートが閉じているだけでした・・・

237:nobodyさん
13/09/30 23:32:26.73
Webアプリ開発を加速する CakePHP2定番レシピ119

っていう本がでたらしいのですが
どうですかね?
最近CakePHPはじめたばっかりなので
本かおうとおもってますが

238:nobodyさん
13/09/30 23:52:23.59 II3eS9V+
質問です。
Cakeのwebroot下にWordpressをインストールしました。
一応稼働できてはいるのですが、
URLがルートの場合はwebroot内にあるWordpressディレクトリを表示したいのですが
htaccessで可能でしょうか?

239:nobodyさん
13/10/01 04:54:23.88
思いつかん

240:nobodyさん
13/10/01 09:02:42.29
こないだからCakeでテスト書いてるが、難しいな…。

どうしてもテストか実際の実行かで分岐しないといけない個所があるんだけど
Cakeで「今テスト中か?」の確実な判定はどうすればいいのでしょう

開発してたら知りたくなるこういうことが公式には載ってないんだよなーという一例

241:nobodyさん
13/10/01 11:07:03.38
テスト書くのはとても高いスキルの要ることだと思うよ。
Cakeだからむずかしいってことではないと思う。
Cake本体のテストケース見てみ。
すっげー大変なことしてるから。

テスト中の判定はいくつかやりかたはあると思うけど、
それってテストの書き方に問題があるのでは?

242:nobodyさん
13/10/01 11:10:07.46
なんかおかしな書き方になってしまったが、
要するにCake本体のテストもかなりえげつないことしてるけど、
それはCakeだからそうなったってことではないだろうということ。

あとどうしても判定したいなら CakeTestSuiteDispatcher.php で定数定義してるんで、
それを使ってみるとか。
あとは $_SERVER の SCRIPT_NAME を見るとか。

243:nobodyさん
13/10/01 13:16:24.04
あざっす、SCRIPT_NAME見ることで解決しました
モデルにどのDBから読み込むか(マスターとスレーブ)動的に変更している所があって
テスト時にそこが本来のDB読みに行こうとしてハマってた等、回避不可能なことがいくつもあってな
いやーテストって本当難しいわ、製品作るより難しい
テストに関する情報が少ないのも難易度を上げてるな、本とかにも大抵ちょろっとしか載ってないもんな

244:nobodyさん
13/10/01 14:25:16.95
まじめにTDDやったら「テスト書くほうが時間がかかるんじゃないか?」
ってレベルじゃねーな

テストを書く時間9割で
残り実コード書く時間とテスト走らせる時間が5分5分

245:nobodyさん
13/10/01 14:29:15.29
デグレで困らなくなるから先行投資だと思え
と言いつつ設計と実装を同時に進めるチャランポランな俺はTDDが出来ない

246:nobodyさん
13/10/01 15:03:39.29
納品して終わりならテストは書かない、そうしないととても納期に間に合わない
運用も任されたり長年使い続けるシステムならテスト書く、そうしないと1年後は毎日バグフィクスで潰れる

247:nobodyさん
13/10/01 15:57:47.39
2.2.9を使っています。
外部PHPプログラムからCakeの結果(findで生成される配列など)を
受け取りたいのですが、可能でしょうか?

1.3系はググって見つかったのですが、2系は見つかりません。
もし可能なら方法を教えてください

248:nobodyさん
13/10/01 16:00:33.49
>>247
1.3系でどういった情報が見つかったの?2系で基本的に違いがあるとも思えないけど。

249:247
13/10/01 17:43:00.64
>>248
以下で紹介されている方法を参考にしました。
URLリンク(web.mt-systems.jp)

1.3系はこの方法で動きますが、2系ですと一部の関数や命名規則が変わっているので、
この通りにやっても動きません。
Dispatcherの書き方の問題だと思うのですが、
ソースを見てもどうやって実行値を取得すれば良いか、わかりませんでした・・。

250:nobodyさん
13/10/01 18:10:43.96
読んでみたが、何がやりたいのかさっぱり分からなかった orz...

251:nobodyさん
13/10/01 18:29:49.41
>>249
そこまでしてでも組み込みたいのか。。。
素直にバッチ化して呼び出すとか、WebAPI経由で呼べばいいものを。。。

252:nobodyさん
13/10/05 01:07:51.95
Cake2になってよくわからないので誰か教えてくだしあ

コントローラの途中で特定の条件を満たすとヘッダが404を出して終わり
(ブラウザには404 Not foundが表示される)としたいのだが、
CakeResponseというのを使うらしいのだがドキュメント見て

$this->response->httpCodes(404); return; とか
$this->response->statusCode(404); return; とかやっても、ページが表示されてしまう
後者は404が返るようにはなるのだが、ビューの内容も返してしまってるようだ

要は
header('404 Not Found', true, 404);
$this->_stop();
と同じ結果にしたいのだが、CakeResponseを使って書くにはどうすればいいのだろう?

253:nobodyさん
13/10/05 02:07:14.57
throw new NotFoundExeption();

254:nobodyさん
13/10/05 02:14:19.09
>>252
Cake2 からしか知らないけど、ヘッダの送出、ビューの指定の二つだけ行って
リターンしたらいいんじゃないの?

if ($error) {
$this->response->statusCode(404);
$this->view = 'error';
return;
}

みたいな感じで。
あと、例外を投げても一部のクラスは 404 になるんだけど、それは知ってる?

255:nobodyさん
13/10/05 02:15:37.07
あ、253 が先に書いて

256:nobodyさん
13/10/05 04:04:25.49
>>249

>$_GET['url']に文字列「favicon.ico」をセットすると、require_once で読み込んだ index.php の実行が dispatcher を動作せずに終了するようになっている。

バッドノウハウ過ぎて、製品にはこわくて使えねーよw

URLリンク(github.com)

URLリンク(github.com)

まぁ一応ソースで確認してみた。
faviconは見ての通りなくなってるので諦めろ。

と、ここまで書いてから思ったが、要するにgithubでハイライトされてる最後の2行を消したファイルを作って、
require_onceすればできんじゃねーの?

257:nobodyさん
13/10/05 04:18:28.90
>>252

$this->response->httpCodes()はgetterだから意味ないぞ。

$this->response->statusCode(404);
$this->autoRender = false;
return;

これで、$this->render('index');と明示的に書かない限り、レンダリングされないので、
body部が空になると思われ。
動確はしてない。

258:nobodyさん
13/10/05 13:04:41.41
初心者なんですけどfindしたときに一時的にアソシエーションをなくすってことは可能なんですか?

259:nobodyさん
13/10/05 18:22:31.88
それは流石に本でも買ってきて読んで来いなレベル。

260:nobodyさん
13/10/05 18:26:41.61
可能

261:nobodyさん
13/10/05 19:24:53.67
>>259
俺のレベルに丁度いい本教えて

262:nobodyさん
13/10/05 19:35:08.52 cB/QUfLz
>>261
ドットインストールと詳解でなんとかなった
実践入門とかも読んだなぁ

263:nobodyさん
13/10/05 20:36:15.64
Model::unbindModel()

264:nobodyさん
13/10/05 20:37:41.87
っていうか、

"CakePHP findしたときに一時的にアソシエーションをなくす"

でぐぐったら出てくるんですが・・・

265:nobodyさん
13/10/06 10:47:59.39
みんな、MySQLのENUMって使ってる?

266:nobodyさん
13/10/06 11:57:58.32
何回bakeしても

Your database configuration was not found

って出てくるどうすりゃいいの?

index.php と test.phpのコメント行は外しました

267:nobodyさん
13/10/06 12:03:15.88
できました。

アプリケーションルートディレクトリで実行してないだけでした

268:nobodyさん
13/10/07 13:48:06.58
viewの中で <?php ほにゃらら ?> としてif文やらechoやらを書くのがいまだに理解できない

269:nobodyさん
13/10/07 17:46:40.29
Dispatcher::dispatch() とか
View::evaluate() を見てみると良いかも

270:nobodyさん
13/10/08 00:59:47.40
そういうルールなんだよ

271:247
13/10/08 09:11:47.61
>>256
遅レスですみません。
その2行を消して実行ファイルでDispatcherを宣言しても
CakeRequest側の受取が上手く行かずに、データ取得できませんでした。
そもそも、どうやって外部ファイルからrequestを受け取るのか・・・

全てCakeのフォルダ内で管理したいというよりも、
一部だけCakeを使いたいor既に使っている物をCakeに変更したい
などの需要があると思ったのですが、意外と無いですね。

findはSQL文でSELECTを書けばいいし、PDOを使えば簡単に取得出来るので、
外部ファイルからCakeを通す必要性がないのかもしれません。

272:nobodyさん
13/10/08 13:46:34.36
ちょと何言ってるのかよく分かって無いかもしれないんだが、
要するに結果を通常のビューじゃなくて
JSONで出力するとかって話じゃないのか?

273:nobodyさん
13/10/08 14:04:35.31
それみていい事思いついた!

URLリンク(www.php.net) すればいいじゃん!

<?php
$homepage = file_get_contents('URLリンク(www.example.com)');
echo $homepage;
?>

PHPなら2行で通信するプログラムも書けるよ!!

俺はセキュリティ的にこわくてできないけどな

274:247
13/10/08 16:34:38.21
>>272-273
いえ、Cake形式の配列でfindの結果を受け取りたいんです。
で、>>249の方法なら出来るのです。
でも、2系だと無理です。なので質問しました。

275:nobodyさん
13/10/08 16:58:21.71
JSONで受け取れないか?

276:nobodyさん
13/10/08 17:00:13.50
あぁ、HTTPリクエストとしてじゃなくて同一プロセスでか。
分かった。

277:nobodyさん
13/10/09 02:02:54.44
>>274

> これで posts コントローラの index アクションを実行し、レンダリングされた結果が表示できる。

dispatch()したら、findの結果じゃなくビューをレンダリングした結果だぞ。
その1.3でできてるってのも、上記の通りだし。

278:247
13/10/09 09:57:04.46
>>277
1.3の場合、>>249の説明にもありますが、
以下の様なソースで、対象コントローラのfind結果を取得できます。
requestActionみたいな感じです。良かったら試してみてください。

$_GET['url'] = 'favicon.ico';
require_once 'index.php';

$Dispatcher = new Dispatcher;
$list = $Dispatcher->dispatch('/news/index', array('return' => 1));
foreach ($list as $data) {
echo $data['News']['created'] . ':' . $data['News']['title'] . "<br>";
}

279:nobodyさん
13/10/09 11:28:30.56
Shell で使うShellDispatcher と ConsoleOutput と ConsoleInput を拡張して Shell を走らせてみるとか

class MyOutput extends ConsoleOutput {
public function write($messege, $newlines = 1) { // $message でデータを受け取ってあれこれする.... }
}

class MyInput extends ConsoleInput {
// 面倒なので適当に考えてくれ
}

class MyDispatcher extends ShellDispatcher {
protected function _getShell($shell) {
//... なんやかんや
$shell = new Shell($myOutput, $myErrorOutput, $myInput);
//... なんやかんや
return $shell;
}
}

----
<?php
$args = array(.....);
new MyDispatcher($args)->run();

みたいな感じで。

取得したいデータは $myOutput をパイプみたいにしてゲット。

どう?

280:nobodyさん
13/10/09 14:26:40.63
天才あらわる

281:nobodyさん
13/10/10 04:29:12.84
なんやかんやわろた

282:nobodyさん
13/10/12 20:34:20.88
質問です。よろしくお願いします。
ユーザーが自分で更新出来るCMSを作成してます
そこでユーザーが更新するたびにgoogle等にインデックスされるようにしたいです
こういった場合みなさんはどうやってインデックスさせてますか?
cakeと関係ない質問かもしれませんが便利なやり方があるかもと思い質問しました
よろしくお願いします

283:nobodyさん
13/10/12 21:40:23.39
Google買収!

284:nobodyさん
13/10/12 23:39:11.12
ping送信ぐらい?
あとsitemap更新とか。
どっちにしてもGoogle次第

285:nobodyさん
13/10/13 01:02:29.28
pingを自動的に送信するようにですね
ユーザーが作成したページが検索に乗るようにするって結構難しいのかな
登録・更新のたびにsitemap作成するスクリプトとか流してたら相当重くなりそうですよね
親切にありがとうございます

286:nobodyさん
13/10/13 02:27:44.36
更新はともかく、新しくURIが増えるんなら、sitemap.xmlは生成したほうがいいんじゃ

287:nobodyさん
13/10/13 15:45:55.81 fH7wT7an
>>286
ありがとうございます
深夜辺りにcronで動くように設定したいと思います
完全にスレチでした。すみませんでした

288:nobodyさん
13/10/15 17:36:39.11 tnpde/Hs
逆アクセスを設置したいのですが、お勧めはありますか?
今は、自作 or Googleアナリティクスを考えています。

289:nobodyさん
13/10/15 20:16:47.76
ACR WEB使え

290:nobodyさん
13/10/19 09:01:10.85
東京からみた大阪は南チョン。
大阪から東京は北チョン。

291:nobodyさん
13/10/23 01:11:43.94
コントローラの中で
getuser( $user_id, $age)
{

}
と引数を2つで指定しているとします。

URLリンク(hogehoge.com)
→ OK

URLリンク(hogehoge.com)
でアクセスされた場合に
Missing argument 2 for UserController::getuser()
というエラーが出てしまうのですが、事前にアクセスの想定されるURL以外でアクセスが来た場合に
それを上記の様なエラーが出る事無く弾くにはどうすれば良いでしょうか?


コントローラの中のファンクションで
.Net の optional 的な引数指定の方法はありませんか?

292:nobodyさん
13/10/23 02:18:32.08
public function getuser() {

$args = func_get_args();
if (count($args) < 2) { ... error ... }

}

293:nobodyさん
13/10/23 02:53:19.47
291です。

>>292
そんな便利なコードがあったのですね。
ありがとうございます!!

294:nobodyさん
13/10/23 04:27:05.04
え?正気か?
デフォルト引数値使えよ

public function getuser( $user_id, $age = nulll ){
if(empty($age)){
// URLリンク(hogehoge.com) の場合
} else {
// URLリンク(hogehoge.com) の場合
}
}

295:nobodyさん
13/10/23 05:35:12.35
empty使わずとも、nullしてるんだからifだけでいいじゃん

296:nobodyさん
13/10/23 11:58:33.55
サンプルだからelse書いたけど、$ageがない場合にちょっと処理入れるだけってのが多くね?
だから、empty($age)から書いたが、このままじゃ分かりにくいと思ってelseを後付けしたんだ。
あと、例外的なほうから書くほうが好みというのもあるけど。

297:nobodyさん
13/10/23 13:17:01.27
>>294
色んな方法があるんですね。

298:nobodyさん
13/10/23 22:10:06.74
いろんなっつうか、>>292 を常用してると死ぬぞ

299:nobodyさん
13/10/23 22:22:55.02 TvTq8mzB
>>298
なぜ?


あと、関係ないけど
ERROR:referer情報が変です。(ref1)URLリンク(www.engawa.2ch.net)ほげほげ/l50

武道板になぜか書き込みができないんだけどなぜ?

300:nobodyさん
13/10/24 00:57:55.24 ZRTs6kHv
cakePHP でMySQLの Limit 句と同じ事を以下の様なコードを記述し
試しているのですがなぜかデータの絞り込みが出来ません。
また、何もエラーも出ません。

$data_company = $this->find('all', array(
'conditions' => array( ~ 略 ~ ),
'fields' => array('company_id','company_name'),
'order' => array('sequence_number' => 'asc'),
array('offset' => '0','limit' => '5'),
));


ここでは、取得対象データが300件返って来るけれども
5行のみ取得する、という事を想定して記述しています。

どこに問題があるのでしょうか?

301:nobodyさん
13/10/24 01:30:15.64
>>300
orderのカッコと、fieldsとoffsetを囲ってあるカッコを取って下さい。

302:nobodyさん
13/10/24 01:32:31.18
こんな感じ。
$data_company = $this->find('all', array(
'conditions' => array( ~ 略 ~ ),
'fields' => array('company_id','company_name'),
'order' => 'sequence_number asc','limit' => '5',
));

303:nobodyさん
13/10/24 02:29:39.52
>>301 >>302
ありがとうございます。
やりたかった事が出来そうです!!

※cakePHPに標準で備わっているページング処理よりも
自前でコーディングした方が後々細かい制御が出来てよいと思ってましたので
limit使ってガリガリやろうと思います。

304:nobodyさん
13/10/24 02:53:38.76
>>303
絶対ページング使うべき。
ajaxにも対応してるし。

305:nobodyさん
13/10/24 03:28:39.25
ですね。使わないと損。
細かい制御ができないというのなら直ちに調べたほうが良い。

306:nobodyさん
13/10/25 23:49:39.14 AB+nrtPz
>>304 >>305
前へ 次へ ... >> <<

色々とやってましたが素直にページング使った方が楽そうなのでページングを使い始めました^^b

307:nobodyさん
13/10/26 21:52:14.71 Zi7Pbhr3
$work_check_number には、 float型の0.4が入っています。
この状態で以下のコードを実行すると想定外の出力結果が
返って来ます。何が間違っているのでしょうか?

var_dump($work_check_number);
echo "<br>";

if ( $work_check_number <= (float)0.4 )
{
echo "debug-1<br>";
}
else
{
echo "debug-2<br>";
}

【想定出力結果】
float(0.4)
debug-1


【実際に出力される結果】
float(0.4)
debug-2

308:nobodyさん
13/10/26 22:11:25.69 5t9gsaZZ
URLリンク(ryo511.blog.jp)

309:nobodyさん
13/10/27 03:55:38.51
>>308
勉強になるますだ

310:nobodyさん
13/10/27 17:26:30.48 dxTjMq1b
phpでfloat型の大小比較って凄くメンドクサイな。

311:nobodyさん
13/10/27 17:47:06.22
>>310
大小比較とこの問題は関係ないよ
IEEE754を採用してる言語なら事情はどこも似たようなもの

$a = 0.4;
$b = 0.4 + 2.2204460492503131e-016;

var_dump($a); # float(0.4)
var_dump($b); # float(0.4)
var_dump($a == $b); # bool(false)
var_dump($a < $b); # bool(true)

312:nobodyさん
13/10/27 17:57:13.61
>>310
どの言語でもそうだと思うよ

313:nobodyさん
13/10/28 10:28:14.68
てか、小数点は上手くいかない場合多いから、使わないな
俺の使い方が悪いだけかもしれないが

314:nobodyさん
13/10/31 15:20:24.96 S0k5dQpe
cakePHP の Model で SQL で言うところの IN 指定はどうやって記述すればよいのでしょうか?

315:nobodyさん
13/10/31 15:25:47.92
>>314
arrayを渡す

316:nobodyさん
13/10/31 16:24:28.47
informationは確かに変化しない英単語かもしれんけど、
だからってinformationテーブルにInformationControllerが正しいと、
それなりに開発が進んでから気がついたときの怒りは、
どこにぶつければいい?

317:nobodyさん
13/10/31 18:32:50.75 S0k5dQpe
>>315
ありがとうございます。
無事出来ました!!

318:nobodyさん
13/10/31 18:53:54.33 S0k5dQpe
select
user_id, user_age,user_nme
from users where
( user_id = 1 and user_age = 30 )
and ( user_id = 2 and user_age = 25 )
and ( user_id = 3 and user_age = 28 )

cakePHPのconditionsで上記の様なSQLを実行させる書き方はありますか?


'conditions' => array(
'users.user_id =' => 1,
'users.user_age =' => 30,
),

現在ループしながら複数クエリを発行しているのですが
纏めて1回のクエリで必要データを取得したいと考えています。

319:nobodyさん
13/10/31 20:03:43.30
>>316
英語の勉強を疎かにしてきた自分を呪えば良いと思うよ
まぁ、冗談は抜きにして、英語の基礎ができてないと色々とキツイよな。

320:nobodyさん
13/10/31 20:07:38.67
>>318
あの・・・ and はカッコ外しても論理構造同じですが。

もし 'or' を入れたいのなら、キーに 'and' とか 'or' とかを用いて
幾重にも入れ子に出来たはず。

キーが数値の場合は 'and' として解釈するんだったっけ。

321:nobodyさん
13/10/31 20:08:43.64
っていうか、その元のクエリ何だよw

322:nobodyさん
13/10/31 20:10:49.38
(間違い) and はカッコ外しても論理構造同じ
(正しい) and だけの場合はカッコ外しても論理構造同じ

ミスった

323:nobodyさん
13/10/31 20:11:08.33 pvMz+FsK
>>320 >>321
間違えました。

ただしくは、

select
user_id, user_age,user_nme
from users where
( user_id = 1 and user_age = 30 )
or ( user_id = 2 and user_age = 25 )
or ( user_id = 3 and user_age = 28 )

です。 キーに or を入れて試してみたいと思います。

324:nobodyさん
13/10/31 20:15:46.01
$cond1 = array('user_id' => 1, 'user_age' => 30);
$cond2 = array('user_id' => 2, 'user_age' => 25);
$cond3 = array('user_id' => 3, 'user_age' => 28);

$conditions = array('or' => array($cond1, $cond2, $cond3);

325:nobodyさん
13/10/31 20:23:43.34 pvMz+FsK
>>324
あざーすっ!
コードがすっきりしました!!

326:nobodyさん
13/10/31 20:38:39.33
まあmysqlはor使うと遅くなるんだけどね

327:nobodyさん
13/10/31 23:42:41.93
漢ならフルスクラッチ

328:nobodyさん
13/11/01 00:32:03.09
女傑ならソケットでMySQLプロトコル

329:nobodyさん
13/11/01 17:39:10.37
>>316
bakeすればいいのに

330:nobodyさん
13/11/01 17:45:57.99
bakeはほぼ使わないなぁ

331:nobodyさん
13/11/01 22:05:00.04
テーブルのレコードに突っ込んでる時点で数えられるから問題ない
外人がfishesという単語を見て魚の缶詰を思い浮かべるのと同じ

332:nobodyさん
13/11/02 01:30:30.01
bake 使わない開発が想像できないんだが

333:nobodyさん
13/11/02 09:23:48.01
いつも0から作り始める人ならそうだろうね

334:nobodyさん
13/11/02 14:49:14.45 YSV0Zcpf
bake とか使った事がない。
そもそも何に使うの?

良い解説サイトがあったら教えてください。

335:nobodyさん
13/11/02 18:00:44.69
別にbakeを使う必要はない。
bakeってのはCakePHPが参考した
Railsで使われていた仕組みで、


たんに、こんなに早く作れるんだよと
なんども練習して撮影したデモを
一秒でも短くするために生まれた道具にすぎない。

そう。3分クッキングのように、
あらかじめ用意しておきましたって
コードを生成するもの。

336:nobodyさん
13/11/02 18:25:11.54
Searchプラグインって標準では、区切りに全角スペースでは、複数単語検索できないんだね
不便だわ

337:nobodyさん
13/11/02 20:32:04.62
ある程度まとまった複数のモデルを bake all して、
それをごそっとプラグインに隔離して
適宜削ったり追加したり開発するのはとても便利で早い。

338:nobodyさん
13/11/02 20:42:12.21 oRF20owz
html5 で作られた infinite mario すげぇえ。

とおもってたら グラディウスまで作ってる強者がいた。

ここまで出来るのか。。。

339:nobodyさん
13/11/02 20:43:40.35 oRF20owz
URLリンク(rappdaniel.com)

html5 でここまでできるのか。

340:nobodyさん
13/11/02 22:07:26.87
うちは管理用の画面作るときはまず bake から始めるけどなぁ。
誰が作ってもほぼ同じものができるのは良いよ。
テンプレートをカスタマイズしてるから
元の姿とは全くと言っていいほど違ってはいるけど。

341:nobodyさん
13/11/02 22:18:01.50
いや、ファイルコピーすればいいですし・・・。

342:nobodyさん
13/11/02 22:57:11.17
>>341
(言ってはいけないことを。。。)

343:nobodyさん
13/11/03 00:08:16.61
bakeって何が化けるの?

344:nobodyさん
13/11/03 00:21:41.67
>>343
つまらん

345:nobodyさん
13/11/03 20:14:17.87
管理画面はbakeするけど、フロント側はちょっとねぇ。
モデルも開発中盤になってくると、bakeしただけで手の入ってないモデルがいくつか出てくるから、
コピーして必要なとこだけ変えたほうが早かったりするんだよな。

346:nobodyさん
13/11/03 23:30:20.68
bakeって言ったって
完全に全自動化出来るわけじゃなく、
色々質問されるしな。
前回なんて答えたかなんて覚えていないし、
bakeをする回数は少ないのですぐに使い方を忘れる。

347:nobodyさん
13/11/04 01:31:23.58
>>346
うちはとにかく bake all だわ。
アソシエーションの制約なんか厳しくて、
かなり CakePHP のルールを守らないと通らないので、
それがかえって誰が作っても同じ出来になるという安心感がある。

それに、コマンドで個別に設定するぐらいならファイル直接触ったほうが楽。

348:nobodyさん
13/11/05 22:46:56.28 HKwreGpo
cakeって便利だけど最初の設定って結構面倒じゃないですか?

あとは使っているサーバのスペックが足りなくて
別サーバに引っ越しをする時とか結構手間に感じるのですが皆さんは如何ですか?

349:nobodyさん
13/11/06 00:41:09.71
なんかCakePHPならではの設定することあったっけ?

350:nobodyさん
13/11/06 01:43:53.69
DBの設定は面倒だけど、1ファイルの修正で済むからな。
あと、FTPでアップした時のtmpのパーミッション設定は地味に面倒w

351:nobodyさん
13/11/06 07:11:23.30 jY+jk4/6
>>350
確かにtmp面倒くさいよな

352:nobodyさん
13/11/06 12:09:46.63
>>350
俺、多分変更してないけど問題ないな。

353:nobodyさん
13/11/06 19:21:57.33 CGtOvjTe
>>349
例えばcakePHP2 で作っていたシステムを
新サーバ+cakePHP3 に移行する時とか大変じゃない?

cakePHP3をサーバに設定した後に、
cakePHP2のソースを手動でしかるべき箇所に移動させて
しっかり新バージョンでも動くかどうか検証とかしなくちゃならないでしょ?


一発で移動とか出来ると楽なんだけどね。

354:nobodyさん
13/11/06 19:28:12.00
>>353
既存プロジェクトで使ってるフレームワークのメジャーバージョンを上げたら、
そりゃぁ大変だろうよ。
CakePHPに限らずな。

355:nobodyさん
13/11/06 21:06:22.08
Cake3ってもう使ってる人いるの?

356:nobodyさん
13/11/06 22:24:56.97
cakePHP2.0 で
ログインしていない場合には閲覧させない様な
クローズドコンテンツを作成しよとしています。

そこで、ログインしていない場合には閲覧させない為に
コントローラのファンクションの中で以下のコードを書いているのですが、
コントローラのファンクションの中では毎度以下の if(ログイン判定)  の
コードを記述する必要があるのでしょうか?

HogeController.php

public function top()
{
if(!$this->Auth->login())
{
//ログインしていないので特定ページ(TOP)へ飛ばす。
return $this->redirect($this->Auth->redirect());
}
}

357:nobodyさん
13/11/06 22:29:20.54
>>356
Authコンポーネントを良く調べろ。

358:nobodyさん
13/11/06 22:32:14.86
>>357
'loginAction' => Array('controller' => 'tops', 'action' => 'index'),

色々と試したみたのですが、これでOKですか?

359:nobodyさん
13/11/06 22:39:31.12
>>358
URLリンク(book.cakephp.org)

360:nobodyさん
13/11/07 00:07:19.08
Google Cromeで指定した文字列をクリップボードに
コピーするプログラムを作っています。

$('#id_hoge' ).click( function()
{
var str_text = "あいうえお";
var copyArea = $("<textarea/>");
copyArea.text(str_text);
$("body").append(copyArea);
copyArea.select();
document.execCommand("copy");
copyArea.remove();
});


"あいうえお" がクリップボードにコピーされると思ってたのですが
なぜかされません。cromeでは使えないのでしょうか?

361:nobodyさん
13/11/07 03:12:22.57
プラグインの日本語情報が異常に少ないんだよね
これじゃなかなか広まらないな

362:nobodyさん
13/11/07 14:17:00.21
広まらないっていうか、これからどんどん情報減ると思うよ。
自分で調べて情報公開したりするような開発者は、
もうCakePHPなんて飽きてるだろうし。
今は、普通に使えるようになってる人が、普通に仕事をこなすのに使ってる感じじゃね。
書籍も一時期は沢山出てたけどいまはそうでもないしな。

363:nobodyさん
13/11/07 14:34:27.14
猫も杓子もcakephpの時代が異常だっただけ
今はいいフレームワークがいっぱいあるし
あえてcakephpを選ぶ理由がないからね

364:nobodyさん
13/11/07 14:44:14.56 cHcjC9vh
FWはもう、cakePHPに統一しようぜ。

365:nobodyさん
13/11/07 14:52:19.69
統一するとしてもcakephpだけはやめて
codeigniter, fuelphp, laravel, yiiのどれかで

366:nobodyさん
13/11/07 14:52:21.96
cakephpは日本が異常だっただけよ
今もオフショア先では大人気

367:nobodyさん
13/11/07 14:55:55.60
>>365
fuelphpはpsr-0に対応しなかったこととかいろいろあって人気つかないな
codeigniter、laravel、yiiは世界では人気だけど日本だと微妙

368:nobodyさん
13/11/07 15:04:27.70
URLリンク(www.techempower.com)

cakeぼろぼろだ
昔のライバルsymfonyには辛うじて勝利

369:nobodyさん
13/11/07 16:27:36.49 urHtWp+p
FWといよりプログラマのスキルによるんじゃねーの。
レスポンスとかさぁ。

370:nobodyさん
13/11/07 18:19:09.69
codeigniterとか作りが前時代的過ぎてなぁ・・・
その4つの中ならlaravelがいいな

371:nobodyさん
13/11/07 18:25:45.15
Sinatra風のルーティングは見やすいんだが
PHPとは相性が悪い
リクエストの度にパスの数だけClosureオブジェクトを作ってると考えたらぞっとする

372:nobodyさん
13/11/07 20:37:01.47
Sinatra風ルーティングは、マイクロFW系向きじゃないかな

373:nobodyさん
13/11/07 20:55:50.09 TVGLaC0N
悪い事は言わない

Yiiを使える、進めるヤツはせめてToeic 800点位とってから使おうな。
英語も出来ないのに間隔で変な名前をあちこちに量産されたら迷惑

374:nobodyさん
13/11/07 23:10:35.42
>>373
なんでYii限定?

375:nobodyさん
13/11/07 23:33:39.73
TOELCといえばYii

376:nobodyさん
13/11/07 23:35:41.14
わけがわからないよ

377:nobodyさん
13/11/08 02:55:52.80
漢字もちゃんと使えてない人に言われてもなー

378:nobodyさん
13/11/08 19:07:09.93
話題のbakeを試してみたんだけど、命名規則通りにテーブルを作って
cake bake all モデル名 とやったんだけど、
Error: Table ないテーブル名 for model ないモデル名 was not found in datasource default.
とエラー。生成されたモデルを見てみると、勝手に存在しないモデルの$belongsToが書かれてた。
これは何?なんでそうなるのでしょう。

379:nobodyさん
13/11/08 19:51:29.62
>>378
テーブル名書けよ

380:nobodyさん
13/11/08 22:22:57.25
テーブル名だけじゃなくてスキーマ全部と、
DATABASE_CONFIG::$default['prefix'] の値も忘れずに

381:nobodyさん
13/11/09 01:13:36.00
IISにそのままCake載せただけじゃ動かないですよね?
どうすりゃいいんですか?

382:nobodyさん
13/11/09 02:28:19.11
IISなんて知らんがな

383:nobodyさん
13/11/09 11:02:53.97
>>381
チュートリアルに書いてるじゃん

384:nobodyさん
13/11/09 22:59:18.49
え、IISかい。Apache使わないの?

385:nobodyさん
13/11/10 08:55:33.38 0LvUSNX1
すみません教えて頂ければ幸いです
CakePHP2.3でフォームで確認画面を制作しているのですがバリデーションが効きません
自分で調べていったんモデルにはセットするとの事で
$this->Model->set($this->request->data);
if($this->Model->validates()){成功の時の処理}
上記の様にしているのですがエラー等も全く出ずただバリデーションが効いていない形です
よろしければどなたか教えて頂けませんか

386:nobodyさん
13/11/10 11:47:08.36
どんなコードを書いているかも分からないのに答えようがない

387:nobodyさん
13/11/10 19:22:06.34
より高度なRoRに引っ越しすることをお勧めしよう
Railsスレで質問すれば俺が答えてあげよう
その代わり最大限の敬意を示し、パソコンの前で土下座したまえ
そお誠意が俺まで伝わってきたら答えてあげる

多くの有力企業が採用するRoRにようこそ

388:nobodyさん
13/11/10 20:12:12.51
今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」
URLリンク(blog.sumyapp.com)

389:nobodyさん
13/11/10 20:28:10.59
>>388
書いてある内容がイマイチわからん。

390:nobodyさん
13/11/10 21:34:39.51
人の作ったプログラム触るのcakephpでも嫌なんだけど、俺だけ?
できれば一から作りたいと思ってしまう。

391:nobodyさん
13/11/10 22:07:59.18
>>389
CakePHPやる前にPHPはちゃんと理解してんだろうな?てことじゃないかな

392:nobodyさん
13/11/10 23:43:46.77
というか勉強しなきゃ使えないようなものか?て気がする

393:nobodyさん
13/11/11 01:04:57.32
cakephpやりながらphp覚えてもいいと思うね

394:nobodyさん
13/11/11 02:24:03.68
ここはやはりだめだ、Stackoverflowで聞いてくる

395:nobodyさん
13/11/11 06:16:43.22
それが2chというものだよ

396:nobodyさん
13/11/11 11:04:10.26
捨て台詞残さずにさっさと消えろよ

397:nobodyさん
13/11/11 12:40:31.09
>>394
解決していないのはどの質問だろうか?

398:nobodyさん
13/11/12 00:26:13.49 O3AZzxQU
1つだけのチェックボックスをcakePHPヘルパーを使ってレンダリングしようとしています。
その為に次のコードを記述し
echo $this->Form->input( 'totaling' , array(
'type' => 'checkbox',
'label' => false,
)); ・・・①

実行すると

<div class="input checkbox">
<input type="hidden" name="data[User][totaling]" id="UserTotaling_" value="0">
<input type="checkbox" name="data[User][totaling]" value="1" id="UserTotaling">
</div>

こんなコードが生成されてしまいます。

本当は次の様なタグが生成される事を想定しています。
①のコードの何処に問題があるのでしょうか?

<input type="checkbox" name="data[User][totaling]" checked="checked" id="UserTotaling">

399:nobodyさん
13/11/12 00:56:26.23
ヘルパーでタグ生成とかやめてほしいわ。
調べてみたけど、Railsもそうなんだろ?

HTMLはウェブデザイナーのもの
だからプログラミング要素を極限まで減らすべき。
そういった考えで作られた
フレームワーク(テンプレートエンジン)って
無いものかねぇ。

でも低機能なフレームワークを求めてるんじゃないんだ。
こういうinputみたいなものはそのままHTMLでかけて
面倒な部分を改善できるそんなフレームワーク

400:nobodyさん
13/11/12 01:00:45.10
あぁ、ぐちっちゃった。

>>398
その質問の答はCakePHP使ってないんで知らないけど、
なんでそんなコードが出力されるか知ってる?

それはチェックボックスは、
チェックしたらdata[User][totaling]=1が送られてくるけど、
チェックしなかった時data[User][totaling]=0ではなく、
なにも送られてこないんだよ。最終行のコードではね。

それの対策が 、「こんなコード」なわけ。
ここまで言えば、どうすればいいかわかるんじゃない?

そう、チェックしない場合に値を送る機能を
OFFにする設定があるはずだ。

401:nobodyさん
13/11/12 02:01:30.93
>>399
formヘルパーは使った方がいいと思うよ。htmlヘルパーは使わない方がいいかもだけど。

402:nobodyさん
13/11/12 02:22:03.84
同じくFormHelperやHtmlHelper嫌い。
でも、使わないとハマったり困ることあるから、しぶしぶ使ってる。

403:nobodyさん
13/11/12 08:35:49.27
>>399
JavaにはほぼHTMLをテンプレートに使えるのあるけどPHPは無理だろうな

404:nobodyさん
13/11/12 09:05:04.81
bakeのビューのテンプレートで、どこかにかっこいいの落ちてたりしないでしょうか
まあデフォルトのでもOKっちゃOKなんだけど

405:nobodyさん
13/11/12 10:32:08.86 ZxfwGxWG
>>400
サンクス。
checkboxをcakePHPのヘルパー使って書くとなぜ hidden が生成されるかの理由が分かりました。

406:nobodyさん
13/11/12 11:37:30.04
>>403
Javaってどれのことだ?

ZPT系を使えば良いだけだと思うんだが

407:nobodyさん
13/11/12 11:41:20.37
>>399
もはや、デザイナーとの役割分担のラインは変わってるよ
旧態依存の開発やってれば別だろうが

408:nobodyさん
13/11/12 13:01:19.39
FormHelper はタグのラッピングが頑固なところはあるな。
クラス名とか触れないところ多いし。
妥協すればとても便利なツールではあるんだが。

409:nobodyさん
13/11/12 13:42:41.13
Cakeのヘルパーみたいなローカルルール、外注のコーダーに教え込んで使わせる気にはとてもならんから
ヘルパー使ったこと無いわ

410:nobodyさん
13/11/12 16:29:44.75
>>403
まさかMayaaのことじゃないだろうな?

>>404
探せばBootstrapベースのがあるんじゃね。

411:nobodyさん
13/11/12 17:01:24.88
>>407
同意。CSSですら、Sass使ってプログラム的な管理するからな。
デザイナーはデザインだけやって、
コーディングはコーダーではなく、プログラマがやる時代になるよ

412:nobodyさん
13/11/12 17:02:26.87 GncxjoFv
プログラマ=コーダーだろ

413:nobodyさん
13/11/12 17:14:40.96
>>412
別の意味での旧態依存の世界の話だ

414:nobodyさん
13/11/12 17:33:48.33
どう考えてもフレームワークいじる奴とビュー作る奴は分担した方がいい

415:nobodyさん
13/11/12 20:55:59.85 jQBt36at
システムだと一通り何でも出来るけど
どうもWEBデザインがうまくないと自分でも思う。

どうやったら見栄えの良いサイトが作れるのかな?

先ずは何から勉強すべきですか?

416:nobodyさん
13/11/12 21:11:38.61
>>415
URLリンク(getbootstrap.com)

417:nobodyさん
13/11/12 21:17:21.91
>>415
Bootstrapとかの上からデザインしてくれるデザイナーがいっぱいいるよ

418:nobodyさん
13/11/12 21:22:11.96 jQBt36at
>>416 >>417
うーん。いまいちそのサイトのテンプレートもカッコよくないですね。
何かWEBデザイナの作成する様なスタイリッシュなデザインのサイトを自分で作れる様になりたいんですよね。

よく無料テンプレートサイトとかあるでしょ?
あーいうサイト(デザイン)テンプレートを自分で作れる様になりたいのです。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch