public function editAction() { $form = new ResourceForm($this->getServiceLocator()); $form->setAttribute('id', 'edit-item-set'); $id = $this->params('id'); $response = $this->api()->read('item_sets', $id); $itemSet = $response->getContent(); $view = new ViewModel(); $view->setVariable('form', $form); $view->setVariable('itemSet', $itemSet); $view->setVariable('confirmForm', new ConfirmForm($this->getServiceLocator(), null, ['button_value' => $this->translate('Confirm Delete')])); if ($this->getRequest()->isPost()) { $data = $this->params()->fromPost(); $form->setData($data); if ($form->isValid()) { $response = $this->api()->update('item_sets', $id, $data); if ($response->isError()) { $form->setMessages($response->getErrors()); } else { $this->messenger()->addSuccess('Item Set Updated.'); return $this->redirect()->toUrl($response->getContent()->url()); } } else { $this->messenger()->addError('There was an error during validation'); } } return $view; }
public function buildForm() { parent::buildForm(); $this->setAttribute('enctype', 'multipart/form-data'); $translator = $this->getTranslator(); $serviceLocator = $this->getServiceLocator(); $auth = $serviceLocator->get('Omeka\\AuthenticationService'); $itemSetSelect = new ResourceSelect($serviceLocator); $itemSetSelect->setName('o:item_set')->setAttribute('required', false)->setAttribute('multiple', true)->setAttribute('id', 'select-item-set')->setAttribute('data-placeholder', $translator->translate('Select Item Sets...'))->setLabel($translator->translate('Item Sets'))->setOption('info', $translator->translate('Select Items Sets for this resource.'))->setResourceValueOptions('item_sets', [], function ($itemSet, $serviceLocator) { return $itemSet->displayTitle(); }); if (!$itemSetSelect->getValueOptions()) { $itemSetSelect->setAttribute('disabled', true); $itemSetSelect->setAttribute('data-placeholder', $translator->translate('No item sets exist')); } $this->add($itemSetSelect); $inputFilter = $this->getInputFilter(); $inputFilter->add(['name' => 'o:item_set', 'required' => false]); }