App\Http\Controllers\WidgetController::setup PHP Method

setup() public method

setup by code
public setup ( Illuminate\Http\Request $request, WidgetParser $widgetParser, WidgetHandler $widgetHandler, Xpressengine\Skin\SkinHandler $skinHandler ) : mixed
$request Illuminate\Http\Request
$widgetParser Xpressengine\Widget\WidgetParser
$widgetHandler Xpressengine\Widget\WidgetHandler
$skinHandler Xpressengine\Skin\SkinHandler
return mixed
    public function setup(Request $request, WidgetParser $widgetParser, WidgetHandler $widgetHandler, SkinHandler $skinHandler)
    {
        $this->validate($request, ['code' => 'required']);
        $code = $request->get('code');
        $inputs = $widgetParser->parseCode($code);
        $widget = array_get($inputs, '@attributes.id');
        $title = array_get($inputs, '@attributes.title', '');
        // widget list
        $widgetList = $widgetHandler->getAll();
        $widgets = [];
        $widgets[''] = '위젯을 선택하세요';
        foreach ($widgetList as $id => $class) {
            $widgets[$id] = $class::getTitle();
        }
        // skin list
        $skins = $skinHandler->getList($widget);
        // widget form
        $widgetForm = $widgetHandler->setup($widget, $inputs);
        // skin form
        $skinConfig = array_get($inputs, 'skin');
        if ($skinConfig && array_has($skinConfig, '@attributes.id')) {
            $skin = array_get($skinConfig, '@attributes.id');
            $skin = $skinHandler->get($skin);
            $skinForm = $skin->renderSetting($skinConfig);
        } else {
            $skinConfig = null;
        }
        return apiRender('widget.setup', compact('widgets', 'widget', 'title', 'skins', 'skin', 'widgetSelector', 'skinSelector', 'widgetForm', 'skinForm'));
    }