我正在尝试创建一个带有依赖下拉框的小部件。
以下教程:http ://www.yiiframework.com/wiki/24 ,我在 ajax 部分面临以下问题:
echo CHtml::dropDownList('metal_id', 'id', $metals, array(
'ajax' => array(
'type' => 'POST', //request type
'url' => CController::createUrl('currentController/dynamiccities'),
'update' => '#product_id',
)
));
使用 CController 是不可能的,因为我在 CWidget 内部,而不是 CController。
但是,我可以使用类似的东西:
'url' => $this->getController()->createUrl('currentController/dynamicProducts')
但是它仍然不能解决我的问题,因为它不是指小部件位置,而是指控制器文件夹。
问题 1:如何让我的 ajax 从我的 CWidget 中调用方法?
问题 2:我正在使用小部件,因为我希望此表单可在多个页面上使用。我应该创建一个局部视图吗???如果是这样,我如何将另一个控制器所需的数据传递到局部视图中?
糟糕的解决方案/解决方法:我通过在 Controllers 文件夹中创建一个 AjaxController 来让小部件工作。对这个解决方案不太满意,因为它不是很整洁。
有没有更好的解决方案?