2006年 11月 の投稿一覧

Ethna_ActionClassのメンバ変数

メンバ変数で与えられているインスタンス。やっと覚えてきました。
Ethna_ActionClassを継承したクラスではこれらのインスタンスにアクセスすることで簡単に利用することができる。
例えばDBにアクセスするためにはEthna_BackendオブジェクトのgetDB()メソッドを呼べばEthna_DBオブジェクトが取得できる


<?php
class ... extends Ethna_ActionClass
{
function perform()
{
$db = $this->backend->getDB();
}
}

以下、メンバ変数となっているインスタンスの一覧。もっとも、API見れば一発ですが。自分の頭の中に入れるためにも書いてみる。

  • $ae (Ethna_ActionErrorオブジェクト)
  • $af (Ethna_ActionFormオブジェクト)
    • フォーム操作
  • $backend (Ethna_Backendオブジェクト)
    • 今のところDBオブジェクトを取るのに使っているくらい。他にもいろいろあるのだろうけど。
  • $config (Ethna_Configオブジェクト)
    • etc/(プロジェクト名)-ini.php の $config = array(...) で設定されている内容へのアクセサ。
  • $session (Ethna_Sessionオブジェクト)
    • セッション管理
      • 開始: $this->session->start()
        • 引数与えるとそのセッションの有効秒数指定, 0だとクッキー。
      • 設定: $this->session->set(キー, 値)
      • 取得: $this->session->get(キー)
      • 終了(破棄) $this->session->destroy()
  • $i18n (Ethna_I18Nオブジェクト)
    • まだ使ったことがなかったり、そもそもi18nってなんだ?

吉野家

隣の人が「ご飯」+「おしんこ」+「卵」+「みそ汁」という注文をした。

しくしくと

進める。いや、遅れ気味なんだけど。

Ethna_ActionForm::getHiddenVars

確認の画面とか、元に戻って再編集といった様な具合の処理をさせる際にhiddenとして変数を控える際に使える。
画面で入力を一通りユーザに行ってもらって次の画面に行って確認させた際に元に戻って再編集。とされた様な場合とか。
Ethna_ActionClassを継承しているアクションクラスで以下の処理を書く。


<?php
class Sample_Action_Index extends Ethna_ActionClass
{
// 中略

function perform() {
$hidden_vars = $this->af->getHiddenVars(null, array('form_foo1', 'form_foo2'));
$this->af->setAppNE('hidden_vars', $hidden_vars);

return null;
}
}
?>

なお、getHiddenVarsの定義は、

string getHiddenVars ([array $include_list = null], [array $exclude_list = null])

  • array $include_list: 配列が指定された場合、その配列に含まれるフォーム項目のみが対象となる
  • array $exclude_list: 配列が指定された場合、その配列に含まれないフォーム項目のみが対象となる

(Ethna APIリファレンスより)

となっている。ActionFormで宣言してある中からhiddenで抽出する対象を選ぶか、例外を選ぶかのいずれかを行うことになる。
ラジオボタンチェックボックスも対象になるので、そういったものを例外にするときや、パスワードの様に再入力が必要なものは除外する等、楽な方を選べばよいと思われる。
ActionClassでgetHiddenVarsを呼び出した後、以下の記述があるのでビュー側にhiddenで展開された文字列がアサインされる。

$this->af->setAppNE('hidden_vars', $hidden_vars);

ActionForm::SetAppNEを使うのは、入力文字列のエスケープ無しにそのまま戻すためですね。*1
Smartyのテンプレート側で次の様に書くとhidden表記が展開される。


<html>
<head>
(略)
</head>
<body>
<form>
{$app_ne.hidden_vars}
</form>
</body>
</html>

実際に通して実行されると、{$app_ne.hidden_vars}の部分に、


<html>
<head>
(略)
</head>
<body>
<form>
<input type="hidden" name="foo1" value="hoge1">
<input type="hidden" name="foo2" value="hoge2">
(以降、ActionFormで定義した数分挿入される)
</form>
</body>
</html>

といった具合にActionFormで定義され、且つEthna_ActionForm::getHiddenVarsの呼び出しの際に対象として選ばれたもの、あるいは例外として選ばれたフォーム以外の値が全て記述されることになる。
ちなみにAPIリファレンスは、これ

*1:きっと。多分。

私、主人の3倍稼ぎます

f:id:hideack:20061108012200j:image
昨日の内容の箇所に表示されていたGoogleあどせんす。
思わずクリックしそうになったのは内緒だ。
一番大きな疑問はどのキーワードにマッチしてこの広告が選ばれたか?というところにあったりする。

黙々

そして、頭から煙もモクモク。
と上がってきそうな感じだった。