【发布时间】:2016-06-09 13:04:01
【问题描述】:
我在控制器中有一个动作,它必须像“工厂小部件”一样工作:
public function actionRenderWidget($widget)
{
$widgetClass = 'My'.$widget.'Widget';
return $widgetClass::widget();
}
实现类似的正确方法是什么?
【问题讨论】:
标签: yii2
我在控制器中有一个动作,它必须像“工厂小部件”一样工作:
public function actionRenderWidget($widget)
{
$widgetClass = 'My'.$widget.'Widget';
return $widgetClass::widget();
}
实现类似的正确方法是什么?
【问题讨论】:
标签: yii2
您应该简单地使用带有命名空间的类名(无需使用call_user_func()),例如:
$widgetClass = 'app\widgets\My'.$widget.'Widget';
return $widgetClass::widget();
【讨论】:
//example
$className = 'yii\jui\DatePicker';
return call_user_func($className .'::widget');
或
$config = [];
$widget = Yii::createObject($className, $config);
return call_user_func([$widget, 'widget']);
【讨论】: