0

これはばかげた質問かもしれませんが、私はyiiの初心者であり、この単純なビューに問題がありました。次のようなデータがあります。

task_type

ID名
1議事
2タスク
3ノート

議題:

idユーザーdue_atcreated_attask_type_id説明

そして、それらを議事録とタスクとして別々に表示し、次のようなさまざまなhtmlビューでメモを表示したいと思います。

タスク

due_atの説明

議題

due_atcreated_atの説明

ノート

説明

これらの表には、現在の週のフロントページに最大1週間しか表示されておらず、この種のタスク専用の別のページがあるため、派手なユーザーフィルタリングは必要ありません。これは、クイックタスクとしてフロントページにのみあります。私はCGridViewを試してきましたが、htmlフィルターを表示させずにフィルターすることはできません。due_atでフィルタリングし、アジェンダのdue_atを範囲指定してから、ユーザーごとにフィルタリングする必要があります。

誰かが私がこれを作成するのを手伝ってもらえますか?

前もって感謝します

4

1 に答える 1

1

これにを使用したい場合は、注意が必要なことがいくつかありますCGridView。それらは次のとおりです。

  1. DataProviderを使用する:CGridViewには、入力としてデータプロバイダーが必要です。データプロバイダーは次のとおりです。

    データプロバイダーは、データグリッド、データリストなどのウィジェットにデータをフィードできるコンポーネントです。データを提供するだけでなく、ページ付けと並べ替えもサポートします。

    現在の要件については、を使用できますCActiveDataProvider。したがって、gridviewコードにはこれが必要です。

    $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
    ));
    

    このデータプロバイダーをコントローラーアクションからビューに渡します。

  2. 使用基準condition:のcriteriaプロパティでこれらすべてのを渡すことができますCActiveDataProvider。この基準はの対象ですCDbCriteria。したがって、次の$dataProviderようになります。

    $dataProvider=new CActiveDataProvider('Agenda',array(
        'criteria'=>array(
            'condition'=>'task_type_id=1 AND due_at BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 WEEK)',
            'select'=>'due_at, description' // columns you want to select
        )
    ));
    

    conditionプロパティは次のとおりです。

    クエリ条件。これは、SQLステートメントのWHERE句を参照します。たとえば、age> 31 AND team=1です。

    selectプロパティは次のとおりです。

    選択されている列。これは、SQLステートメントのSELECT句を参照します。プロパティは、文字列(コンマで区切られた列名)または列名の配列のいずれかです。デフォルトは「*」で、すべての列を意味します。

  3. フィルタを指定しないfilter:フィルタを表示しないようにするには、グリッドにプロパティ値を渡さないでください。

    $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
        //'filter'=>$model // don't pass any filter
    ));
    
  4. 列を使用:のcolumnsプロパティをCGridView使用して、表示する特定の列のみを表示します。

    $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'agenda-grid',
        'dataProvider'=>$dataProvider,
        'columns'=>array(
            'due_at',
            'description'
        )
    ));
    

    また、自動生成されたIDが必要ない場合は、このグリッドのにidなりますを渡します。iddiv

以上の手順で、必要なものを入手できます。

于 2012-10-06T08:14:17.393 に答える