如何在单击按钮时运行yii小部件

时间:2013-10-25 02:04:48

标签: php yii widget

我有这个小部件:

<?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中查看其结果

1 个答案:

答案 0 :(得分:2)

也许我误解了你,但我觉得你对小部件有点混淆。避免制作 冗长的回答,我在下面做了一个模型

enter image description here

  

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

这个想法是你将小部件内容放入隐藏的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:如何在位于文件夹站点的视图重新查看中查看其结果?

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

/your-app/protected/extensions/widgets/search/Search.php
/your-app/protected/extensions/widgets/search/views/result.php // view for rendering