public function updateItem(Translator $translator, Request $request, $id) { /** @var CategoryItem $item */ if (!($item = CategoryItem::find($request->get('id')))) { throw new InvalidArgumentHttpException(); } $item->fill($request->all()); XeCategory::putItem($item); $multiLang = $translator->getPreprocessorValues($request->all(), session()->get('locale')); $item->readableWord = $multiLang['word']; return XePresenter::makeApi($item->toArray()); }
/** * update dynamic field * * @return \Xpressengine\Presenter\RendererInterface */ public function update(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->get($inputs['group'], $inputs['id']); foreach ($inputs as $name => $value) { $config->set($name, $value); } $dynamicField->setConnection(XeDB::connection($request->get('databaseName'))); $dynamicField->put($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); }