Ethnaコマンドでadd-actionするときはファイル名の大文字小文字に注意!
この辺をちゃんと理解していなかったのは私だけではないはずだ。
結論を先に言うと、下記の2つは挙動が異なる。
そして前者を使うべきである。
ethna add-action foo_bar
ethna add-action Foo_Bar
理由
ethnaコマンドでadd-actionをしてみればわかる。
$ ./ethna add-action Foo_Bar
file generated [/home/userdqn/project/skel/skel.action.php -> /home/userdqn/project/app/action/Foo/Bar.php]
action script(s) successfully created [/home/userdqn/project/app/action/Foo/Bar.php]
$ ./ethna add-action bar_buz
file generated [/home/userdqn/project/skel/skel.action.php -> /home/userdqn/project/app/action/Bar/Buz.php]
action script(s) successfully created [/home/userdqn/project/app/action/Bar/Buz.php]
一見、どちらもAaa/Bbb.php形式のファイル名が作られるので同じ挙動のように見えるのだが、実は大きな落とし穴がある。生成されたアクションクラスファイルのperformメソッドを見てみよう。
add-action Foo_Barした場合
function perform()
{
return 'Foo_Bar';
}
add-action bar_buzした場合
function perform()
{
return 'bar_buz';
}
returnの文字列形式が異なっていることがわかる。一方、add-view -t とadd-templateの挙動を確認してみよう。
add-view -t Foo_Bar または add-template Foo_Bar とすると、
Foo/Bar.tpl
というファイルが生成される。add-view -t foo_bar または add-template foo_bar とすると、
foo/bar.tpl
というファイルが生成される。したがって、下記のようなことをすると正しく遷移できない。
//間違ったやり方 その1
ethna add-action Foo_Bar
した後で
ethna add-view -t foo_bar もしくは ethna add-template foo_bar
//間違ったやり方 その2
ethna add-action foo_bar
した後で
ethna add-view -t Foo_Bar もしくは ethna add-template Foo_Bar
結局、正しく遷移させようとするとfoo_barかFoo_Barかどちらかに統一しないといけない。
//正しいやり方 その1
ethna add-action Foo_Bar
ethna add-view -t Foo_Bar もしくは ethna add-template Foo_Bar
//正しいやり方 その2
ethna add-action foo_bar
ethna add-view -t foo_bar もしくは ethna add-template foo_bar
公式サイトを見る限りでは、"add-action foo_bar"が標準のようである。
まとめ
まとめると、下記のようなファイル名になるのがEthnaの公式仕様と思われるapp/action/Foo/Bar.php
app/view/Foo/Bar.php
template/ja_JP/foo/bar.tpl
あーすっきりした。
カテゴリ:
Ethna