トップページ⇒php
981コメント296KB

【PHP】フレームワーク CakePHP 17ホール目【v2.4】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2014/03/01(土) 17:03:24.57ID:8AJ9GD6E
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/
0554nobodyさん2014/05/18(日) 12:23:32.63ID:???
phpunitのテスト駆動開発について。
テストを先に書くということですが、
メソッドを先に書く場合もありますか?
0555nobodyさん2014/05/18(日) 12:34:06.68ID:???
また、掲示板サイトを作る場合、
記事を書く
記事を見る
記事を削除

の3つのケースを先に書いてテストし実装する
もしくは一つの機能ごとにテストを書く実装する、のどちらが良いのでしょうか。
0556nobodyさん2014/05/18(日) 18:19:05.82ID:???
>>554
テストを先に書くことがテスト駆動開発の必須条件の一つだと思うんだけど、
別に原理原則にこたわることもないと思われ。
ただ、教科書的にはまずテストを書いて赤色から発進するのが通則。

>>555
テスト駆動開発は、一般的にはアジャイル開発の一部とされている
(たぶん、そうじゃない場合もあるはずなんだけどあまり記憶に無い)ので
単純なテストからだんだん複雑にして行くことを前提に、
最初は簡単な「記事を書く」テストを書いて実装して
簡単な「記事を見る」テストを書いて実装して、
簡単な「記事を削除」テストを書いて実装して・・・ってことなんじゃないかな?

だけどそれも程度によるだろうから、最初はざっくりアウトライン的に
全体を作って、作りこむに従って単体テストを増やしていったりテスト自体を
詳細にコーディングするってことでいいんじゃないかな?
0557nobodyさん2014/05/18(日) 18:27:15.17ID:???
>>556
ありがとうございます!
勉強になります。
0558nobodyさん2014/05/18(日) 23:31:40.02ID:???
まぁ自分で書いておいてこんなこと言うのもあれだけど、
TDDに限らず、ここで聞くより専門の書籍を一冊買って
それを読んで体系から身につけたほうがいい。
0559nobodyさん2014/05/19(月) 16:50:44.06ID:???
画像のバリデーションで、画像をアップロードしていない場合は
バリデーション自体を中止したいのですが、良い方法はないでしょうか?
以下のようなルールをモデルに書いています。

'image' => array(
 array(
  'rule' => array('extension', array('jpg', 'jpeg', 'gif', 'png')),
  'message' => '拡張子が違います',
  'allowEmpty' => true,
 )
)
0560nobodyさん2014/05/20(火) 15:39:04.32ID:RIYxfxGy
hasManyとfindについて質問です。

営業 1−多 顧客
というリレーションがあったとします。
営業 hasMany 顧客 と営業モデルに書いています。

そこで営業コントローラから 「顧客を一件ももっていない営業」をfindする方法がどうしても
思い浮かびません。 

どうかヒントをいただけませんでしょうか。
0561nobodyさん2014/05/20(火) 15:56:13.36ID:???
営業 hasOne 顧客 というアソシエーションを一時的に張って、
検索条件を
'顧客.id' => null
とすれば行ける気がするのだがどうだろう。

