トップページ⇒php
1002コメント356KB

【PHP】フレームワーク CakePHP 17ホール目【v3α】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2014/08/02(土) 21:57:41.01ID:LI0DdohH
CakePHPは、Ruby on Railsの概念の多くを取り入れた、高速開発とPHPの機動性を兼ね備えたフレームワーク
質問するときはCakePHPのバージョンを書きましょう

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

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
cookbook(マニュアル)
[3.x] http://book.cakephp.org/3.0/
[2.x] http://book.cakephp.org/2.0/ja/
[1.3] http://book.cakephp.org/1.3/ja/
Twitter
https://twitter.com/cakephp
Facebook
https://www.facebook.com/CakePHP

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/


※前スレ
http://kanae.2ch.net/test/read.cgi/php/1393661004/
0002nobodyさん2014/08/02(土) 22:00:21.62ID:???
前スレ、埋まりきってないのに何故か落ちたので立てた。

>>1 少し修正した。
Lithium の話題はもう何スレッドも出てきてないので消したよ。
0003nobodyさん2014/08/03(日) 09:32:53.64ID:???
あーー、スレタイ間違えたわ

17ホール目じゃなくて18ホール目だった!

スマン
0004nobodyさん2014/08/03(日) 13:46:39.60ID:???
良いってことよ。乙。
0005nobodyさん2014/08/05(火) 15:21:34.94ID:???
Nginx+cakephpで、DocumentRoot以外に適用したいんだけど、うまくいかない
具体的には、cakephpのプログチュートリアルhttp://book.cakephp.org/2.0/ja/tutorials-and-examples/blog/part-two.htmlを、
tp://ドメイン/postではなく、
tp://ドメイン/cakephp/postで動くようにさせたい
スレチかもしれないけどどなたかわかりませんか

$vim /etc/nginx/sites-available/default
server {
root /usr/share/nginx/www;
index index.html index.htm index.php;
〜略〜
location /cakephp {
# alias /usr/share/nginx/www/cakephp/app/webroot;
index index.php;
try_files $uri $uri/ /index.html /index.php?$uri&$args;
if (!-e $request_filename) {
rewrite ^/cakephp/(.+)$ /cakephp/index.php?url=$1 last;
break;
}
}

location ~ ^/cakephp/.+\.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^/cakephp(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/www/cakephp/app/webroot$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
}
}
0006nobodyさん2014/08/07(木) 00:21:06.42ID:???
Baserってどうすか?
0007nobodyさん2014/08/07(木) 14:20:30.27ID:???
あれ使うならWordPressの方がよっぽどいい
0008nobodyさん2014/08/07(木) 14:56:16.53ID:???
>>7
WordPress以下って、そこまで酷いってこと?
0009nobodyさん2014/08/07(木) 15:06:32.73ID:???
>>8
世界中で何万人と使っているOSS以下なのが、
「そこまで酷い」に該当するの???
0010nobodyさん2014/08/07(木) 16:55:45.08ID:???
>>9
WordPressって、コードが酷いって散々言われているので。。。
0011nobodyさん2014/08/07(木) 17:46:25.12ID:???
>>10
じゃ、君の質問は
「BaserCMSはWordPressよりコードが綺麗なの?」
あるいは
「BaserCMSってコードが綺麗ですか?」
って事を聞きたいのか?
0012nobodyさん2014/08/10(日) 09:39:28.18ID:???
cakephpのテストでモックって使うべき?
勉強してもわからない。
モデルで、twitterにログインできるか?
をテストしたいんだけど。
0013nobodyさん2014/08/10(日) 17:39:12.38ID:???
テストの使い方がわからない
0014nobodyさん2014/08/10(日) 19:57:19.49ID:???
>>12 その場合は使わなくても問題なさそう。
やったことないけど twitter から成功したかどうかのレスポンスが返ってくるんだよね?
それが期待通りかテストすればいいと思う。

モックは、あるメソッドが期待通りの回数よばれたか、みたいなテストに便利。
たとえば、トランザクションの成功ケースのテストだとこんな感じ。

