0

我有这个小部件:

<?php

    class Search extends CWidget
    {
        public $dataProvider = null;
        public function init()
        {
            $criteria = new CDbCriteria();

                if ( isset($_GET['file']) ) {
                    $criteria->compare('fileName', $_GET['file'], true, 'OR');
                    $criteria->compare('tags', $_GET['file'], true, 'OR');
                }

                $this->dataProvider = new CActiveDataProvider("Files", array(
                    'criteria' => $criteria,
                    //'countCriteria' => $criteria,
                    'pagination'=>array(
                        // results per page
                        'pageSize'=>1,
                    ),
                ));
        }

        public function run(){
        $this->render('site/result', array(
                    'dataProvider' => $this->dataProvider,
                    'pages' => $this->dataProvider->pagination,
                ));
        }
    }
    ?>

如何仅在单击搜索按钮时运行此小部件,以及如何reuslt在文件夹站点中的视图中查看其结果

4

1 回答 1

2

也许我误解了你,但我认为你对小部件有点困惑。避免
冗长的回答,我在下面做了一个模型

在此处输入图像描述

问题 1:如何仅在单击搜索按钮时运行此小部件?

想法是你把widget内容放到隐藏的div中,然后添加一个jQuery脚本在点击搜索按钮后显示

<div id='search-result' style="display:none"><?php $this->widget(...) ?></div>
<script>
$('#search-button-id').click({
// do something
$('#search-result').show();
})</script>

问题2:如何在位于文件夹站点的视图reuslt中查看其结果?

Imao,我建议你不要这样做。小部件是独立的部分,您可以将它用于许多特定目的和项目的许多位置,因此只需为小部件放置一个简单的视图以使其自己呈现,而不是尝试在小部件范围之外呈现视图。它应该如下所示

/your-app/protected/extensions/widgets/search/Search.php
/your-app/protected/extensions/widgets/search/views/result.php // view for rendering
于 2013-10-25T02:51:26.110 回答