2

私はYiiを初めて使用します。質問がばかげている場合は申し訳ありませんが、CGridViewを使用してデータベースの一部のフィールドをテーブルに表示しています。

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
    'model'=>$model,
 )); ?>
</div><!-- search-form -->

<?php 


 $this->widget('zii.widgets.grid.CGridView', array(
   'id'=>'show-grid',
   'dataProvider'=>$model->search(),
   'filter'=>$model,
   'columns'=>array(
       'id',
       'title',
       'brief',
       'tbl_season_id',
       'on_season',

                array(
                    'name'=>'status',
                    'value'=>'Lookup::item("NewsStatus",$data->status)',
                    'filter'=>  Lookup::items('NewsStatus'),
                ),
        array(
        'class'=>'CButtonColumn',
        ),
        ),
      )); ?>
    </div>

表示されている値の一部を置き換えたい。たとえば、フィールドがバイナリで、テーブルの値が0または1である場合、この値をとにon_season変更したい。YesNO

またtbl_season_id、別のテーブルからの外部キーです。ユーザーが理解できないIDの代わりに、季節の名前を取得して配置したいと思います。

4

2 に答える 2

4

列の値を心ゆくまでカスタマイズするには、このwikiの記事を参照してください。

Yii Documentataion:cgridview-render-customized-complex-datacolumns

valueプロパティは式文字列にすることができ、後で行のデータごとに評価されることを覚えておいてください。したがって、その行の現在の値に応じて任意の値を動的に計算できるメソッド呼び出しがあります。

于 2012-06-15T12:07:45.847 に答える
1

2つのテーブルを用意しましょう

1):クライアント2):プロジェクト


関係はクライアントが多くのプロジェクトを持っていることです。

モデルで


クライアントは関係をモデル化します(クライアントテーブルのモデル名はClientです)

 class Client extends CActiveRecord{
    }

およびrelations()メソッド;

 return array(
      'projects' => array(self::HAS_MANY, 'Projects', 'clients_id'),
  );

プロジェクトモデル関係は次のとおりです(プロジェクトテーブルモデル名はProjectsです)

      class Projects extends CActiveRecord{
         }

およびrelations()メソッド;

   return array(
          'clients' => array(self::BELONGS_TO, 'Client', 'clients_id')
     );

これ で、以下を使用して、CGridViewのproejctテーブルのclient_idをclient_nameに置き換えることができます。


  'dataProvider' => $model->search(),
  'columns' => array(
         'id',
          'project_name',
     array(
        'name' => 'client Name',
        'value' => '$data->clients->name',   //where name is Client model attribute 
       ),
    )

およびCDetailViewのプロジェクトビューページでは、次を使用できます

'data' => $model,
'attributes' => array(
               'id',
              'project_name',
         array(
            'name'=>'Client Name',
            'value'=>$model->clients->name ,
        ),  

)。


会社テーブルとクライアント関係がある場合(会社には多くのクライアントがあります)クライアントモデル

   'company' => array(self::BELONGS_TO, 'Company', 'company_id'),

インデックス( CGridview)のメソッドに従って会社名を取得することもできます

   array(
      'name' => 'client Name',
    'value' => '$data->clients->company->name', //where name is company model attribute 
    ),

とビュー CDetailViewで

 array(
    'name'=>'Client Name',
     'value'=>$model->clients->company->name ,
        ),

于 2013-03-01T06:31:50.610 に答える