zii选项卡小部件中的Ajax选项卡


Ajax tab in zii tab widget

下面我有一个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调用能够工作。谢谢

根据您发布的代码,特别是这一行:

'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视图文件进行编码,在AjaxModule模块中的ajaxController控制器的视图文件夹中创建该文件。

<?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目录层次结构如何工作的信息
祝你好运

编辑:请注意,对于视图,我们还可以传递用于获取复杂动态视图的数据提供程序。