あと、カウンターキャッシュという裏ワザもあるが、
アプリケーション依存になるんで一長一短。
0562nobodyさん2014/05/20(火) 16:02:52.95ID:???
>>561
なるほど!試してみます。ありがとうございます。
0563nobodyさん2014/05/21(水) 16:47:46.18ID:???
クックパッドってCake使ってるのかな?
なんかURLのルールが似てる気がする
0564nobodyさん2014/05/21(水) 18:35:00.58ID:???
>>563
Railsじゃなかった?今は知らんけど
0565nobodyさん2014/05/21(水) 19:54:17.38ID:???
ああ、Railsだから似てると感じるのか
0566nobodyさん2014/05/25(日) 12:26:20.21ID:???
cakeとciのActiveRecordって
PofEAAのActiveRecordと違うと思うんだけど。何を元にしてるの?
0567nobodyさん2014/05/25(日) 13:21:00.24ID:???
CakePHPにActiveRecordは実装されていない
0568nobodyさん2014/05/25(日) 14:22:54.54ID:???
AppControllerを継承したクラスを継承したコントローラで
AppControllerに書かれた$uses、$componentsが使えない(マージされない)問題は
Cake2では直ってるんだっけ?
今確認できないのでどなたか教えてください
0569nobodyさん2014/05/25(日) 16:32:17.75ID:???
>>568
Dispatcher でリフレクション呼び出してあれこれゴニョゴニョしてるんで、
多分大丈夫。
正式なアナウンスは知らん。
0570nobodyさん2014/05/26(月) 20:03:50.85ID:???
>>568
その問題、今初めて知ったわ。
0571nobodyさん2014/05/26(月) 21:17:51.86ID:???
久しぶりに自分が作った1.3のソース触ったけど、糞すぎて情けなくなる・・・
0572nobodyさん2014/05/26(月) 21:34:55.75ID:???
オレの1.2のコードをやるから、その汚い糞を拭き取れ。
0573nobodyさん2014/05/28(水) 12:20:55.53ID:???
カテゴリの状態を維持したまま別のコントローラーを実行するための
ルーティングってどう書けばいいですかね?

/hoge/ →Categoryモデルのname「hoge」
/hoge/news/ →Newsモデルのcategory_nameが「hoge」
/hoge/news/detail/1 →Newsモデルのidが1でcategory_nameが「hoge」

こういう場合、hogeの箇所(カテゴリ名)が不特定文字列なので
どういう書き方をすればいいか悩んでいます。cake2系です。
0574nobodyさん2014/05/28(水) 12:29:00.97ID:???
Router::routes(array('/:category/'), array('controller' => 'categories'));

Router::routes(array('/:category/:controller/'));

Router::routes(array('/:category/:controller/detail/:id'));

でどう?
0575nobodyさん2014/05/28(水) 12:33:07.08ID:???
あと、第三パラメータで正規表現でのフィルタリングができるんで、
3つ目のURLパターンにおいてIDは数値と決まっているなら

Router::routes(array('/:category/:controller/:id'), array(), array('id' => '[0-9]+'));

とすることで

/hoge/news/1

をマッチさせることが出来ると思う。
05765732014/05/28(水) 13:36:48.07ID:???
>>574-575
ありがとうございます。この方法ですが、
他のコントローラーと共存させたい場合はどうなるのでしょうか?

/contacts/ お問い合せ用のコントローラー
/faqs/ FAQ用のコントローラー

などがサイトに存在する場合、おかしくなるような気が・・。
そういう場合は、固定のコントローラーを
ルーティングに書いていけばいいんですかね?
Router::routes(array('/contacts/:action'), array('controller' => 'contacts'));
0577nobodyさん2014/05/28(水) 13:55:25.16ID:???
問題ない。
ルーティングは単純な正規表現を先頭からマッチさせていくだけ。
で、最後の最後に通常のマッチングがコアの方に用意されている。
0578nobodyさん2014/05/28(水) 13:56:01.83ID:???
あ、問題あるわ。すまんw
0579nobodyさん2014/05/28(水) 13:56:49.69ID:???
>そういう場合は、固定のコントローラーを
>ルーティングに書いていけばいいんですかね?
>Router::routes(array('/contacts/:action'), array('controller' => 'contacts'));

そうですね。
05805732014/05/28(水) 15:29:39.46ID:???
>>579
ということは、固定のコントローラーは全てルーティングに書く必要があるんですね。
そうなるとあまり利便性が良くないですね。
0581nobodyさん2014/05/28(水) 17:12:42.77ID:???
TreeBehaviorのleftとrightってなんなん…これ見ると存在しないid指定してるみたいでわけが分かんないよ…
http://book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html
0582nobodyさん2014/05/28(水) 20:12:28.98ID:???
>>580
カテゴリ名を自由にするってことは、特定の文字を禁止にするんだろうから、
それを表現できるパターンを第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() の間違いだった。すまん。
0583nobodyさん2014/05/28(水) 20:13:54.99ID:???
>>581
lft, rght はIDじゃないよ。

