2013-07-30 8 views
0

Недавно я начал использовать Symfony2 для создания простого веб-приложения. Основные функции сохранения/получения данных из базы данных с помощью формы, позвольте мне добавить код FormType и контроллер:Как сохранить данные формы в базе данных

<?php 
class RegistroController extends Controller{ 

    public function registrofamAction(){ 
     $peticion = $this->get('request'); 
     $em = $this->get('doctrine')->getEntityManager(); 

     $familia = new Familia(); 

     $familia->setRol($rol='fam'); 

     $form = $this->get('form.factory')->create(
       new FamiliaType(), 
       array() 
       ); 


     $form->setData($familia); 

     if ($peticion->getMethod() == 'POST') { 
      $form->bind($peticion); 


      if ($form->isValid()) { 

       $familia->setProgenitor1($Nombrep1); 

       $em->persist($familia); 
       $em->flush(); 
      } 
     } 

     return $this->render('PreditBundle:Default:registro.html.twig', array('form' => $form->createView())); 
    } 




} 
?> 

Я знаю, что это будет легко, но я не ясно, как форма вернулся к вам. Является ли форма в $peticion? как я могу управлять информацией о форме и базой данных?

Спасибо за все!

ответ

0

Форма находится в переменной $form. Когда вы сначала запускаете контроллер, вы, вероятно, находитесь в режиме GET, и вы строите $form с новым Familia. Во втором вызове после выполнения POST в ветке вы получите bind данные запроса ($petition) на $form, который затем проверяется, и если все в порядке, вы сохраняете $familia, используя администратор сущности доктрины.

Что у вас есть типичный контроллер, который объясняется довольно хорошо в фреймворка книгах:

http://symfony.com/doc/current/book/forms.html

Внимательно прочитайте Symfony книгу http://symfony.com/doc/current/book/index.html Я знаю, что это довольно литература для чтения, но он хорошо платит так как это очень хорошо описано.

+0

Прежде всего, спасибо за внимание. Я недавно нашел проблему. Он не входит в if ($ form-> isValid()). Теперь, пытаясь выяснить, что не так в форме – Droyo

+0

, используйте '$ form-> getErrors()', чтобы получить ошибки проверки или вывести их в ветку. – saamorim

+0

@Droyo, вам удалось преодолеть вашу проблему? – saamorim

0

Здесь вы получите вы Formulaire с методом запроса, то данные теперь в вашей переменной $ петиций (вы можете отобразить этот вар, чтобы увидеть, как он построен)

Тогда вы «связывать» данные в вашей форме объект, и если это правильно, данные сохраняются

+0

Прежде всего, спасибо за внимание. Я недавно нашел проблему. Он не входит в if ($ form-> isValid()). Теперь я пытаюсь выяснить, что не так с формой – Droyo

+0

Вероятно, потому, что отправленные данные не являются правильными – Freelancer

Смежные вопросы