$mock->expects($this->one())->method('begin');
$mock->expects($this->one())->method('commit');
$mock->expects($this->never())->method('rollback');

begin() と commit() は一回だけ呼ばれるべきだし、 rollback() は呼ばれるべきじゃない。
0015nobodyさん2014/08/10(日) 20:15:20.15ID:???
>>14
ありがとうございます。
ツイッター側でメールアドレスとパスワード入力してOKボタン押さないといけないんです。

file_get_contentsみたいに帰ってくるならいいんですが。

あと、モックで回数を確認するのにと言うけどトランザクション以外で例ありますか?

今まで、回数を確認したいと思ったことがないんです。
0016nobodyさん2014/08/11(月) 02:25:00.88ID:???
>>15 画面操作が必要なんですね。
twitter 側からレスポンスを受け取った後のテストを書けばいいと思います。
どんなレスポンスが返ってくるのかはわかりませんが。

$user = $User->loginUsingTwitter('{"status":"success", "username":"hogehoge"}');
$this->assertEquals($user['User']['id'], 1);

$user = $User->loginUsingTwitter('{"status":"error", "message":"Invalid username or password"}');
$this->assertFalse($user);

みたいな感じでしょうか?

> あと、モックで回数を確認するのにと言うけどトランザクション以外で例ありますか?
ピンと来るかはわかりませんが――。

$dataSet = array(
array('id' => 1),
array('id' => 2),
array('id' => 3),
);
$mock->expects($this->at(0))->method('save')->will(array('id' => 1));
$mock->expects($this->at(1))->method('save')->will(array('id' => 2));
$mock->expects($this->at(2))->method('save')->will(array('id' => 3));
$mock->saveMany($dataSet)

内部的に saveMany() が save() を呼んでいるのであれば、 saveMany() に3レコードを渡したら save() は3回、それぞれのレコードを引数にして呼ばれるべきでしょう。

> 今まで、回数を確認したいと思ったことがないんです。
テストケースは、自分が確認したいと思うかどうかではなくて、追加開発を行う時に、後任の担当者を憂鬱にさせないために作るものかなと思います。
特に修正を行うと広範囲に影響が及ぶような中核機能については、入念なテストケースを書いておいた方がいいかもしれません。
さもないと、そこを修正する必要に迫られた時、後任の担当者は、関数をまるごとコピペして2、3行修正する、という愚挙に出ます。
0017nobodyさん2014/08/11(月) 02:34:11.23ID:???
>>16 訂正 will は with の誤りです。
0018nobodyさん2014/08/11(月) 11:37:29.34ID:???
>>16
ご丁寧にありがとうございます!
0019nobodyさん2014/08/11(月) 15:39:39.01ID:???
>>18 どういたしまして
0020nobodyさん2014/08/14(木) 11:29:49.85ID:???
どうしてもテストを書く時、
テストを先に、メインのプログラムを後に。というのがやりづらい。

先にメインのプログラムから書いてしまう。

何かコツみたいなないですか?
0021nobodyさん2014/08/14(木) 17:57:35.56ID:???
そもそもテストの意味がまるでわからない。
何かを登録する処理があるとして、
それをブラウザで実行して確認すれば良いだけじゃないのか?
0022nobodyさん2014/08/14(木) 19:34:58.00ID:???
あれデジャビュ
0023nobodyさん2014/08/15(金) 00:06:24.74ID:???
>>21
そう思うんだけど、テストした方が良いというのが定説なんだよね。
0024nobodyさん2014/08/15(金) 04:46:25.44ID:???
>>21
テストケースを書けばテストも自動化できるので、コードの品質管理の上では必須。
ただ、Cake使いにはそういう所は少ない印象。
そういう取組をする現場はもっと新しいものを積極的に採用してるね。
0025nobodyさん2014/08/16(土) 01:43:18.22ID:???
>>24
テストケースって言うけどさ、ブラウザで実行して確認するのとどう違うんだ?
0026nobodyさん2014/08/16(土) 08:47:31.75ID:???
>>25
新規会員登録に成功、失敗。
ログインに成功、失敗。
パスワード変更に成功、失敗。