TreeBehavior のアルゴリズムを理解するのにとっておきの記事
http://blog.xao.jp/blog/cakephp/understanding-of-nested-sets-model-for-treebehavior-of-cakeph/
05845732014/05/28(水) 20:20:05.04ID:???
>>582
ありがとうございます。色々工夫してやってみます。
0585nobodyさん2014/05/28(水) 22:03:01.32ID:???
>>583
ありがとうマジで助かった!
0586nobodyさん2014/05/29(木) 01:00:35.02ID:???
RailsとCakeでMVCを覚えたせいで見事に騙され、モデルはテーブルに紐付くもんと思ってたわ
テーブル関係ないビジネスロジックをどこに書くか迷って、コンポーネントに書いてたけど
モデルに書いた方がいいんだろうか?
0587nobodyさん2014/05/29(木) 01:27:10.16ID:???
>>586
ビジネスロジックをモデルに書くのは常識だ。
コンポーネントに書いたほうが良いなんて聞いたこと無い。
Rails も Cake もその点においては何も騙してねーと思うよ?
0588nobodyさん2014/05/29(木) 08:11:31.86ID:???
テーブルをまたがる共通処理や、似て非なるテーブルに同じ処理をしたい場合に、ロジックを置く場所がないて話だと思うけど。
そういう場合にRailsの1モデル-1テーブル形式は破綻してるのは確か。
0589nobodyさん2014/05/29(木) 08:25:24.09ID:???
「具体的に言うと、モデルはデータベースのテーブルを表しますが」
http://book.cakephp.org/2.0/ja/models.html
とあるせいで、モデル=テーブルに紐付く(原則として)と思ってたよ
市販の解説書も同じような感じで書いてる
0590nobodyさん2014/05/29(木) 08:44:24.60ID:???
>>587
モデルの中で他のモデルをClassRegistry::initとかやりたくないんだよ
コントローラに書きたくなければコンポーネントになる
0591nobodyさん2014/05/29(木) 10:03:02.00ID:veg5U4SW
じゃあLibに作れよ

Modelじゃだめって理由でComponentに置く発想がおかしい
0592nobodyさん2014/05/29(木) 10:04:39.91ID:???
は?LibよりComponentの方が使いやすいじゃん
Controllerの冒頭で配列に入れるだけで$thisで使えるんだから
0593nobodyさん2014/05/29(木) 10:18:58.89ID:???
RailsにしてもCakeにしてもActive RecordないしTable Data Gatewayパターンを利用するクラスをModelと命名して
データベーステーブルと(さらにはコントローラとも)1対1対応しなきゃいけないように見えるから勘違いしやすいんだよな

Railsは1つのモデルに関するロジックは"モデル"クラスに書けるけど
Table Data GatewayのCakeはこれすらコントローラやヘルパーに溢れ出やすい印象

複数"モデル"が絡むときに簡易サービス層として利用されやすいのがコンポーネントなのかな
コントローラから呼びやすいしファットコントローラの一番楽な回避策だろうし


初心者でも(本来の広い意味での)モデルの中にサービス層を作りやすい実装や解説にしておいてくれるとありがたいんだけど
0594nobodyさん2014/05/29(木) 10:27:52.09ID:veg5U4SW
>>592
なんだその理由ww
0595nobodyさん2014/05/29(木) 11:21:59.06ID:???
>>594
何がおかしいんだ?
0596nobodyさん2014/05/29(木) 11:35:25.87ID:Kdl2SKiZ
>>588

>似て非なるテーブルに同じ処理をしたい場合
これはビヘイビアがいい気がする。
0597nobodyさん2014/05/29(木) 13:26:17.97ID:???
前もこの話題出たよな
結論は出なかった
0598nobodyさん2014/05/29(木) 13:48:42.54ID:???
作るものの規模とかで最適な構成は変わるしね。
>>593 のいうサービス層が必要になる規模は、CakePHPではちょっと対象外なんじゃないかと思ってる。
CakePHPの中の人がどう思って作ってるかはしらんけど。
0599nobodyさん2014/05/29(木) 15:11:21.10ID:???
複数モデルにまたがる処理をコンポーネントに書いている人は
$useTable = false の別のモデルを作った方がずっと楽だと思うんだが。

