yii2动态调用小部件

时间:2016-06-09 13:04:02

标签: yii2

我在控制器中有一个动作,它必须像“工厂小部件”一样工作:

public function actionRenderWidget($widget)
{
    $widgetClass = 'My'.$widget.'Widget';
    return $widgetClass::widget();
}

实现类似的东西的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您应该只使用带有命名空间的类名(不需要使用@Component({ moduleId: module.id, selector: 'my-app', templateUrl: DynamicUrl, //Load DynamicUrl here styleUrls: ['app.component.css'] }) export class AppComponent{ var DynamicUrl= 'app.component.html'; // ideally this template name will be pulled from the server. } ),例如:

call_user_func()

详细了解Dynamically accessing namespaced elements

答案 1 :(得分:0)

//example
$className = 'yii\jui\DatePicker';

return call_user_func($className .'::widget');

OR

$config = [];
$widget = Yii::createObject($className, $config);
return call_user_func([$widget, 'widget']);