ホーム>source

DetailView を強制する簡単な方法はありますかYii2では、その attributes のこれらのフィールドを無視しますリスト、特定の model 空ですか?

または、唯一の方法は定義することです  attributes の属性独自の関数でリストし、その中の空のフィールドをフィルタリングします(少し狂ったように聞こえます)?

編集する:これは一目瞭然だと思っていましたが、実際はそうではありません。つまり、基本的に、 DetailView を強制したい attributes のこれらの要素の行を無視する(レンダリングしない)対応する model に空の(null、空の文字列)値があるリストしたがって、空のテーブルセルがレンダリングされます。

あなたの答え
  • 解決した方法 # 1

    template を定義できます  のパラメータDetailView ウィジェットとして折り返し電話 次のシグネチャ function ($attribute, $index, $widget) を持つ関数  このコールバックは属性ごとに呼び出されるため、行に必要なレンダリングを定義できます。

    <前>ウィズウィズ

  • 解決した方法 # 2

    このようなものがうまくいきますか?

    <前>ウィズウィズ DetailView::widget([ 'model' => $model, 'template' => function($attribute, $index, $widget){ //your code for rendering here. e.g. if($attribute['value']) { return "<tr><th>{$attribute['label']}</th><td>{$attribute['value']}</td></tr>"; } }, //other parameters ]);

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ javascript - jquery:done()を連続して使用すると、then()/ done()と同じ結果が得られます