コントローラから直接参照できる点は一緒。
データのセット、バリデーション、フォーム値の復元。
使うモデルを $hasOne とか入れとけば ClassRegisry::init も呼ぶ必要ない。
0600nobodyさん2014/05/29(木) 15:24:59.72ID:???
俺はコンポーネントでやる方が楽だけどな
0601nobodyさん2014/05/29(木) 15:34:31.80ID:???
おれも >>599 と同じだな。
Modelの下にサブディレクトリ切ってAppでパス通すのもありだと思う。

Lib は他で作ったライブラリを置く場所にしてる。

コンポーネントはコントローラの処理を助けることが限定されている場合しか書く意味ない。
もちろん、そういうロジックだけならコンポーネントはすれば良い。
0602nobodyさん2014/05/29(木) 16:13:20.58ID:???
複数ページにまつわる処理といえば、削除はどうしてる?
会員制サイトだと、以下のような構成がよくあるが、

会員
└日記
└お気に入り
└掲示板の作成や投稿

会員を削除すると、その下の投稿内容も削除しないとおかしい(と俺は思う)
だから俺は、管理画面で会員を削除したら、user_idがあるモデルは全て削除している。
削除はコントローラーに書いてる。
0603nobodyさん2014/05/29(木) 16:24:33.64ID:???
>>602
会員モデルの削除を呼んだら消えるようにする
0604nobodyさん2014/05/29(木) 16:37:36.60ID:???
>>603
hasManyでdependentをtrueだな。

俺も基本はそうしてるんだけど、>>602のに「画像」がある場合は困る。
各テーブルを参照して画像情報を取得し、削除していく必要がある。
0605nobodyさん2014/05/29(木) 16:50:52.43ID:???
beforeDelete,afterDeleteでいいんじゃない
0606nobodyさん2014/05/29(木) 18:18:39.64ID:???
そうすると、Userモデル内で他のモデルも呼ぶことになるぞ?
0607nobodyさん2014/05/29(木) 18:23:19.16ID:???
>>606
画像に関して言ったんだけど

dependentで消せないものに関して、Userモデル内から他のモデル呼んでも問題ないと思うけどな
0608nobodyさん2014/05/29(木) 20:03:02.45ID:???
deleteAll のコールバックって無いんだよね?

あれば Image モデルの afterDelete に
アセットを削除する処理を書いておけば良いのだろうけど。

saveMany や saveAll はコールバック効くのに
deleteAll は効かないってのもおかしな設計ではあるな。
0609nobodyさん2014/05/29(木) 23:57:26.91ID:???
deleteAll はコールバックあるよ。
ないのは updateAll
0610nobodyさん2014/05/30(金) 01:36:47.29ID:???
>>609
あ、そうなのか!
deleteAll の第3パラメータを true にするんだな。
今初めて気づいたわ。

じゃぁ、アセットの削除をそこに書けば良いわけか。
0611nobodyさん2014/05/30(金) 10:22:00.45ID:???
つまり、どういう設計になるの?
0612nobodyさん2014/05/31(土) 17:06:44.83ID:???
gitでcakephp管理する時、丸ごと全ファイルを管理するの?
それともビヘイビアとかプラグインとかだけ?
教えてください。お願いします!
0613nobodyさん2014/05/31(土) 18:14:11.40ID:???
全部
0614nobodyさん2014/05/31(土) 18:28:27.72ID:???
cakephpってまだcomposerに対応しきれてない?

