« subversionのチェックアウトとエクスポート | トップ | 栄太郎に絵本ラックを作成 »

2006年09月28日

Ethnaの0.2.0と2.1.2におけるaction_cliの違い  このエントリをはてなブックマークに登録 

0.2.0ベースで作成したプロジェクトで、2.1.2で動くように修正をかけている場合において、action_cli周りの仕様が少々異なるので注意が必要。


まず、0.2.0で作ったプロジェクトのコントローラーには、action_cliのディレクトリの指定がないので、追記が必要。

appid/app/Hogeprojyect_Controller.php

のディレクトリをいろいろ指定しているところで、

'action_cli' => 'app/action_cli',


そんでもって、action_cli用のエントリポイントを作成

appid/bin/hoge.php

この部分は、以前と変らないけれど、通常のエントリポイントがmainなのをCLIの場合はmain_CLIにする。
第二引数に実行するアクションを指定する。

<?php
chdir(dirname(__FILE__));
include_once('../app/Hogeproject_Controller.php');

ini_set('max_execution_time', 0);
ini_set('mbstring.language', 'Japanese');
ini_set('mbstring.encoding_translation', 1);
ini_set('mbstring.http_input', 'auto');
ini_set('mbstring.http_output', 'EUC-JP');
ini_set('mbstring.internal_encoding', 'EUC-JP');
ini_set('mbstring.detect_order', 'auto');
ini_set('mbstring.substitute_character', 'none');

Hogeproject_Controller::main_CLI('Hogeproject_Controller', 'hoge');
?>

みたいな感じ。


あとは、アクションをaction_cliに保存。←これが変更された部分
呼び出すアクションがHogeなら、

appid/app/action_cli/hoge.php

にアクションを作成

※この部分は、CVSのログを読んだら書いてあった

- ethnaコマンドにadd-action-cliを追加
- [breaking B.C.] main_CLIのアクション定義ディレクトリをaction_cliに変更
-- すいません、後方互換性なくしてます
-- main_CLIで実行するアクションはaction_cliディレクトリ以下に移してくださいです
-- controllerのdirectoryプロパティに'bin'要素を追加


あとは、クラス名の命名でちょっとはまって、Ethnaのソースを読んだ。
結果以下のような形にする必要があることが判明。

Hogeproject_Cli_Form_Hoge

Hogeproject_Cli_Action_Hoge

CLIでActionFormを使う場面が想像できないけれど、とりあえずEthnaのソースに書いてあった。


これで、2.1.2でも問題なく動くようになった。
※skelディレクトリにファイルが存在していると実行時にエラーが出た。←とりあえず削除

投稿者 田中@グリニッジ : 2006年09月28日 15:45

トラックバック

このエントリーのトラックバックURL:
http://blog.tanaka-cs.com/mt/mt-tb.cgi/102

コメント

コメントしてください




保存しますか?


楽天トラベル 夏の旅行