0

私は 2 つのテーブルを持っています: User と UserProfile は両方とも関係があります。つまり、UserProfile は User に属します。ユーザー テーブルには、特定のユーザーのアクティブ/非アクティブ レコードを 0 と 1 の形式で格納する列「is_active」があります。

現在、オプション Active (値 1) と Inactive (値 0) を含む 1 つのドロップダウン フィールドがあり、アクティブおよび非アクティブなユーザー リストに従って CGridview ウィジェットをフィルター処理したいと考えています。

以下は私がやっていることです:

<?php echo CHtml::dropDownList('UserProfile[is_active]', $model->user->is_active, 
  array(
    '1'=>"Active",
    '0'=>"Inactive",
  ), array('onchange'=>"$.fn.yiiGridView.update('yw0', {data: $(this).serialize()});") ); ?>

<?php
$this->widget('bootstrap.widgets.TbGridView', array(    
    'type' => 'striped bordered condensed',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'template' => '{pager}{items}',
    'enableSorting' => true,
    'columns' => array(
        'title.name',
        array(
            'name' => 'first_name',
            'type' => 'raw',
            'value' => 'CHtml::link($data->first_name,"/userProfile/$data->user_profile_id")'
        ),
        'last_name',
        'user.username',
        'user.email',        
        array(
            'class' => 'bootstrap.widgets.TbButtonColumn',
            'template' => '{update}&nbsp;&nbsp;&nbsp;&nbsp;{delete}',
        ),
    ),
    'pager' => array(
        'header' => '',
        'hiddenPageCssClass' => 'disabled',
        'maxButtonCount' => 3,
        'cssFile' => false,
        'class' => 'CLinkPager',
        'prevPageLabel' => '<i class="icon-chevron-left"></i>',
        'nextPageLabel' => '<i class="icon-chevron-right"></i>',
        'firstPageLabel' => 'First',
        'lastPageLabel' => 'Last',
    ),
    'pagerCssClass' => 'pagination',
));
?>

コントローラ:

public function actionManage() {

        $model = new UserProfile('search');        
        $model->unsetAttributes();  // clear any default values

        if (isset($_GET['UserProfile'])) {            
            $model->attributes = $_GET['UserProfile'];
        }

        $this->render('manage', array(
            'model' => $model,
        ));
    }

そして、ここに私の検索方法があります:

public function search() {

        $criteria = new CDbCriteria;
        $criteria->compare('first_name', $this->first_name, true);
        $criteria->compare('middle_name', $this->middle_name, true);
        $criteria->compare('last_name', $this->last_name, true);
        $criteria->with = array('user');
        $criteria->join = 'LEFT JOIN AuthAssignment ON AuthAssignment.userid=user_id';
        if (isset($_GET['employee'])):
            $criteria->addCondition("AuthAssignment.itemname <> 'Customer'");
            $criteria->addCondition("user.is_active='$status'");
        else:
            $criteria->addCondition("AuthAssignment.itemname = 'Customer'");
            $criteria->addCondition("user.is_active='$status'");
        endif;

        //Rights::getAssignedRoles(Yii::app()->session['user_id']);

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'pagination' => array(
                'pageSize' => 10,
            ),
        ));
    }

$statusここでは、ドロップダウン フィールドがアクティブまたは非アクティブに変化するときに、変数値を動的にしたいと考えています。

ドロップダウンオプションを変更すると、次のエラーが表示されます。

TypeError: settings is undefined
$grid.addClass(settings.loadingClass);

私は Yii の初心者で、これについて助けが必要です。

ありがとう

4

1 に答える 1

2

最初にプロファイルモデルでプロパティ user_status を宣言します

お気に入り

public $user_status;

次に、プロファイルモデルの検索方法で

$criteria->with = array( 'user' );
$criteria->compare( 'user.is_active', $this->user_status, true );

return new CActiveDataProvider($this, array(
      'criteria'=>$criteria,
      'sort'=>array(
        'attributes'=>array(
          'user_status'=>array(
            'asc'=>'user.is_active',
            'desc'=>'user.is_active DESC',
          ),
          '*',
        ),
      )
    ));

次に、列配列内のプロファイル グリッドビューで

追加

array(
      'name'=>'user_status',
      'header' => 'Status',
      'value'=>'$data->user->is_active',
      'filter' => array( '1'=>"Active",'0'=>"Inactive" )
      'type' => 'raw',
    ),

そのchtmlドロップダウンは必要ありません

于 2013-09-20T07:02:03.927 に答える