sfUIPlugin を試してみる

sfUIPlugin ってどんなプラグイン?

モデルからテーブル作ってくれんじゃね?


インストール

symfony plugin-install http://plugins.symfony-project.com/sfUIPlugin
カンタンインストール。
[sfUIPlugin-0.0.1.tgz - 2007/11/9 現在]


設定

まず、UIヘルパーを利用できるようにします。
[settings.yml]
all:
  .settings:
    standard_helpers:       [UI]
全てのテンプレートで使えるようにする場合は、standard_helpers に'UI'を上記のように追加します。

あるいは、UIヘルパーを利用するテンプレートだけに適用したい場合は、下記のコードをテンプレートの最初に挿入します。
<?php use_helper('UI') ?>


利用できる関数

Wikiにあるように sfUIPlugin で利用できるヘルパー関数は 'object_data_grid' のみです。

object_data_grid

echo object_data_grid(
  $sf_data->getRaw('obj'),
  array("ID" => "1", "NAME" => "1", "PROFILE"=>"1", "ACTIONS" => "2"),
  array("getId", "getName", "getProfile"),
  array("@UI_show?id={getId}", "", ""),
  array("Edit"  => "@UI_editform?id={getId}",
        "Delete" => "@UI_deleteform?id={getId}"),
  array("5%", "20%", "65%", "10%"),
  "th-class",
  "td1-class",
  "td2-class",
  "Empty"
);

引数の説明:
  1. テーブルに書き出すモデル
  2. テーブルヘッダの配列。Keyがラベルでvalueがcolspanの値。
  3. 表示するデータのメソッド名の配列。
  4. 表示するデータに貼るリンクの配列。
  5. データに対するアクションリンクの連想配列。
  6. セルごとの幅の値を入れた配列。
  7. th にあてるクラス名。
  8. td[1] にあてるクラス名。
  9. td[2] にあてるクラス名。(td[1]とtd[2]は交互に適用される)
  10. 第1引数が'空'だった場合表示される文字列。モデルだとデータが無くても空判定にはなりません(このコードじゃ意図した結果にならない)。


最低限の修正

いじり始めると切りがないので、とりあえず、バグ修正と表示の整形だけ。

[/plugins/sfUIPlugin/lib/helper/UIHelper.php]
//27行目辺り
$header_class = (empty($header_class)) ? "" : "class='$header_class'";
↓
$header_class = (empty($header_class)) ? "" : "class=\"$header_class\"";


//31行目辺り
$size = "width='".$sizes[$i]."'";
↓
$size = "width=\"".$sizes[$i]."\"";


//32行目辺り
$table .= "<th $size $header_class colspan='$colspan'>\n".$header."</th>\n";
↓
$table .= "<th $size $header_class colspan=\"$colspan\">\n".$header."</th>\n";


//47行目辺り
"<td class=$class>\n".$value."</td>\n";
↓
"<td class=\"$class\">\n".$value."</td>\n";


//53行目辺り
"<td class=$classe>\n".trata_link_acao($action_link, $obj, $action)."</td>\n";
↓
"<td class=\"$class\">\n".trata_link_acao($action_link, $obj, $action)."</td>\n";

はい、んで、コレが作成したサンプルです。
EditとDeleteは sfSavvyPlugin のやつの使い回しです。sfUIPlugin はテーブル生成だけのヘルパーです。


まとめ

なんだかグッタリ。まだ、使える段階じゃないみたい。sfUIPluginっていうからには、今後様々なUIパーツが実装されんのかな。
それとも自然消滅かな。
なんだかモチベーションが下がってきた。


--
モンハンやろー。
Name
Email
Your website or blog
Comment
Security code (CAPTCHA™)