0

これはばかげた質問かもしれません..しかし、フィルターとCListViewウィジェットを調整して、以下のように適切に表示しようとしています

ここにコードがあります

<div class="row-fluid span12">
 <div class="span4">

<?php $box = $this->beginWidget(
    'bootstrap.widgets.TbBox',
    array(
        'title' => 'Advanced Search',
        'headerIcon' => 'icon-th-list',
        'htmlOptions' => array('class' => 'bootstrap-widget-table')
        )
    );?>
<?php $this->renderPartial('_search',array('model'=>$model,)); ?>

<?php $this->endWidget(); ?>

</div>
<div class="span8">
     <?php 
        $this->widget('zii.widgets.CListView', 
                array(
                      'dataProvider'=>$model->search(),
                      'ajaxUpdate' => true,
                      'enablePagination'=>true,

                      'itemView'=>'_list',   // refers to the partial view named '_post'
                      'sortableAttributes'=>array(
                                                  'Price',
                                                  'Year',
                                                  'Lenght'
                                                  ),

                      )

                    );
               ?>

</div>
</div>

添付の写真の左側のようなものを実際に生成します

ここに画像の説明を入力

CListView ウィジェットがフィルター内に配置されていることを確認するにはどうすればよいですか? そして、「1-29 件の結果を表示しています」というテキストを削除し、フィルターを一番上に配置しますか?

4

2 に答える 2

0

div はブロック要素であるため、互いにブロックする 2 つ <div class="span4"><div class="span8">種類があります。

ブートストラップ レイアウトを削除し、左にフローティングする div でフィルターを作成し、CListView の div 内に配置するとどうなりますか?

<div class="row-fluid span12">
  <div style="float:left;">
   ... filters
  </div > 
    ... 
    $this->widget('zii.widgets.CListView',
    ... 
</div><!-- span12 -->

アップデート

あなたが言及したサイトから:

フローティング div

上のコンテナ

于 2014-12-18T17:24:18.620 に答える
0

私の解決策はもう少し長くなりますが、我慢してください。

のデフォルトのレイアウトCListItemは次のとおりです。

<div>{pager}</div>
<div>{summary}</div>
<div class='items'>{item1}{item2}...{item_n}</div>

.items目的のレイアウトを実現するには、コンテナー、つまりdivに何らかの方法でフィルターを挿入する必要があります。これにはいくつかの方法があります。

  1. ListView クラスを上書きしてbeforeItems、項目コンテナー内の最初の項目の前にコンテンツが配置される変数を追加できます。例えば

    <?php
    
    Yii::import('zii.widgets.CListView');
    
    class MyListView extends CListView {
    
    public $beforeItems = '';
    
        public function renderItems()
        {
            echo CHtml::openTag($this->itemsTagName,array('class'=>$this->itemsCssClass))."\n";
            $data=$this->dataProvider->getData();
            if(($n=count($data))>0)
            {
                echo $this->beforeItems;
                $owner=$this->getOwner();
                $viewFile=$owner->getViewFile($this->itemView);
                $j=0;
                foreach($data as $i=>$item)
                {
                    $data=$this->viewData;
                    $data['index']=$i;
                    $data['data']=$item;
                    $data['widget']=$this;
                    $owner->renderFile($viewFile,$data);
                    if($j++ < $n-1)
                        echo $this->separator;
                }
            }
            else
                $this->renderEmptyText();
            echo CHtml::closeTag($this->itemsTagName);
        }
    
    }
    

    次に、リスト ビューを次のように呼び出すことができます。

    $this->widget('path.to.MyListView, array(
        ...
        'beforeSend' => '<filter html here>',
    
  2. ただし、リストビューを画像のように表示するには、リストビューを拡張して、以下の例でコメントアウトされている開始および終了コンテナー タグのレンダリングを一部削除する必要があります。

    Yii::import('zii.widgets.CListView');
    
    class MyListView extends CListView {
    
        public function renderItems()
        {
            // echo CHtml::openTag($this->itemsTagName,array('class'=>$this->itemsCssClass))."\n";
            $data=$this->dataProvider->getData();
            if(($n=count($data))>0)
            {
                $owner=$this->getOwner();
                $viewFile=$owner->getViewFile($this->itemView);
                $j=0;
                foreach($data as $i=>$item)
                {
                    $data=$this->viewData;
                    $data['index']=$i;
                    $data['data']=$item;
                    $data['widget']=$this;
                    $owner->renderFile($viewFile,$data);
                    if($j++ < $n-1)
                        echo $this->separator;
                }
            }
            else
                $this->renderEmptyText();
            // echo CHtml::closeTag($this->itemsTagName);
        }
    
    }
    

template次に、アイテムの前に表示される要約とページャーを編集して削除できます。

`template` => `<div><your_filter_html>{items}</div>`

テンプレートは、リスト ビュー内のさまざまなコンポーネントのレイアウトを制御するために使用されます。次のトークンが認識されます: {summary}、{sorter}、{items}、および {pager}。これらは、要約テキスト、並べ替えリンク、データ項目リスト、およびページャーに置き換えられます。

于 2014-12-18T17:50:48.067 に答える