下面我有一个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目录层次结构如何工作的信息
祝你好运
编辑:请注意,对于视图,我们还可以传递用于获取复杂动态视图的数据提供程序。