Skip to content

Latest commit

 

History

History
124 lines (82 loc) · 6.31 KB

faq.md

File metadata and controls

124 lines (82 loc) · 6.31 KB

開発FAQ

  • Q. Ethna は何故 Ethna_ViewClass っていう層を設けているの? Cakeとかのフレームワークにはこんなのないよ!
  • Q.テンプレートエンジンはSmartyしか使えないの?
  • Q.?action_login=trueでアクションを選ぶのが嫌
  • Q.デバッグはどうするの?
  • Q.複数のフォーム値をまたぐチェックはどうやってやるの?
  • Q.locationさせるメソッドはないの?
  • Q. DocumentRoot配下にEthnaとEthnaアプリケーションを置きたいけど・・・
  • Q. ビュークラスは省略できるの?
  • Q. アクションクラスは省略できるの?
  • Q. アクションフォームクラスは省略できるの?
  • Comment

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などの詳細なログが溜まります。 ログレベルは

  • debug
  • info
  • notice
  • warning
  • err
  • crit
  • alert
  • emerg

があります。

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

ログ

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

  • Locationとか、Viewからのアクションの指定はEthna_Utilやsmarty_functionでできるといいですね。 -- halt ? 2005-12-20 (火) 14:43:23
  • http://comimi.net/ethna/Aero_Util.phps こんな感じでどーでしょ。本体につっこむなら、もっとイケテルな方法ありそうですが。 -- 個々一番 ? 2005-12-20 (火) 21:26:17
  • さくら(SAKURA)のレンタルサーバも DocumentRoot 配下でないとファイルを置けません。シンボリックリンクは使用できず 500 エラーになります。これに気づかず時間を無駄にしました。 -- p2 ? 2007-04-12 (木) 00:05:54
  • db.md のページがクラックされたのか書き換わってます。本ページ管理者さんへメールなどしようと思いましたが連絡先が見当たらない為、このComment欄にて失礼します。後でこのコメントを削除していただければと思います。 -- ume ? 2007-11-14 (水) 15:25:58

*1ふじもとさん自身も [Ethna-users:00012] で似たような事をおっしゃってますね。*2
*2というか、そっちが先:-)