この合計6つのテストを一瞬でやれる。
また、これにツイッターでログイン機能をつける場合、ブラウザテストだとすべてをテストし直す必要があるが、
テストケースがある場合、どんな方法でツイッターログインをつけようがテストさえつけりゃOKということになる。
0027nobodyさん2014/08/16(土) 08:49:14.66ID:???
特に自分の場合はもう30過ぎたおっさんなので昨日のご飯すら覚えてない。
強いて言えば昔書いたプログラムなどほとんど覚えてない。

しかし、テストケースさえありゃどんな目的で作ったのか一目でわかるようになる。
0028nobodyさん2014/08/16(土) 16:43:12.80ID:???
>>26
それをブラウザで実行して確認するのと
何がどうメリットがあるのか全く理解できないんだよな。
どうせテスト書いてもブラウザで確認する作業もあると思うし。
0029nobodyさん2014/08/16(土) 16:46:43.74ID:???
単体テストでググれ
0030nobodyさん2014/08/16(土) 19:48:20.56ID:???
>>28
俺もテスト書くまではあなたと同意見だった。テスト書く手間もあるし、書き方もわからんし。
ただ、確認する項目が100,200となってくると同じ確認を何度もできなくなる。
手間だから。

安心感みたいなのもあるかもしれない。
0031nobodyさん2014/08/20(水) 08:16:48.64ID:???
http://jobinjapan.jp/job-listing/keyword-cakephp.html
0032nobodyさん2014/08/21(木) 20:58:07.10ID:???
公開画面の一部だけCake使うってこと出来ませんかね?
例えばDBに登録しているバナーを表示して、
表示回数をカウントするような機能。

こういうのは早い動作(処理)を求められるけど、
Cakeを通すとどうしても動作が遅くなってしまう。
けど、読み書きにControllerやModelを使いたい。

なにかいい方法ありませんかね?
0033nobodyさん2014/08/21(木) 22:41:55.19ID:???
Cakeと他のアプリの共存は.htaccessないし類似の設定で振り分ければできる
って書こうと思ったが後半見ると質問の意図は違うのか?

Cakeを丸ごと使うと遅くなるから機能の一部だけ使って速度と便利さ両立するような方法ない?って話?
0034nobodyさん2014/08/21(木) 22:43:19.63ID:???
>>33
はい。そういうことです。
1.3系にはあるみたいですが、2系ではググっても見当たりません。
0035nobodyさん2014/08/21(木) 23:12:05.66ID:???
そもそもそこまでしてCakeにこだわる意味あるのか?
フルスタックで高速開発が売りなのにわざわざバラして使うとか

素直に他の独立して使えるORMかSQLクエリビルダーのライブラリ使うってのは駄目なわけ?
軽いのならidiormとかあるじゃん
その例の程度だとControllerの必要性は感じないし

もしくは処理速くするだけならCakeフルに使ったままで
PHPをAPCやらで高速化するという手もあると思うけど
0036nobodyさん2014/08/22(金) 00:12:48.81ID:???
>>35
Cakeにこだわる意味あります。例えば>>32の要件の場合、
バナーの管理って管理画面を作ると思うのです。
その場合のログインシステム、バナー画像の管理、アクセス数の確認
など管理画面でやりたいことが結構あります。

これをフルスクラッチで作るのは結構骨が折れます。
「アクセスが集中する箇所を軽くしたい」という要件を満たすためだけに、
フレームワーク使わないというのは非効率に感じるのです。
0037nobodyさん2014/08/22(金) 00:18:28.47ID:???
なんで全部フルスクラッチにするの?
表示のカウントは管理画面と別でしょ?
管理画面だけCakeで作ってDBだけ共用すれば?
0038nobodyさん2014/08/22(金) 00:32:14.41ID:???
>>37
ということは、管理画面だけCakeにして
他は別のフレームワークを使うということですか?

それはそれで正しい開発の在り方なのでしょうか・・・
0039nobodyさん2014/08/22(金) 00:42:28.69ID:???
フロント側に他のページもあるならそこもCakeで作ればいいよ