cakephp2でcakephp/appみたいなの探してるんだけどないかな?
0615nobodyさん2014/05/31(土) 18:39:11.86ID:???
>>614
composer 使ってるけど、対応しきれてないと思ったのはどの辺り?
0616nobodyさん2014/05/31(土) 18:49:51.57ID:???
>>615
bakeでプロジェクト作らないといけないのに
ハードコーディングを直さなきゃいけないところとかかな
0617nobodyさん2014/05/31(土) 19:51:01.39ID:???
それは composer というか bake project の仕様だなー。
include_path 通しておけばハードコーディングされなくなるけど。
0618nobodyさん2014/05/31(土) 20:57:15.14ID:???
>>613
ありがとうございます!
0619nobodyさん2014/05/31(土) 23:23:49.38ID:???
今日俺がセルフHABTM方式というのを発明したんだが
何のことだかわかる?正式な名前とかある?
0620nobodyさん2014/06/01(日) 12:20:08.01ID:???
そういうプラグインがあった気がする
0621nobodyさん2014/06/02(月) 00:43:40.92ID:???
>>619

class Entity extends Model {

 public $hasAndBelongsToMany = array(
  'RelatedEntity' => array(
   'className' => 'Entity',
   'foreignKey' => 'relational_id',
  ),
 );

}

こういうこと?
0622nobodyさん2014/06/05(木) 11:57:49.53ID:+YUe8hGX
メール送信するコマンド作って実行したら
「コマンド ラインが長すぎます」
というエラーが出るのですが、何かわかる方いらっしゃいますか?

環境は以下の通りです。
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('[email protected]' => 'ほげほげ'));
$Email->to('[email protected]');
$Email->subject('お願い');
$Email->send();
}
}
0623nobodyさん2014/06/05(木) 14:05:40.48ID:???
>>622
Windowsで開発するのやめれたらいいと思うよ。

よく知らんけど、Cakeのエラーメッセージは英語。
てことは、おそらくコマンドプロンプトか、代わりに使ってるターミナル系アプリの出してるエラー。
エラーメッセージから、cakeコマンドへのファイルパスや引数も含め、
実行しようとしたコマンドの文字数が多すぎた。
てことが予想出来る。
0624nobodyさん2014/06/05(木) 16:25:42.75ID:+YUe8hGX
>>623
ありがとうございます。
おっしゃるとおりかもしれません。
0625nobodyさん2014/06/05(木) 19:12:08.87ID:???
自分はローカル用のアプリをCakePHPで作ってコマンドライン多用してるけど
「コマンド ラインが長すぎます」
なんてエラーは出たこと無いな。

原文はなんて書いてんの?
0626nobodyさん2014/06/05(木) 19:12:52.47ID:???
あ、もちろん Windows のクライアントね。
0627nobodyさん2014/06/05(木) 20:29:33.26ID:???
みんなwindowsじゃないん?
0628nobodyさん2014/06/05(木) 22:14:09.51ID:???
本番機はレンタルサーバでlinux系だけど社内にあるマシンは全部windowsなんで
普段はwindowsで開発、最終的なテストだけ本番機で行っているわ
PHPはわりと環境依存大きいけどcake使ってると依存度がかなり軽減されると思う
0629nobodyさん2014/06/05(木) 22:23:36.19ID:???
俺はVM立てるな
その方がお手軽だし
0630nobodyさん2014/06/05(木) 22:26:03.50ID:???
windowsで開発してるけど
phpとかmysqlはwindows上で動かすのは無駄だからやってない
vagrantで簡単に作れるしさ
0631nobodyさん2014/06/05(木) 22:29:27.33ID:d26v3tZW
>>628
開発用のサクラ鯖に直結して開発してるぞ。
リモートプロジェクト
06326222014/06/05(木) 23:27:51.32ID:+YUe8hGX
解決しました。
おさわがせしました。
PHPのメール設定がおかしかったみたいです。
0633nobodyさん2014/06/06(金) 00:56:33.55ID:???
そうやってなんでもWindowsのせいにすればいいニダ…
0634nobodyさん2014/06/06(金) 01:07:28.95ID:???
XAMPP使ってるのは俺だけのようだな
0635nobodyさん2014/06/06(金) 01:37:12.74ID:???
だって、Windowsで開発してなければ起こらないトラブルや、
しなくていい苦労って多いもの。
0636nobodyさん2014/06/06(金) 02:32:32.38ID:???
windowsだと実行が困難なのってcronぐらいじゃね?
画面系で動作が変わるとしたらソース自体に問題がありそう
0637nobodyさん2014/06/06(金) 03:44:03.22ID:???
システムコールとかメール送信とかOSの絶対パスみなきゃいけない時とか
0638nobodyさん2014/06/06(金) 06:32:05.95ID:???
開発マシンで実行しないとbakeした時面倒なんだよ
0639nobodyさん2014/06/06(金) 11:48:12.37ID:???
>>637 はわかるけど、>>638 は何で?

