/** * Class constructor. * * @param ProjectService $projectService * @param WorkpackageService $workpackageService */ public function __construct(ProjectService $projectService, WorkpackageService $workpackageService) { parent::__construct(); $this->setAttribute('method', 'post'); $this->setAttribute('class', 'form-horizontal'); $fieldSet = new Fieldset('effortPerAffiliationAndYear'); foreach ($workpackageService->findWorkpackageByProjectAndWhich($projectService->getProject()) as $workpackage) { $workpackageFieldSet = new EffortPerWorkpackageAndAffiliationFieldset($workpackage, $projectService); $fieldSet->add($workpackageFieldSet); } $fieldSet->setUseAsBaseFieldset(true); $this->add($fieldSet); $this->add(['type' => 'Zend\\Form\\Element\\Submit', 'name' => 'submit', 'attributes' => ['class' => "btn btn-primary", 'value' => _("txt-update-planned-versus-spent")]]); }
public function testElementInAFieldsetForSomeModel() { $element = $this->getMoneyFieldset(); $element->init(); $fieldset = new Fieldset('hasMoneyElementFieldset'); $fieldset->add($element, ['name' => 'price']); $fieldset->setHydrator(new ClassMethods()); $fieldset->setUseAsBaseFieldset(true); $form = new Form(); $form->add($fieldset); // todo: can't load this $form->bind(new HasMoneyPropertyModel()); $data = ['hasMoneyElementFieldset' => ['price' => ['amount' => '500.25', 'currency' => 'BRL']]]; $form->setData($data); $this->assertTrue($form->isValid()); $amountValue = $form->get('hasMoneyElementFieldset')->get('price')->get('amount')->getValue(); $currencyValue = $form->get('hasMoneyElementFieldset')->get('price')->get('currency')->getValue(); $object = $form->getData(); $this->assertSame('500.25', $amountValue); $this->assertSame('BRL', $currencyValue); $this->assertInstanceOf(Money::class, $object->getPrice()); $this->assertSame(50025, $object->getPrice()->getAmount()); $this->assertSame('BRL', $object->getPrice()->getCurrency()->getName()); }
public function testHydratorAppliedToBaseFieldset() { $fieldset = new Fieldset('foobar'); $fieldset->add(new Element('foo')); $fieldset->setUseAsBaseFieldset(true); $this->form->add($fieldset); $this->form->setHydrator(new Hydrator\ArraySerializable()); $baseHydrator = $this->form->get('foobar')->getHydrator(); $this->assertInstanceOf('Zend\\Stdlib\\Hydrator\\ArraySerializable', $baseHydrator); }
public function testApplyObjectInputFilterToBaseFieldsetAndApplyValidationGroup() { $fieldset = new Fieldset('foobar'); $fieldset->add(new Element('foo')); $fieldset->setUseAsBaseFieldset(true); $this->form->add($fieldset); $this->form->setValidationGroup(array('foobar' => array('foo'))); $inputFilterFactory = new InputFilterFactory(); $inputFilter = $inputFilterFactory->createInputFilter(array('foo' => array('name' => 'foo', 'required' => true))); $model = new TestAsset\ValidatingModel(); $model->setInputFilter($inputFilter); $this->form->bind($model); $this->form->setData(array()); $this->assertFalse($this->form->isValid()); $validSet = array('foobar' => array('foo' => 'abcde')); $this->form->setData($validSet); $this->assertTrue($this->form->isValid()); }
public function testCanBindObjectMultipleNestedFieldsets() { $productFieldset = new ProductFieldset(); $productFieldset->setHydrator(new ClassMethods()); $productFieldset->setObject(new Product()); $nestedFieldset = new Fieldset('nested'); $nestedFieldset->setHydrator(new ClassMethods()); $nestedFieldset->setObject(new stdClass()); $nestedFieldset->add(array('name' => 'products', 'type' => 'Collection', 'options' => array('target_element' => $productFieldset, 'count' => 2))); $mainFieldset = new Fieldset('main'); $mainFieldset->setUseAsBaseFieldset(true); $mainFieldset->setHydrator(new ClassMethods()); $mainFieldset->setObject(new stdClass()); $mainFieldset->add(array('name' => 'nested', 'type' => 'Collection', 'options' => array('target_element' => $nestedFieldset, 'count' => 2))); $form = new Form(); $form->setHydrator(new ObjectPropertyHydrator()); $form->add($mainFieldset); $market = new stdClass(); $prices = array(100, 200); $products[0] = new Product(); $products[0]->setPrice($prices[0]); $products[1] = new Product(); $products[1]->setPrice($prices[1]); $shop[0] = new stdClass(); $shop[0]->products = $products; $shop[1] = new stdClass(); $shop[1]->products = $products; $market->main = $shop; $form->bind($market); //test for object binding foreach ($form->get('main')->getFieldsets() as $_fieldset) { foreach ($_fieldset->getFieldsets() as $_nestedfieldset) { $this->assertInstanceOf('ZendTest\\Form\\TestAsset\\Entity\\Product', $_nestedfieldset->get('products')->getObject()); } } }