CakePHP1.3.xで複数のPrefix Routingを設定してる時のBakeの動き
CakePHP 1.3.0からPrefix Routingの設定方法が若干変わりました。
CakePHP 1.2系は使ったことが無いので良く知りませんが、1行で複数のPrefixを設定できるようになったようです。
さて、Bake で View や Controller を焼こうとすると「Would you like to create the views for admin routing?」などと聞いてきます。
admin routing とあるけど、複数あったらどっちが admin 用なのか分からないんじゃないかと思って、実験してみました。
結論
View / Conroller を焼く時は両方とも、複数ある Prefix Routing のどちらを使うかを聞いてきます。
なぜか全部という選択肢は無く、全ての Prefix Routing 毎のViewテンプレートや、prefix_add() や prefix_index()といったCRUDなメソッドを、1度に作成する事は出来ませんでした。
コードなど
Configure::write('Routing.prefixes', array('api', 'admin'));
試しに app/config/core.php にこの様に Prefix Routing を設定。
$ ./cake bake -app ../cakephp_baked view Welcome to CakePHP v1.3.0 Console --------------------------------------------------------------- App : cakephp_baked Path: /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked --------------------------------------------------------------- --------------------------------------------------------------- Bake View Path: /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/ --------------------------------------------------------------- Use Database Config: (default/csv) [default] > Possible Controllers based on your current database: 1. Foos 2. Bars Enter a number from the list above, type in the name of another controller, or 'q' to exit [q] > 1 Would you like bake to build your views interactively? Warning: Choosing no will overwrite Applicants views if it exist. (y/n) [n] > y Would you like to create some CRUD views (index, add, view, edit) for this controller? NOTE: Before doing so, you'll need to create your controller and model classes (including associated models). (y/n) [y] > Would you like to create the views for admin routing? (y/n) [n] > y --------------------------------------------------------------- You have more than one set of templates installed. Please choose the template set you wish to use: --------------------------------------------------------------- 1. xhtml 2. default Which bake theme would you like to use? (1/2) [1] > 1 Creating file /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/index.ctp Wrote `/Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/index.ctp` Creating file /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/view.ctp Wrote `/Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/view.ctp` Creating file /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/add.ctp Wrote `/Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/add.ctp` Creating file /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/edit.ctp Wrote `/Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/edit.ctp` You have more than one routing prefix configured 1. api 2. admin Please choose a prefix to bake with. (1/2) [1] > 3 Please choose a prefix to bake with. (1/2) [1] > all Please choose a prefix to bake with. (1/2) [1] > 0 Creating file /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/api_index.ctp Wrote `/Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/api_index.ctp` Creating file /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/api_view.ctp Wrote `/Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/api_view.ctp` Creating file /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/api_add.ctp Wrote `/Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/api_add.ctp` Creating file /Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/api_edit.ctp Wrote `/Users/myuser/Dev/cakephp1.3.0/../cakephp_baked/views/applicants/api_edit.ctp` --------------------------------------------------------------- View Scaffolding Complete.
Viewを焼いてみたところ、最後にどのprefix設定を使うかを聞いてきました。
Controller を焼く際も、同じように聞いてきます。
ちなみに、CsvDatasource やテンプレートを追加してるので、ちょっとBakeの出力が多いです。
Prefix Routing部分の抜粋
You have more than one routing prefix configured 1. api 2. admin Please choose a prefix to bake with. (1/2) [1] > 3 Please choose a prefix to bake with. (1/2) [1] > all Please choose a prefix to bake with. (1/2) [1] > 0
この様にいくつか試してみたけど、全部といった選択は出来なさそう。
「0」を指定すると「1」扱いになりました。
View を焼く場合は、prefix毎に別の .ctp ファイルが生成されるから2回3回やればいい。
でも、Controller を焼く場合って、1つのControllerファイルに書き込むから、2回目に別のprefixを選んだら、1回目に選んだprefixのメソッドが消えちゃうんじゃ?試してないけど。