App\Http\Controllers\DynamicFieldController::store PHP Method

store() public method

store dynamic field
public store ( Request $request, Translator $translator ) : Xpressengine\Presenter\RendererInterface
$request Xpressengine\Http\Request
$translator Xpressengine\Translation\Translator
return Xpressengine\Presenter\RendererInterface
    public function store(Request $request, Translator $translator)
    {
        /**
         * @var \Xpressengine\DynamicField\DynamicFieldHandler $dynamicField
         */
        $dynamicField = app('xe.dynamicField');
        $inputs = $request->all();
        unset($inputs['databaseName']);
        /**
         * @var \Xpressengine\DynamicField\RegisterHandler $registerHandler
         */
        $registerHandler = $dynamicField->getRegisterHandler();
        $rules = DynamicFieldSection::getRules();
        $fieldType = $registerHandler->getSkin($dynamicField, $inputs['typeId']);
        $fieldSkin = $registerHandler->getSkin($dynamicField, $inputs['skinId']);
        $rules = array_merge($rules, $fieldType->getSettingsRules(), $fieldSkin->getSettingsRules());
        $this->validate($request->instance(), $rules);
        $configHandler = $dynamicField->getConfigHandler();
        $config = $configHandler->getDefault();
        foreach ($inputs as $name => $value) {
            $config->set($name, $value);
        }
        $dynamicField->setConnection(XeDB::connection($request->get('databaseName')));
        $dynamicField->create($config);
        $row = $config->getPureAll();
        $fieldType = $registerHandler->getType($dynamicField, $row['typeId']);
        $fieldSkin = $registerHandler->getSkin($dynamicField, $row['skinId']);
        $row['typeName'] = $fieldType->name();
        $row['skinName'] = $fieldSkin->name();
        $multiLang = $translator->getPreprocessorValues($inputs, session()->get('locale'));
        $row['label'] = $multiLang['label'];
        return XePresenter::makeApi($row);
    }