0

以下のコードを使用して、高度な検索フォームに 4 つのラジオボタンを作成しました。

<div class="row">
        <?php #echo $form->label($model,'ReviewedDate'); ?>     
                <?php echo $form->radioButtonList($model, 'ReviewedDate', 
        array('1' => 'Reviewed', '' => 'Not Reviewed')
    ); ?>
    </div>

       <div class="row"> 
                <?php echo $form->radioButtonList($model, 'Approved', 
        array('0' => 'Rejected', '1' => 'Approved')
    ); ?> 
    </div>   

そのため、ラジオボタンの値に従って行を表示するためにグリッドビューをフィルタリングするためのモデルにいくつかの基準を作成しました。

if($this->ReviewedDate != '') 
                {
                $criteria->addCondition('ReviewedDate ' . ($this->ReviewedDate=='1' ? 'IS NOT NULL' : 'IS NULL'));
                $criteria->addCondition('updateddate > createddate');
                $criteria->compare('revieweddate','0000-00-00 00:00:00');
                }
                else 
                {
                $criteria->addCondition('updateddate = createddate');    
                $criteria->addCondition('ReviewedDate IS NULL');
                }



if (isset($this->Approved) && !empty($this->Approved)) {

                        $criteria->addCondition("approved='" . $this->Approved . "'");
                        $criteria->condition = ' (updateddate > createddate) AND (revieweddate IS NOT NULL) and approved = 1 ';
                }
                else {

                        $criteria->addCondition("approved='" . $this->Approved . "'");
                        $criteria->condition = ' (updateddate > createddate) AND (revieweddate IS NOT NULL) and approved = 0 ';
                }

上記のコードは正常に機能し、reviewdate 基準がコメント化されているか、承認済み基準がコメント化されている場合、それに応じて行を表示します。ただし、両方の基準が同時に機能するわけではありません。両方の条件を同時に使用しようとすると、条件の 1 つが機能します。
1.ここで、オプションごとに個別のラジオボタンを作成したいと思います(承認、拒否、レビュー、未レビューの4つのラジオボタンが必要です)。
2.ラジオボタンが重複することなく各基準で機能するようにします。
これどうやってするの

4

1 に答える 1

0

を設定する$criteria->conditionことで、すべてaddConditioncompare呼び出しを効果的に取り消すことができます。addCondition代わりに別の呼び出しを使用してください。

于 2013-09-26T06:37:35.747 に答える