Professional Documents
Culture Documents
Andrea Giuliano
@bit_shark
SYMFONYDAY 2013
Tree
Abstract Data Structure
Tree: Abstract data Type
Form
Form
namespace MyApp\MyBundle\Form;!
!
use Symfony\Component\Form\AbstractType;!
use Symfony\Component\Form\FormBuilderInterface;!
use Symfony\Component\OptionsResolver\OptionsResolverInterface;!
!
class MeetingType extends AbstractType!
{!
public function buildForm(FormBuilderInterface $builder, array $option)!
{!
$builder->add('name', 'string');!
$builder->add('when', 'date');!
$builder->add('featured', 'checkbox');!
}!
!
public function getName()!
{!
return 'meeting';!
}!
}
Meeting
form
Meeting
form
Name
string
$builder->add('name', 'string')
Meeting
form
$builder->add('when', 'date')
Name Date
string date
$builder->add('featured', 'checkbox')
Meeting
form
???
Meeting
widget View Data input Model Data
form
array array
timestamp integer
$builder->add('when', 'date')
Meeting
widget View Data input Model Data
form
array array
timestamp integer
$form->getNormData()
transform() transform()
reverseTransform() reverseTransform()
in case of dependencies?
<service id="dnsee.type.my_text" !
class="Dnsee\MyBundle\Form\Type\MyTextType">!
<argument type="service" id="dnsee.my_awesome_manager"/>!
<tag name="form.type" alias="my_text" />!
</service>
$form->setData($symfonyDay);
PRE_SET_DATA
meeting [Form]
child
POST_BIND
PRE_BIND
child
meeting [Form]
BIND
namespace Acme\TestBundle\Tests\Form\Type;!
!
use Acme\TestBundle\Form\Type\TestedType;!
use Acme\TestBundle\Model\TestObject;!
use Symfony\Component\Form\Test\TypeTestCase;!
!
class MeetingTypeTest extends TypeTestCase!
{!
public function testSubmitValidData()!
{!
!
[...]!
test form view creation
!
$view = $form->createView();!
$children = $view->children;!
!
foreach (array_keys($formData) as $key) {!
$this->assertArrayHasKey($key, $children);!
}!
}!
}!
Andrea Giuliano
@bit_shark
References
https://speakerdeck.com/webmozart/symfony2-form-tricks
http://www.flickr.com/photos/yahya/132963781/
http://www.flickr.com/photos/lutherankorean/2694858251/
http://www.flickr.com/photos/lauroroger/8808985531/
http://www.flickr.com/photos/gifake/4643253235/
http://www.flickr.com/photos/zorin-denu/5222189908/
http://www.flickr.com/photos/aigle_dore/10014783623/
http://www.flickr.com/photos/skosoris/4985591296/
http://www.flickr.com/photos/sharynmorrow/248647126/