要はアクセス集中する部分だけ素のPHPに近い状態で書けば速いわけだけど
Cakeはフレームワークの一部だけ取り出して使うことをあまり想定してないからこの用途にはあまり向かないんじゃないのってこと
かと言ってフルスクラッチはキツイだろうから軽めの他のライブラリ併用すれば?と

そこに他のフレームワーク使って何とかなるなら管理画面ごとそのフレームワーク使えばいいよね
0040nobodyさん2014/08/22(金) 01:16:14.35ID:???
機能がよく分割されてるのは、SymfonyとかLaravelだな。
Silex+Twig+Eloquentとか簡単にできる。
0041nobodyさん2014/08/22(金) 01:34:06.53ID:???
あとAuraかな
0042nobodyさん2014/08/22(金) 02:05:27.82ID:???
外部ファイルにapp/webroot/index.phpの中身をコピって下部のDispatcherの部分のコード削って
その続きからApp::uses('Model', 'Model')などと書き始めれば動くことは動きそう
でも軽いかこれ?
0043nobodyさん2014/08/22(金) 02:13:08.95ID:???
バナーの表示回数ってWebサーバのログから集計したら
リアルタイムにデータ取りにくい代わりに負荷減らせね?
0044nobodyさん2014/08/22(金) 03:07:44.02ID:???
サーバのログから集計するって初めて聞いた考え方だなw
サーバのログ=テキストファイルだけど、
それを分析・分類するのはどうするんだ?シェル書くのか?
0045nobodyさん2014/08/22(金) 09:21:10.25ID:???
アクセス解析のごく一般的な方法の一つでそ
共用のレンサバに機能としてついてるようなアクセス解析はほぼこの類
Apacheログのパーサーくらい探せばPHPのライブラリもあるだろうが
シェルスクリプトのが軽いか


最近はFluentdでログを構造化するのが流行ってんじゃね
0046nobodyさん2014/08/22(金) 09:34:12.26ID:???
CakeのModelだけ使うなんてドMの所業としか思えないよママン(´・ω・`)
0047nobodyさん2014/08/22(金) 12:33:28.35ID:???
でも、バリデーション便利だよ?
0048nobodyさん2014/08/23(土) 14:14:21.76ID:1tdBFRBe
チュートリアルの認証部分のコントローラの$componentsのloginRedirectのaction部分をいじってるんですが、
ファイルを保存してもすぐに反映されません。
これはどこかにキャッシュされますか?
0049nobodyさん2014/09/02(火) 17:18:10.52ID:QrpuDeHl
WordPressのテーマ編集のように、
ビューを管理画面から編集する機能をつけようと思っているのですが、
単にPHPのソースを編集する形にしても問題ないのでしょうか?
(不特定多数が使用しません。管理者のみです)

非プログラマにPHPファイルを編集させるのは違和感があるのですが、
WordPressでそうなってるので、特に問題ないのかな?と感じています。
もし、問題がある可能性があれば注意点を教えて下さい。
0050nobodyさん2014/09/02(火) 23:39:56.72ID:4+zCLOUH
WordPress と同じぐらいの問題がある。
CakePHP 固有の問題は思いつかない。
0051nobodyさん2014/09/02(火) 23:50:38.40ID:???
テンプレートファイルの編集ミスったら普通にエラー出るじゃん
稼働中に止まってもいいサイトならどうでもいいが
管理者だってミスるだろうしせめて構文チェックくらい入れて差し上げろ
0052nobodyさん2014/09/02(火) 23:51:19.97ID:???
実サイトへの反映前にプレビューできる機能があるとベターだろうな
若干面倒だが
0053nobodyさん2014/09/03(水) 00:19:55.11ID:???
>>50-52
なるほど。ビューの編集機能ってあった方が良いんですかね?
自分は直接いじるので無くても構わないのですが、
CMSだとあるのが必須のような気がして、迷います。
0054nobodyさん2014/09/03(水) 00:48:46.04ID:???
【まともにCMSを運用してるユーザーやWeb開発者】
IDEかエディタでテーマ編集してローカル環境でテストしてからアップする
管理画面にビュー編集機能がなくても大して気にしない

【個人サイトやビジネス利用でも運用が適当なユーザー】
少々サイトが止まってても良いので管理画面から直に変更を加えたいこともある

というイメージ

あと考えられるのはCMSまたはCakeのディレクトリ構造をよくわかっていない奴がビューを触りたいなら便利なのかもな
テーマ編集機能がないとそもそもどのファイルいじれば表示変わるんだよと文句言う奴もそれなりにいる
その程度の知識でビュー触んなハゲと言いたいが現実は非情である
0055nobodyさん2014/09/03(水) 01:03:28.90ID:???
有名所のCMSはレンタルサーバの簡単インストールに対応してる場合がある
さらにWPはwordpress.comみたいなホスティングもあるし
極端な話FTPすら分からなくても利用開始できてしまうんだよな
そこまで行くともうブラウザから殆どの作業ができるようにせざるを得ないという感じなのでは

個人的には機能実装の優先度は低いと思う
大衆向けCMSとして成功したならいずれ要望が出てくるんだろうが
0056nobodyさん2014/09/03(水) 01:13:13.14ID:???
Web製作者がビューいじるだけならどうでもいい
大勢の一般人に使わせるならあってもいい

そして一般人に使わせるCMSならビューには
自動エスケープするテンプレートエンジンを使ったほうがいい
0057nobodyさん2014/09/03(水) 03:02:35.39ID:???
そういえば BaserCMS とかに編集機能あるよね
0058nobodyさん2014/09/03(水) 11:31:38.30ID:???
あるけど、あれも直接編集する形だよ
0059nobodyさん2014/09/04(木) 05:40:00.77ID:???
<?php if ($a): ?>
<p>こんにちは</p>
<?php else: ?>
<p>こんばんは</p>
<?php endif; ?>

FWを使用しなくてviewに相当するスクリプトにこう書いているものを、
cakephpではどうやって書くのがよい作法なのでしょうか?
0060nobodyさん2014/09/04(木) 10:02:35.94ID:???
唯一の正解はないと思うが自分が段階的にリファクタリングすると考えると


1.テンプレート内でロジック・変数の設定と出力を分ける
<?php $greeting = $a ? 'こんにちは' : 'こんばんは'; ?>
<p><?php echo $greeting ?></p>

ここまではFW利用関係なしにやっておくべき
以下はMVCパターンのFWを使うとして


2.ロジックと変数の設定処理をControllerのActionに移動
public function hogeAction() {
$greeting = $a ? 'こんにちは' : 'こんばんは';
$this->set('greeting', $greeting);
}
※複数のテンプレートで共用するならController::beforeRender()にでも書く


3.ロジックをModelや共通関数に移動
複数箇所で再利用したり挨拶の種類が増えたりして複雑化する予定があるなら
アプリ内の共通関数またはGreetingクラス(CakeのModelクラスは継承しない)とgreetメソッドを作ってControllerから呼ぶ
テストしやすいしね


以下蛇足
>>59は分岐の条件を$aという変数で単純化しているけど
ユーザーがアクセスした時間帯によって挨拶内容を分岐するだろうね
3で引数にDateTimeオブジェクトを取るように関数・メソッド・クラスを設計しておかないとテストが少々面倒
多言語化と現地時間考慮という要求が出てきたらもっと大変

単体テストの存在意義分からんちんな人なら目視で結合テストしてそれだけで1日かかるかもしれないな
0061nobodyさん2014/09/04(木) 10:44:49.53ID:???
ビューやヘルパーやコントローラーに何でもかんでも書いてるCakeのアプリってさ
大概テストコードも少ない上に1つのクラスとメソッドがとても長いんだよね
保守を押し付けられたら死ぬしかない
0062nobodyさん2014/09/04(木) 12:37:25.21ID:???
>>60
横だけど、1の書き方はおかしくないか?
ビューやコントローラで変数に代入するってのは違うと思うだが。

普通に共通ヘルパー作るので良いと思うんだけど。
<?php echo $this->ViewCommon->greeting(); ?>
みたいな感じで出力して。

ヘルパー内の関数(greeting)で時間帯に合わせて
出力メッセージ変えれば、>>59がやりたかった事をシンプルに出来るだろ。
0063nobodyさん2014/09/04(木) 19:57:46.19ID:???
ビューはなるべくやめたほうがいいのは同意するけど
コントローラでビュー変数をセットするのって普通じゃないの?
ビューにModelのfindの結果渡すのと同じだし
0064nobodyさん2014/09/04(木) 20:18:57.95ID:???
これくらい単純ならヘルパーが手軽よなあ
ヘルパーはプレゼンテーションロジック担当というMVC原理主義に従うならモデル作るのが正解なんだろう
0065nobodyさん2014/09/04(木) 20:37:01.94ID:???
>>63
それはビューに変数を代入したり、可変する場合な。
>>59のような挨拶って代入する必要ないだろ。
「◯◯さん、こんにちは」の、名前の部分は別だが。
0066nobodyさん2014/09/04(木) 20:41:26.45ID:???
条件によって変化してるんだから可変と解釈しても問題なくない?
0067nobodyさん2014/09/04(木) 20:46:00.11ID:???
質問者の意図として、挨拶文のところは、簡単な例で示しただけだと思うから、
「ヘルパーで十分」って回答するのは、あまりに浅はかだろw
0068nobodyさん2014/09/04(木) 20:51:18.46ID:???
>>61
共通ヘルパーが神クラス化してるアプリ見たことあるわw
ヘルパーなのに主役というギャグだったんだと思ってる
0069nobodyさん2014/09/04(木) 20:59:14.22ID:???
CakePHPとかいう初心者向け似非MVC養成ギブス
さっさと投げ捨てよう
0070nobodyさん2014/09/05(金) 00:09:03.50ID:???
>>67
エスパーじゃないんだからさ、例示以上の事を推測できないでしょ。

ま、一応用途を推測した上で回答してるけど、
それでもコントローラから挨拶文を生成するやり方は
バッドプラクティスだと思うけどなぁ
0071nobodyさん2014/09/05(金) 01:22:18.58ID:???
この例の挨拶文の分岐はビューロジックじゃなくね?
どっちの挨拶文を選択するかはビュー関係なしに解決できる。
"よい作法"を問われたらモデルに書いて素直なMVCするが正解だとおも。

ヘルパーは表示整形用途に留めるべきで、
コントローラはMV間の糊に徹するべき。

3系ならViewCellも選択肢に入る。
0072nobodyさん2014/09/05(金) 01:28:31.63ID:???
俺はヘルパーかコントローラに気分次第で書いて、太ったら慌ててモデルとテスト作るクチだがね。
0073nobodyさん2014/09/05(金) 01:53:21.35ID:???
モデルに書く意味が分からん。ただのビューの表現に過ぎないのに。
例えば、おはよう・こんにちは・こんばんわ以外に
時間帯によって挨拶文を出力したいとする。

ロジックが発生するけど、これモデルか?モデルなら何のモデルだ?
Userモデルか?会員サイトじゃない場合はどうするんだよ。
だったらヘルパーにする方が汎用性高いだろ。

別に例を出すと、パンくずリストがある。ページによって位置が変わる。
しかし、これはHTMLヘルパーに用意されている機能だ。
コントローラに依存しそうな機能なのにヘルパーだ。
なぜか。ビューで表現する機能だからだ。

1から10まで仕様通りに作れとは言わないが、
より複雑に作る事をお勧めするのは如何なものかと感じる。
0074nobodyさん2014/09/05(金) 01:56:33.77ID:???
FW初心者がのたまう"モデル"ってデータベースありきで話通じないときある
最初はデータベースにモデルを永続化しないアプリケーションを作りながら
MVCフレームワークを学ばせたほうがいいんじゃないかと思う
0075nobodyさん2014/09/05(金) 02:12:07.63ID:???
>>74
あるある
フレームワークで用意されたModel・AppModelクラスを継承したものだけがモデルだと思ってる
実際はモデルの部分集合にすぎんのに
んで行き場を失ったビジネスロジックがコントローラやヘルパーでヒャッハーしてる
0076nobodyさん2014/09/05(金) 03:12:00.07ID:???
Cakeのパンくずリストの実装って微妙じゃね?
特にHTMLヘルパーがパンくずの配列$_crumbsを状態として持ってるのは違和感バリバリだわ
おもいっきり単一責任の原則に反してるしパンくずリストの構築に責任を持つクラスを作るべき
ヘルパーのメソッドはパンくずリストを表すオブジェクトか配列を受け取って出力の整形をするだけでいい

>会員サイトじゃない場合はどうするんだよ。
腹筋崩壊するからやめろっやwwww
0077nobodyさん2014/09/05(金) 04:34:38.73ID:???
>>74-76
な、結局煽ったり重箱の隅突っつくしかなくなるだろ?
いつの間にか話が「モデルの使い方」になってら。
話のすり替えもいいとこだ。

>>67では「簡単な例で示しただけ。浅はか」と言ったから、
仕様を会員サイトで想定し体験をだしたら、腹筋崩壊するぐらい面白いっと。
次はどんな煽りで来るんだろうなー面白いこと言えたらいいんだけどなー
0078nobodyさん2014/09/05(金) 10:37:11.84ID:???
共通Helperそこまで叩くほどなん?
複雑な処理なら一部他に任せるように変えてけばよくね?
モデルに委任してもいいし
コントローラ経由でモデルに処理移すのと大差ないやん
0079782014/09/05(金) 11:00:32.52ID:???
んー処理が複雑or挨拶文を設定ファイルから読みたいときは
例えばSystemMessageクラスをモデルに作るのもあり……?
0080782014/09/05(金) 11:10:14.48ID:???
ま、喧嘩すんなや
ビューロジックとビジネスロジックの解釈の違いが噛み合わん原因っしょ
>>73の会員サイトの例で説明を試みると

挨拶文はUserモデルと比べれば瑣末にすぎないビューの表現の一種やん→ビューロジック ヘルパー派
挨拶文の選択条件は見せ方に依存しねえじゃん→ビジネスロジック モデル派
0081nobodyさん2014/09/05(金) 12:29:00.74ID:???
おはこんばんちわ、○○さん!
0082nobodyさん2014/09/07(日) 03:06:53.03ID:???
すみません誰か分かる人いたら教えてください
pagenationでUNION使いたいんだけど情報が全くないので困ってます
生のSQL叩いてpagenationに組み込む方法しかないのかな
0083nobodyさん2014/09/07(日) 11:45:44.93ID:???
>>82
多分、別のモデルを作るのがいいと思う。

簡単なのは、UNION 後のビュー(データベースのビュー)のモデルを作る方法。
この方法なら、Model::$paginate() と Model::$paginateCount() をわざわざ実装する必要がないからね。

ビューを作るのが嫌な場合、それらのメソッドを実装したモデルを作ることになると思うけど、
その場合は、生の SQL を書くより DboSource::buildStatement() を使った方がいいと思う。
Paginator::$settings の設定を生の SQL に組み込むのは大変だよ。
0084nobodyさん2014/09/07(日) 11:47:23.50ID:???
間違えた。
Model::paginate() と Model::paginateCount() ね。
0085nobodyさん2014/09/07(日) 17:38:42.22ID:???
>>83
レスありがとうございます
ビュー作るのは少し微妙なのでbuildStatement()の方で補おうと思います
それでもなかなかややこしいですね
0086nobodyさん2014/09/10(水) 19:35:59.90ID:???
自分の個人サイトでcakephp使ってる人居ますか?
リニューアルついでにcakephp使おうか迷ってる。
0087nobodyさん2014/09/11(木) 01:14:28.20ID:???
いるだろそりゃ。俺もその一人だが。
0088nobodyさん2014/09/11(木) 01:15:53.40ID:???
どんなサイトか分からんが、個人でやって迷ってんならやってみろよ
0089nobodyさん2014/09/24(水) 23:35:14.19ID:???
2.4でoracle使いたいんだけど、どうやったら使えるの?
0090nobodyさん2014/09/25(木) 01:32:54.46ID:???
2系からはサポートしなくなった。

俺は使ったことないんだけど、Oracle のプラグイン作ってくれた人がいる
https://bitbucket.org/odin88/cakephp-2.0-oracle/src
0091nobodyさん2014/10/07(火) 11:48:06.87ID:QG2cjBR/
CakePHP2 のhasManyで、プライマリーキー以外を使ったアソシエーションは定義できないのでしょうか。

たとえば 商品 hasMany 素材 だとして
商品のPK以外の値と 素材テーブルのある値とでアソシエーションを組みたい場合があります。
この場合、「素材のある値」はforeingKey で指定可能ですが、商品テーブル側のどの値を使うのかは
PKで決め打ちになっていていじれません。

どうするのが良いでしょうか。
0092nobodyさん2014/10/08(水) 23:25:18.00ID:???
>>91
プライマリーキーって動的に変えられるから、変えてからアソシエーションすりゃいいんじゃないのかな。
0093nobodyさん2014/10/09(木) 18:34:02.73ID:???
>>92
ありがとうございます。

やってみましたところ、うまくいきました。
0094nobodyさん2014/10/25(土) 16:31:19.49ID:???
愛国者と言うほど保守派でもないが、民主党に投票するほど反日ではない
0095nobodyさん2014/11/04(火) 02:37:17.02ID:???
cakeって学習コストどんなもん?
fuelと比べてつらい? 簡単?
0096nobodyさん2014/11/04(火) 02:55:59.62ID:???
XAMPP1.8.3
PHP5.5
CakePHP2.4.10

http://ameblo.jp/tondemonight/entry-10124640485.html

少し古いページですが、URLの末尾にスラッシュ(トレイリングスラッシュ)を
つけようと思い上記ページの通りに.htaccessを設定しました。
思い通りの動きにはなったのですが、何故かpostもgetもデータが受け取れなくなりました。

htaccessを理解しないまま貼り付けたため、何が原因でこういう事態になったのかわかりません。
とりあえず、htaccessを元に戻せばデータの受け渡しはできるのですが。。。

XAMPP上で上記の動きになったので、さくらインターネット環境でも
試したのですが同様の現象が発生しました。

どなたか詳しい方、教えて頂けないでしょうか?
0097nobodyさん2014/11/15(土) 12:14:51.51ID:W0Odgr3A
存在しないURLでアクセスされた際に

Missing Method in AdminController

こいうエラーメッセージが表示されてしまいます。
これを表示させない方法はありますか?

やりたい事は、もし存在しない(コントローラー等が未定義)の状態で
アクセスされたら指定したエラーページに飛ばしたいです。
0098nobodyさん2014/11/15(土) 16:00:55.50ID:???
config の debug レベルを変更
0099nobodyさん2014/11/15(土) 19:52:27.40ID:ZGSnFqpd
>>98
ありがとうございます。
0100nobodyさん2014/11/15(土) 20:12:36.24ID:VK5/2N9R
フォームヘルパーを使って以下のコードを記述すると

echo $this->Form->input('password');


次のコードが出力されます。しかしこのままでは画面のレイアウトが
どうも満足できません。

<div class="input text required">
    <label for="UserUsername">Username</label>
    <input name="data[User][username]" maxlength="50" type="text" id="UserUsername">
</div>

そこで次の様にスタイル指定をしたタグを出力させたいのですが
フォームヘルパーを使うと以下の様な出力を行う事は出来ないのでしょうか?

<div class="input text required original_1">
    <div class="original_2" style="width:50px;float:left;"><label for="UserUsername">Username</label></div>
    <div style="width:150px;float:left;">
      <input name="data[User][username]" maxlength="50" type="text" class="original_3" id="UserUsername">
    </div>
</div>
0101nobodyさん2014/11/15(土) 22:46:51.55ID:???
cakePHPのコントローラー名は

【複数形の英単語】Controller.php


という名前にするのがルールなのでしょうか?
必ず複数形にする必要があるのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています