【问题标题】:yii2 Dynamically call widgetyii2 动态调用小部件
【发布时间】:2016-06-09 13:04:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: yii2


    【解决方案1】:

    您应该简单地使用带有命名空间的类名(无需使用call_user_func()),例如:

    $widgetClass = 'app\widgets\My'.$widget.'Widget';
    return $widgetClass::widget();
    

    阅读更多关于Dynamically accessing namespaced elements的信息。

    【讨论】:

      【解决方案2】:
      //example
      $className = 'yii\jui\DatePicker';
      
      return call_user_func($className .'::widget');
      

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

      【讨论】:

        猜你喜欢
        • 2017-01-13
        • 1970-01-01
        • 1970-01-01
        • 2016-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多