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); }
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; }