我有这个小部件:
<?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
中查看其结果
答案 0 :(得分:2)
也许我误解了你,但我觉得你对小部件有点混淆。避免制作 冗长的回答,我在下面做了一个模型
问题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