目次

開発FAQ

Q. Ethna は何故 Ethna_ViewClass っていう層を設けているの? Cakeとかのフレームワークにはこんなのないよ!

Ethna は View(テンプレート)に書かれるコンテキストに依存した(if分岐等の)処理や、定型的(JSON, リダイレクト、定型ヘッダ等) な出力処理を View に書くのが流儀です。

Q.テンプレートエンジンはSmartyしか使えないの?

現状は、デフォルトの状態ではSmartyしか使えません。 Ethna_Rendererを継承したクラスを作成すればSmarty以外でも可能です。

PHPを使った例 http://eringi.com/weblog/archives/2007/02/ethna_renderer.html

Ethna_Rendererの使い方

Q.?action_login=trueでアクションを選ぶのが嫌

アクションを呼び出す方法は自由にカスタマイズできます。

アクション名の決定方法を変更する

Q.デバッグはどうするの?

ethnaが作ったプロジェクトの中のetcディレクトリに設定項目ファイルがあります。(ProjectName-ini.phpみたいな)

デフォルトであれば、$configという配列を指定することになってるので、

$config = array(
    // *****
    'debug' => true,
    'log_facility' => 'file',
    'log_level' => 'debug',
    // *****
);

としてやれば、logディレクトリに発行したSQLや実行したActionなどの詳細なログが溜まります。 ログレベルは

があります。

ログ関連の情報については下記が参考になります。

ログ

Q.複数のフォーム値をまたぐチェックはどうやってやるの?

例:ラジオボタンAをチェックすると、テキストボックスBの入力が必須になる場合など

74 :72:2005/12/17(土) 02:51:25 ID:???

たとえば、「Aのフォームでhogeを選択した場合にBが必須になる」くらいだったら
   簡単だよね。
   validateメソッドでチェックする前に、ActionFormの定義値を変えてやればいい。
   HOGE_ActionClass::prepareの中で
   if ($this->af->get('a') == 'hoge') {
       $this->af->form['b']['required'] = true;
   } 
   if ($this->validate() > 0) {
       return 'post';
   } 
   とかかな。これがEthnaの流儀かどうかはしらんが、ActionFormを使うならこうするかな。

validate前に動的にフォーム定義の内容を変更する技がある。*1

Q.locationさせるメソッドはないの?

今のところ、locationをさせるメソッドはありません。

Symfony HttpFoundation のRedirectResponseを使えるようにする予定です。

Q. DocumentRoot配下にEthnaとEthnaアプリケーションを置きたいけど・・・

一部の(lolipopとか)サーバではDocumentRoot配下にしかファイルを置けません。その場合、project-IDが分かってしまうと、logやテンプレートソースが見えてしまいます。 .htaccessが使える場合は、

deny from all

と書いてEthnaとEthnaアプリケーションの一番上においておくと良いと思います。

Q. ビュークラスは省略できるの?

できます。 ビュークラスの処理内容が空の場合は、ファイルそのものを作らないことができます。

ビュークラスファイルを作らなかった場合は、{App}_ViewClassが代わりに呼ばれます。

Q. アクションクラスは省略できるの?

FooアクションクラスなしでFooビュー(orテンプレート)を作ることはできます。 その場合は、他のアクションからFooビューを呼び出せばOKです。

Q. アクションフォームクラスは省略できるの?

できます。

フォーム値を何も受け取らない画面では、フォームクラス作成しなくてもOKです。(その場合は{App}_ActionFormが代わりに呼ばれます)

Comment