トップページ⇒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/
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


という名前にするのがルールなのでしょうか?
必ず複数形にする必要があるのでしょうか?
0102nobodyさん2014/11/16(日) 02:51:08.67ID:???
>>101
ルールではない、規約だ

規約にのっとっていれば色々とフレームワークが自動でやってくれる部分が多いが、
規約から外れたとしてもなんとかする方法は(面倒臭い方法だが)用意されている

そういう面倒臭さが嫌なら大人しく規約に従っておくのが吉
0103nobodyさん2014/11/16(日) 11:29:55.49ID:88uIuRDd
>>102
了解です。
thank you
0104nobodyさん2014/11/16(日) 11:31:49.43ID:QtKRF6/y
因みにcakePHPでサイトが作成されている事を
(開発の出来る人を想定)閲覧者にばれない様に作り込む事は可能ですか?
幾らやってもばれるものでしょか?


セキュリティ的に開発に使用しているFWは隠蔽した方が良い気がしております。
0105nobodyさん2014/11/16(日) 11:40:56.93ID:???
>>104
種類がばれて問題になるようなFWは使わないほうがいい
0106nobodyさん2014/11/16(日) 13:04:20.46ID:rzwbZ1qv
>>105
一から開発するの凄く手間じゃないか
0107nobodyさん2014/11/16(日) 14:58:24.60ID:???
>>104
cakeだとわかるような部分が見つかったらその都度対応すればいい
0108nobodyさん2014/11/16(日) 15:00:53.86ID:???
cakeのセキュリティのなにが不満なのだろう?
そしてなにを満たせばセキュリティ的に合格なFWなのだろう?

セキュリティがーとかいう人間に限って知識が薄っぺらい。
0109nobodyさん2014/11/16(日) 15:33:17.44ID:I3T4ePm6
>>104

