Ajax tab в виджете вкладки zii - PullRequest
0 голосов
/ 06 марта 2012

Ниже у меня есть пример вкладки ajax:

$this->widget('zii.widgets.jui.CJuiTabs', array(
    'tabs' => array(
            'StaticTab 1' => 'Content for tab 1',
            'StaticTab 2' => array('content' => 'Content for tab 2', 'id' => 'tab2'),
            // panel 3 contains the content rendered by a partial view
            'AjaxTab' => array('ajax' => $this->createUrl('/AjaxModule/ajax/reqTest01')),
    ),
    // additional javascript options for the tabs plugin
    'options' => array(
            'collapsible' => true,
    ),
));

но я не знаю, что происходит в / AjaxModule / ajax / reqTest01. В этом примере отсутствует часть представления рендеринга, и я не знаю, как спроектировать его так, чтобы Ajax-вызов работал. Спасибо.

1 Ответ

3 голосов
/ 07 марта 2012

В соответствии с кодом, который вы указали, а именно эта строка:

'AjaxTab' => array('ajax' => $this->createUrl('/AjaxModule/ajax/reqTest01')),

Мы знаем, что нам нужен ajaxmodule, контроллер ajax, действие reqtest01, поэтому выполните следующие шаги:

Первый

Создайте модуль , он должен иметь имя AjaxModule .

Второй

Создайте контроллер в этом AjaxModule с именем Ajax .

Третий

Создайте действие в этом Ajax контроллере с именем ReqTest01 .
В рамках этого действия вы можете либо напрямую echo html, либо использовать renderPartial(), чтобы частично визуализировать файл представления для ajax.

Итак, ваш контроллер Ajax и действие внутри выглядит примерно так

<?php

class AjaxController extends Controller
{
    public function actionIndex()
    {
          $this->render('index');
    }

    public function actionReqTest01(){
          // directly echoing output is hardly of any use, like echo "Directly echoing this";
          $this->renderPartial('rendpar_ajax'); // renderPartial is way better as we have a view file rendpar_ajax.php that we can manipulate easily
    }
}

Четвертый

Теперь мы можем закодировать rendpar_ajax.php файл представления, создать этот файл в папке представлений контроллера ajaxController в модуле AjaxModule.

<?php
  // rendpar_ajax.php file for ajax tab
  // have any code here, use widgets, form, html helper etc
  echo "<h1>AjaxModule--AjaxController--actionReqTest01</h1>";
  echo "<p>This view is partially rendered</p>"; 

Подробнее о создании модулей, контроллеров, действий и их использовании, а также о том, как работает иерархия каталогов yii.
Удачи!

Редактировать: Обратите внимание, что для представления мы также можем передавать поставщики данных для получения сложных динамических представлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...