Example #1
0
 public function testPrepareBindDataAllowsFilterToConvertStringToArray()
 {
     $data = array('foo' => '1,2');
     $filteredData = array('foo' => array(1, 2));
     $element = new TestAsset\ElementWithStringToArrayFilter('foo');
     $hydrator = $this->getMock('Zend\\Stdlib\\Hydrator\\ArraySerializable');
     $hydrator->expects($this->any())->method('hydrate')->with($filteredData, $this->anything());
     $this->form->add($element);
     $this->form->setHydrator($hydrator);
     $this->form->setObject(new stdClass());
     $this->form->setData($data);
     $this->form->bindValues($data);
 }
Example #2
0
 public function testCallingBindValuesWhenBindOnValidateIsDisabledPopulatesBoundObject()
 {
     $model = new stdClass();
     $validSet = array('foo' => 'abcde', 'bar' => ' ALWAYS valid ', 'foobar' => array('foo' => 'abcde', 'bar' => ' always VALID'));
     $this->populateForm();
     $this->form->setHydrator(new Hydrator\ObjectProperty());
     $this->form->setBindOnValidate(false);
     $this->form->bind($model);
     $this->form->setData($validSet);
     $this->form->isValid();
     $this->assertObjectNotHasAttribute('foo', $model);
     $this->assertObjectNotHasAttribute('bar', $model);
     $this->assertObjectNotHasAttribute('foobar', $model);
     $this->form->bindValues();
     $this->assertObjectHasAttribute('foo', $model);
     $this->assertEquals($validSet['foo'], $model->foo);
     $this->assertObjectHasAttribute('bar', $model);
     $this->assertEquals('always valid', $model->bar);
     $this->assertObjectHasAttribute('foobar', $model);
     $this->assertEquals(array('foo' => 'abcde', 'bar' => 'always valid'), $model->foobar);
 }
 protected function processForm(Form $form, $options = array(), $extra1 = null, $extra2 = array())
 {
     /**
      * Special case for a simpler API: if the second argument is a string, it is used as the route to redirect
      * to, the third argument as the route parameters and the fourth argument as additional options.
      */
     if (is_string($options)) {
         $options = array('redirect_route' => $options, 'redirect_params' => $extra1);
         $options = $options + $extra2;
     }
     if ($options && isset($options['object_manager'])) {
         $objectManager = $options['object_manager'];
     } else {
         $objectManager = $this->getEntityManager();
     }
     /** @var $request Request */
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $form->bindValues();
             $objectManager->persist($form->getObject());
             $objectManager->flush();
             if (!empty($options['success_message'])) {
                 $this->flashMessenger()->addMessage($options['success_message']);
             }
             if (!empty($options['redirect_route'])) {
                 $params = array();
                 if (!empty($options['redirect_params'])) {
                     $params = $options['redirect_params'];
                     if (is_callable($params)) {
                         $params = call_user_func($params, $form);
                     }
                 }
                 return $this->redirect()->toRoute($options['redirect_route'], $params);
             }
         }
     }
     return null;
 }
 /**
  * Возвращает объект привязанный к форме
  *
  * @param Form $form
  *
  * @return mixed
  * @throws \Assert\AssertionFailedException
  */
 protected function getFormObject(Form $form)
 {
     $form->bindValues();
     $object = $form->getObject();
     Assertion::isInstanceOf($object, GitLabDto::class);
     return $object;
 }