У меня возникла проблема с созданием нового объекта Collection с формой. Я хочу создать новый объект Collection с формой, а затем перенаправить на страницу коллекций с помощью маршрута 'collection_user_collections' и увидеть новую коллекцию в списке коллекций пользователей. Но вместо того, чтобы при нажатии кнопки отправки на форме, я получаю следующее сообщение об ошибке:Symfony2: Невозможно создать новый объект с формой
No route found for "POST /profile/": Method Not Allowed (Allow: GET, HEAD)
Ниже мой код:
class Collection{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
private $name;
private $url;
private $type;
const STATUS_PRIVATE = 0;
const STATUS_PUBLIC = 1;
/**
* @ORM\ManyToOne(targetEntity="MyMini\UserBundle\Entity\User", inversedBy="collections")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
private $date_created;
private $date_modified;
/* getters and setters are here*/
}
Я использую CollectionType построить форму:
class CollectionType extends AbstractType{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name','text')
->add('type', 'choice', array('choices' => array(
Collection::STATUS_PRIVATE => 'Private',
Collection::STATUS_PUBLIC => 'Public',
)))
->add('save', 'submit', array('label' => 'Create Collection'))
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MyMini\CollectionBundle\Entity\Collection'
));
}
public function getName()
{
return 'mymini_collectionbundle_collection';
}
}
Этот is createAction, здесь я попытался вставить имя пользователя пользователя и дату, когда была создана сущность. Я использую FOSUserBundle для управления пользователями приложения:
/**
* @Route("/create-collection/", name="collection_create_collection")
* @Template()
*/
public function createAction(Request $request)
{
$collection = new Collection();
$user = $this->get('security.token_storage')->getToken()->getUser();
$username = $user->getUsername();
$form = $this->createForm(new CollectionType(), $collection);
$form->handleRequest($request);
if ($form->isValid() && $form->isSubmitted()) {
$em = $this->getDoctrine()->getManager();
$collection->setUser($user);
$collection->setDateCreated(new \DateTime());
$em->persist($collection);
$em->flush();
return $this->redirectToRoute('collection_user_collections', array('username' => $username));
}
return array('collection'=>$collection, 'form' => $form->createView());
}
Twig для формы:
<div class="collection-create">
<h3 id="create-collection">Create a collection</h3>
<a class="close-reveal-modal" aria-label="Close">×</a>
{{ form(form) }}
</div>
Можете ли вы дать нам веточку, где вы визуализируете форму? – AndreaPosadino