アセットディレクトリを /wp-contents/themes/*** にして、/wp-admin/ の振る舞いを偽装して
WordPress っぽくつくる。

これであまり熱心ではない開発者はWPだと思うだろ。

あとは Router というか $routes の設定をいじって、URLのパターンから推測できないようにする。
エラーメッセージの文言をすべて変更する。

まぁでも、既知の領域では隠蔽できるだろうけど、いつ何時新しい状態が現れるか分からないから完全に隠すのは難しいと思われる。
0110nobodyさん2014/11/16(日) 19:46:24.87ID:???
Cakeの1や2系で、検索サイトのDB設計したりすると遅いの?
零細企業のサイトで、たった数件の検索に毎回15秒かかってるとこがあって理解できん
作った人間が下手なだけならいいが、Cakeの問題なら仕事で使いたくない
MVCやルーティングだけFW、DBやSQLカスタマイズでセキュリティ自力対応じゃダメかね
Cake案件が多いので、企業が使いたがってるのかは知らんが、気になってしょうがない
0111nobodyさん2014/11/16(日) 21:26:26.08ID:???
まともに設計してそこまで遅くなるわけない
開発者もサーバの性能も糞すぎるとかじゃねえの
0112nobodyさん2014/11/16(日) 22:24:01.26ID:???
データが1000万行あって、トランザクションして、ソートして、メモリ足りなくて、SQLシステム共にスワップして…

だったら15秒くらいかかる。
0113nobodyさん2014/11/16(日) 22:36:50.85ID:???
そのサイトには、総数500件って書いてあるから
非表示状態のレコード含めても1000行はこえないでしょ
過去テーブルに移してなきゃ、ID番号が4万台だから最大4万行のはず
0114nobodyさん2014/11/16(日) 22:40:15.89ID:???
?
0115nobodyさん2014/11/17(月) 18:34:09.12ID:???
>>113
すごいエスパーだな
0116nobodyさん2014/11/17(月) 20:32:45.39ID:???
パフォーマンスの調査すらできない奴なら
何使っても一緒だわな…
0117nobodyさん2014/11/17(月) 23:14:10.85ID:84kAq3io
>>109
ありがとうございます。
0118nobodyさん2014/11/18(火) 07:26:12.45ID:BXcgCvPC
cakePHPでテーブルを定義して
<td style="width:100px"></td>

という風に列幅を指定しているにも関わらずサイズが適用されません。
なぜでしょうか?また、どうすればcakePHPを使用していても
指定したサイズに列幅調整を行う事が出来ますか?
0119nobodyさん2014/11/18(火) 16:42:48.64ID:???
idをauto_incrementにすると、1から順に増えてきますが、1001からとかってできますか?
0120nobodyさん2014/11/18(火) 18:42:27.17ID:???
>>119
それはcakeじゃなくてDBの問題。MySQLなら
ALTER TABLE テーブル名 AUTO_INCREMENT=1001
とか実行すればいいよ
まあphpmyadminとか使ってGUIでやったほうが楽だけどね

>>118
まちがいなくcakeは無関係
出力された後のことはHTMLとブラウザの解釈の問題
とりあえずは簡単なサンプルでタグの不整合だのCSSだのをチェックし直すといい
0121nobodyさん2014/11/18(火) 19:07:45.09ID:???
phpすら関係ないなw
0122nobodyさん2014/11/18(火) 20:13:46.51ID:???
>>110
インデックス貼ってないんじゃないの?
mysqlってインデックス貼らないと遅くなるの俺は最近知ったね。
0123nobodyさん2014/11/18(火) 23:18:16.68ID:72ycgRPS
Google Analytics をelementの中に定義して
次の呼び出しをしているのですがなぜか
Google Analytics に認識されません。

サイトにアクセスした直後にリアルタイムを見ていますが
アクセスが一向にカウントされないのですがなぜでしょうか?


<?=$this->element("google_analytics")?>
</head>
0124nobodyさん2014/11/18(火) 23:24:02.50ID:8pS7TyyM
>>123
だけど分かりました。単なるタイムラグでした。
0125nobodyさん2014/11/18(火) 23:27:49.19ID:???
PHP関係ない質問はよそでやれよ……
0126nobodyさん2014/11/18(火) 23:34:44.64ID:???
>>110
その遅さじゃindexどころか、innodbで↓やってるとしか思えないな

「総件数(○○件)」 SELECT count(*) FROM テーブル
「検索項目A(○件)」 SELECT count(*) FROM テーブル WHERE カラム = 'A'
「検索項目B(○件)」 SELECT count(*) FROM テーブル WHERE カラム = 'B'
「検索項目C(○件)」 SELECT count(*) FROM テーブル WHERE カラム = 'C'
0127nobodyさん2014/11/20(木) 18:21:53.44ID:CTsz5JQb
cakePHPで次の様にオーソドックスなパス配置で
システムを組んでいます。

hogeuser/apps/test_app
→アプリ本体

hogeuser/cake
→cakePHPのモジュール群

hogeuser/www/test_app
→最初にアクセスされる基本ファイル等(index.php)


hogeuser/www/image/****
→ここにAuth認証でログインしたユーザのみが画像等をアップロード出来る様な
システムを組みたいのですが、cakePHPで実現可能でしょうか?


様にしたいのですが
0128nobodyさん2014/11/21(金) 01:55:20.21ID:???
>>127
アセットのパスは CakePHP に依存せず自由だよ。
ほかの原因で権限が無いとかはあるかもしれないけど、Cake側では制限はない。
0129nobodyさん2014/11/27(木) 14:38:07.68ID:???
スマホ用のビューってどうやって管理してますか?
テーマを作るってやり方を見たのですが、
他に良い方法があれば教えてください。
0130nobodyさん2014/11/27(木) 22:10:45.74ID:???
なぜテーマが使えないのか、
あるいは何がしたいのか書かないとレスしようがないんじゃないかな
0131nobodyさん2014/11/28(金) 06:59:13.03ID:???
CSSで解決できるから、FWから見たらstaticページと扱いが何も変わらない。
Model(ロジック)の方は、特別にスマホ対応をする場合もあるかもしれんが。
01321292014/12/01(月) 13:39:14.91ID:???
>>130
「テーマが使えない」ではなく、他に方法があれば教えてくださいという質問です。

>>131
レスポンシブデザインならCSSだけで良いのですが、
スマホ専用サイトの場合、ビューが変わるし、必要なモデルも変わります。
PC版と同じコントローラーを使って同じだけモデルを呼び出すのは
無駄な要素が大きいと思い、テーマの変更だけで良いのかな?と思いまして。
0133nobodyさん2014/12/01(月) 23:10:19.10ID:???
>>132
俺はテーマ以外考えられんな。
レスポンシブでPC、スマホの両方対応というのも無駄な処理がコントローラーに増え、重くなるし。

テーマ一択で。
0134nobodyさん2014/12/02(火) 00:51:09.72ID:???
呼び出すモデルが変わるならいっそコントローラーやアクションを分けるのもありじゃない?
アクション共通ならビューにサブディレクトリ作るだけでもいい気が
0135nobodyさん2014/12/02(火) 01:45:31.11ID:???
>>133
横レスだけどレスポンシブデザインにしたらサーバーサイドの処理は基本的には変わらないんじゃないの?
俺の勘違いかな。
0136nobodyさん2014/12/02(火) 02:25:29.44ID:???
>>135
おっしゃる通り。確かに変わりませんね。
僕のミスです。失礼しました。

レスポンシブデザインって、ちゃんとしたサイトだとPCとスマホは分けるべきだと思うんだけどな。
0137nobodyさん2014/12/02(火) 06:43:53.62ID:???
Modelが変わるとか後出しだし。
Modelが変わるなら、Viewも応じて変えた方がいいに決まってる。
0138nobodyさん2014/12/04(木) 15:36:33.40ID:R0j+bkTk
ビューのコーディングについて相談です。

Cakeで出力されるHTMLのCSS部分はローワーキャメルケースですが、
HTMLヘルパーを使用しない箇所はどうしていますか?
同じようにローワーキャメルケースで書いてますか?
それとも独自の書き方を採用していますか?
0139nobodyさん2014/12/04(木) 16:07:23.93ID:???
>>138
独自だね
0140nobodyさん2014/12/05(金) 10:17:08.32ID:???
>>139
そうですか。特にこだわらないでも良いですね。ありがとうございます。
0141nobodyさん2014/12/10(水) 12:16:09.19ID:D9PtQRCX
Cake2.5.6でappをapp-adminのように変更しています。
サーバからコマンドでシェルを実行させる場合について質問です。

シェルを実行させるパスを
/usr/local/bin/php /home/hoge/public_html/app-admin/Console/cake.php Hello

みたいにすると、「Shell class Hello Shell could not be found」というエラーになります。
上記パスのapp-adminをappにすればエラーが出ないのですが、
appの名前を変えても実行するにはどうすれば良いのでしょうか?
0142nobodyさん2014/12/10(水) 14:34:35.99ID:???
>>141

コンソールから起動させるのは cake.php じゃなくて cake (bash) のほうな。
0143nobodyさん2014/12/10(水) 14:37:49.96ID:???
あぁ、悪いちゃんと読んでなかったわ。
app の名前を指定するパラメータは確か -app じゃなかったかな。
-app app-admin
みたいなのをくっつければいいかもしれない。

そもそも、そんな呼び出し方する理由が分からんがな。
普通は app-admin のディレクトリに移動して Console/cake を呼び出すんだぜ。
0144nobodyさん2014/12/10(水) 15:23:03.23ID:???
-app app-adminの変更で出来ました。ありがとうございました。
0145名無しさん@そうだ選挙に行こう2014/12/14(日) 19:10:29.85ID:R4VgTAzM
cakePHPでassociationを使うと
毎回結合が走っている様です。


この条件の時には結合を走らせるけれども
この場合には、結合せずにfindする


といった事をコントローラー側で制御する事は可能でしょうか?

毎回、結合してクエリ結果を返していると、テーブルのレコード件数が大きくなってきた場合に
パフォーマンスに影響が出る事が予想れます。
0146nobodyさん2014/12/14(日) 21:01:50.73ID:???
>>145
bindModel()やunbindModel()で動的に変更するか
検索時にjoinsを使えばいい
詳しい使い方は↓に載っている
http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html

このスレの質問のほとんどはこのドキュメントで解決できるので
開発者なら他のページも一通り読んでおくことを薦める
0147nobodyさん2014/12/14(日) 21:34:57.75ID:R4VgTAzM
>>146
thanks

見てみます!
0148nobodyさん2014/12/15(月) 10:55:13.83ID:???
bindModel/unbindModel 使うんだったら ContainableBehavior でも
対して変わらないような気がする。
どっちもとんでもないクエリ吐き出すんだけどね。

joins 使えばそこそこまとも。

CakePHP3 ではかなり改善される模様。
0149nobodyさん2014/12/15(月) 11:30:36.76ID:???
自分は Containable と Matchable 併用してる。
0150nobodyさん2014/12/15(月) 19:02:35.15ID:Hxt+g1uL
アソシエーションを使うより普通にSQL書いて実行
させた方が楽な気がするのだが俺だけ?
0151nobodyさん2014/12/15(月) 20:40:41.52ID:???
短かったら楽だけど、長いと間違いの元だよ
■ このスレッドは過去ログ倉庫に格納されています