コード例 #1
0
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $form = new Form();
     $serviceLocator->injectFactory($form);
     $form->add(array('type' => $this->fileElement, 'name' => $this->fileName, 'attributes' => array('class' => 'hide')));
     $form->get($this->fileName)->setIsMultiple($this->multiple);
     $user = $serviceLocator->getServiceLocator()->get('AuthenticationService')->getUser();
     $fileEntity = new $this->fileEntityClass();
     if ($user instanceof AnonymousUser) {
         $fileEntity->getPermissions()->grant($user, 'all');
     } else {
         $fileEntity->setUser($user);
     }
     $strategy = new FileUploadStrategy($fileEntity);
     if ($this->multiple) {
         $hydrator = new FileCollectionUploadHydrator($this->fileName, $strategy);
         $form->add(array('type' => 'button', 'name' => 'remove', 'options' => array('label' => 'Remove all'), 'attributes' => array('class' => 'fu-remove-all btn btn-danger btn-xs pull-right')));
     } else {
         $hydrator = new EntityHydrator();
         $hydrator->addStrategy($this->fileName, $strategy);
     }
     $form->setHydrator($hydrator);
     $form->setOptions(array('use_files_array' => true));
     $this->configureForm($form);
     return $form;
 }
コード例 #2
0
ファイル: FileUploadFactory.php プロジェクト: vfulco/YAWIK
 /**
  * The configuration from the FileUploadFactory configuration
  *
  * @param ServiceLocatorInterface $serviceLocator
  * @return Form
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     /* @var $serviceLocator \Zend\Form\FormElementManager */
     $service = $serviceLocator->getServiceLocator();
     $options = null;
     if ($this->options) {
         $options = $service->get($this->options);
     }
     // Retrieve configuration.
     if ($this->configKey) {
         $services = $serviceLocator->getServiceLocator();
         $config = $services->get('config');
         $config = isset($config['form_elements_config']['file_upload_factories'][$this->configKey]) ? $config['form_elements_config']['file_upload_factories'][$this->configKey] : array();
         $this->config = $config;
     }
     $form = new Form();
     $serviceLocator->injectFactory($form);
     $form->add(array('type' => $this->fileElement, 'name' => $this->fileName, 'options' => array('use_formrow_helper' => false), 'attributes' => array('class' => 'hide')));
     /* @var $element \Core\Form\Element\FileUpload */
     $element = $form->get($this->fileName);
     $element->setIsMultiple($this->multiple);
     $user = $serviceLocator->getServiceLocator()->get('AuthenticationService')->getUser();
     /* @var $fileEntity \Core\Entity\FileInterface */
     $fileEntity = new $this->fileEntityClass();
     if ($user instanceof AnonymousUser) {
         $fileEntity->getPermissions()->grant($user, 'all');
     } else {
         $fileEntity->setUser($user);
     }
     $strategy = new FileUploadStrategy($fileEntity);
     if ($this->multiple) {
         $hydrator = new FileCollectionUploadHydrator($this->fileName, $strategy);
         $form->add(array('type' => 'button', 'name' => 'remove', 'options' => array('label' => 'Remove all'), 'attributes' => array('class' => 'fu-remove-all btn btn-danger btn-xs pull-right')));
     } else {
         $hydrator = new EntityHydrator();
         $hydrator->addStrategy($this->fileName, $strategy);
     }
     $form->setHydrator($hydrator);
     $form->setOptions(array('use_files_array' => true));
     $this->configureForm($form, $options);
     return $form;
 }