Windows と Mac 混在して bake してて問題ないんだが、
気づいてないだけかな
0640nobodyさん2014/06/06(金) 12:18:51.00ID:???
知らないだけだろ
0641nobodyさん2014/06/06(金) 13:35:54.13ID:???
>>640
今試しに同じデータベースを元にして Mac と Windows で bake したのを
git で比較したけど差分なかったぞ?
0642nobodyさん2014/06/06(金) 13:45:08.57ID:???
>>641
バージョンは?

CAKE_CORE_INCLUDE_PATHって何定義してる?
0643nobodyさん2014/06/06(金) 15:39:44.51ID:???
>>642
2.5.1
CAKE_CORE_INCLUDE_PATH はコアの Cake ディレクトリを格納している
ディレクトリのパス。
0644nobodyさん2014/06/06(金) 15:59:39.81ID:???
>>643
CAKE_CORE_INCLUDE_PATHに差があるんじゃない?
0645nobodyさん2014/06/06(金) 17:22:45.98ID:???
>>644
そりゃ絶対パスだから違うわけだけど、
bake して生成された結果には影響ないよ?

ちなみに今の論点はあくまでも
>bakeした時面倒なんだよ
に対する疑問ね。
0646nobodyさん2014/06/07(土) 13:17:32.00ID:???
composerについて
これは、phpファイルのみしか管理できないのですか?
例えばjqueryとか、画像も管理できるのでしょうか?

教えてください。
よろしくお願いします。
0647nobodyさん2014/06/07(土) 14:18:28.71ID:???
>>646
composerは基本、外部のライブラリを管理したり
プロジェクトの作成に利用したりするもの

jqueryは
component/jquery
を使えば管理できる

画像は外部のものなのかい?
0648nobodyさん2014/06/07(土) 14:22:04.06ID:???
>>647
ありがとうございます。
画像やjqueryはプラグインに入れようと思って、それをbitbucketで管理します。

全てのサイトでそのプラグインをcomposerで管理できるのかなとおもいまして。
0649nobodyさん2014/06/07(土) 14:26:11.05ID:???
>>648
bitbucketで
各々サイトと、jqueryのプラグインを別に管理したとして

>全てのサイトでそのプラグインをcomposerで管理できる
ってのは可能だよ
0650nobodyさん2014/06/07(土) 16:46:31.63ID:???
>>649
ありがとうございます!
早速やってみます。
0651nobodyさん2014/06/10(火) 09:20:20.15ID:???
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1119&;forum=8
これと同じ問題でハマってます
どうすればいい?
users/123 等の時は users/index/123にしたくて
users/read
users/edit
などアクション名を指定した時は、そのアクション実行したいのですが
0652nobodyさん2014/06/10(火) 10:48:00.76ID:???
>>651
正規表現で絞れば良いだけじゃないの?

Cakeは最近使ってないからわからんが
0653nobodyさん2014/06/10(火) 11:13:53.54ID:???
おお、性器表現も使えるのか
どこかにサンプルはないでしょうか?
0654nobodyさん2014/06/10(火) 13:57:21.11ID:???
>>653
http://api.cakephp.org/2.5/class-Router.html#_connect
http://book.cakephp.org/2.0/en/development/routing.html#route-elements
■ このスレッドは過去ログ倉庫に格納されています