2013-10-25 6 views
0

У меня есть этот виджет:как запустить YII виджет, когда кнопка нажата

<?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, который находится в папке сайта

ответ

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: как просмотреть его привести к представлению reuslt, которое находится на сайте папки?

Imao, я рекомендую вам этого не делать. Виджет является независимой частью, вы можете использовать его для многих конкретных целей: & во многих местах вашего проекта, поэтому просто поместите простой вид для виджета, чтобы отображать его самостоятельно, вместо того чтобы пытаться отобразить область видимости вне виджета. Он должен выглядеть следующим образом:

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

Nice drawing :) –

Смежные вопросы