2016-01-16 85 views
1

我有一個這樣的用戶實體類: namespace AppBundle \ Entity;Symfony表單驗證基本表單

use Doctrine\ORM\Mapping as ORM; 
use Doctrine\ORM\Mapping\OneToOne; 
use Doctrine\ORM\Mapping\JoinColumn; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Entity 
* @ORM\Table(name="clients") 
*/ 
class Clients 
{ 
    /** 
    * @ORM\Column(type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @ORM\Column(type="string", length=255, nullable=false) 
    * @Assert\NotBlank(
    *  groups={"registration"}, 
    *  message = "Il campo nome non può essere vuoto." 
    *) 
    */ 
    private $name; 

然後,我有一個ClientsType這樣的:

namespace AppBundle\Form; 

use Symfony\Component\OptionsResolver\OptionsResolver; 
use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class ClientsType extends AbstractType { 

    public function buildForm(FormBuilderInterface $builder, array $options) { 
     $builder->add('name'); 
    } 

    public function getName() { 
     return "Clients"; 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
     'data_class' => 'AppBundle\Entity\Clients', 
     'validation_groups' => array('registration'), 
     )); 
    } 

} 

而且我我的控制器:

if ($request->isMethod('POST')) { 

     $client = new Clients(); 

     $form = $this->createForm(ClientsType::class, $client); 

     $form->handleRequest($request); 

     $data = $form->getData(); 
     print_r($data); 

     if ($form->isValid()) { 
      echo "yes"; 
     } 
      else{ 
      echo "no"; 
     } 

     die(); 
    } 

我我的觀點有一個簡單的HTML表單。

<input type="text" class="form-control" value="{{last_name}}" id="name" name="name" placeholder="Nome"> 

的問題是,如果我發送或不「名」我總是收到「不」 ......

謝謝...法比奧。

+0

? – xabbuh

+0

「$ res = $ form-> getErrors(); print_r($ res);」我收到一個loooooong響應(有一些對象...我認爲更多的2000行...沒有print_r是空的字符串)。如果我使用「$ form-> getErrorsAsString()」我收到了「試圖調用類」Symfony \ Component \ Form \ Form「中名爲」getErrorsAsString「的未定義方法。謝謝! – eclipse91

+0

我嘗試使用$ string =(string)$ form-> getErrors(true,false);但是我收到一個空字符串... :( – eclipse91

回答

0

我認爲該表單未被正確驗證,因爲模板中的輸入名稱是錯誤的,所以表單中沒有填充發布數據。嘗試改變name="name"name="Clients[name]"或發送您的表單模板$form->createView()和輸出什麼錯誤,不形式報告(使用`$ form`對象`getErrors()`或`getErrorsAsString()`)這個元素爲{{ form_widget(form.name) }}

+0

嗨,我改變我的形式

但不工作...我使用的測試現在只需如果($形式 - > isSubmitted())和結果是false ...謝謝你:( – eclipse91

+0

print_r輸出post數據?要查看錯誤,請添加此代碼foreach($ form-> getErrors(true)as $ error)echo $ error-> getMessage()。「
\ n」 ;'echo'no'後面'';' –

+0

我已經使用$ form-> createView(),現在我的驗證工作正常!謝謝! – eclipse91