1

ATK4を使い始めたばかりで、これまでのところ非常に感謝していますが、これを行う方法がわかりません...

私が達成しようとしていること:

クエリの結果をグリッドに出力しています。フィールドの 1 つは「ステータス」で、データは「-1」または「1」のいずれかになります。列に -1 または 1 を出力する代わりに、値ごとに異なるアイコンを表示する代わりに、HTML スニペット (または必要なものを取得するために必要なもの) を出力するにはどうすればよいですか? 要するに:

列「ステータス」:

  • 値が -1 の場合、iconDown.gif を表示します。
  • 値が 1 の場合、iconUp.gif を表示します

これまでのコード:

class page_showlist extends Page {
function init(){
    parent::init();

    $q=$this->api->db->dsql();
    $q->table('remote_system')
            ->join('customers.id','customer_id')
            ->field('customer_id')
            ->field('ip')
            ->field('nickname')
            ->field('name','customers')
            ->field('status')
    ;

    $grid = $this->add('Grid');

    $grid->addColumn('text','status')->makeSortable();
    $grid->addColumn('text','name')->makeSortable();
    $grid->addColumn('text','ip');
    $grid->addColumn('text','nickname');
    $grid->addButton('Reload Grid')->js('click',$grid->js()->reload());
    $grid->addQuickSearch(array('name'));
    $grid->setSource( $q );
    }

}

ポインタ/ヒントはありますか?

4

1 に答える 1

1

グリッドにアイコンを含む列を追加するには、カスタム テンプレートを使用できます。

私のプロジェクトの1つで、私はこれが好きです:

$url = $this->api->pm->base_url . $this->api->locateURL('template', 'images/');
$grid->addColumn('template', 'type', false)
    ->setTemplate('<img src="' . $url . 'icon_object_<?$type?>.png">');

という名前のモデルフィールドを使用typeし(あなたの場合は を使用status)、その列にアイコンを表示します。アイコン ソース URL は動的に生成され、icon_object_XXX.pngtemplate/imagesという名前のディレクトリで画像ファイルを検索します。XXX値はフィールド値から取得されます。type

私の場合typeは次のようになります:array('building','apartment','land','garage')など

そしてもう 1 つ、可能な限りモデルの使用を開始する必要があります。そうすれば、後でプロジェクトが大きくなったときに楽になります。また、追加のセキュリティ (条件など) を持つこともできます。

于 2013-02-08T12:35:43.777 に答える