Skip to content

Instantly share code, notes, and snippets.

@rkmax
Forked from webmozart/Controller.php
Created March 28, 2011 13:53
Show Gist options
  • Save rkmax/890489 to your computer and use it in GitHub Desktop.
Save rkmax/890489 to your computer and use it in GitHub Desktop.
<?php
protected function _editAction(Post $post)
{
$em = $this->get('doctrine.orm.default_entity_manager');
$factory = $this->get('form.factory');
$form = $factory->create(new PostFormType());
$form->setData($post);
if ($this->get('request')->getMethod() === 'POST') {
$form->bindRequest($this->get('request'));
if ($form->isValid()) {
$em->persist($post);
$em->flush();
return new RedirectResponse($this->generateUrl('hello_index'));
}
}
return $this->render('MyHelloBundle:Hello:edit.html.twig', array(
'form' => $factory->createRenderer($form, 'twig'),
));
}
<?php
namespace My\HelloBundle\Form;
use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\Type\AbstractType;
use My\HelloBundle\Entity\Comment;
class PostFormType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('title')
->add('file')
->add('content')
->add('abstract')
->add('enabled')
->add('publicationDateStart', 'date')
->add('commentsDefaultStatus', 'choice', array(
'choices' => Comment::getStatusCodes(),
))
// the second parameter, $type, is null because we use auto-creation
->add('tags', null, array(
'expanded' => true,
'multiple' => true,
))
->build('author', 'form', array('data_class' => 'My\HelloBundle\Entity\Author'))
->add('firstName')
->add('lastName')
->end();
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'My\HelloBundle\Entity\Post',
);
}
public function getName()
{
return 'postform';
}
}
{{ form.setTemplate(_self) }}
{{ form.enctype }}
{{ form.widget }}
{{ form.firstName.widget }}
{% for child in form %}
{{ child.widget }}
{% endfor %}
{{ form.firstName.widget({ 'class': 'foobar' }) }}
{{ form.firstName.label('My label') }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment