2017-08-25 117 views
1

我想有一些我錯過了。 我有一個用戶實體,它通過yml文件進行驗證,但每次我向路由發送郵寄請求時,似乎都不會收到我的請求。有了這個我的意思是路線工作正常,但我不斷收到錯誤消息,密碼和用戶名不應該是空的(由於我設置的限制)。所以它似乎沒有讓我的請求對實體進行驗證。symfony驗證不起作用

我就確定在我的配置觸發此設置: validation: { enabled: true, enable_annotations: true }

這裏是我的routing.yml

user_login_homepage: 
    path:  /check 
    defaults: { _controller: UserLoginBundle:Login:checkCredentials } 
    methods: [POST] 

這裏是我的validation.yml

User\UserBundle\Entity\User: 
    properties: 
     username: 
      - NotBlank: ~ 
     password: 
      - NotBlank: ~ 

這裏是我的控制器( LoginController.php

public function checkCredentialsAction(Request $request) 
{ 
    $recursiveValidator = $this->get('validator'); 

    $user = new User(); 

    $errors = $recursiveValidator->validate($user); 

    if (count($errors) > 0) { 
     $errorsString = (string) $errors; 
     return new Response($errorsString); 
    } 

    return new Response('Yuppy'); 
} 

我只是試圖按照說明,但我不能讓它的工作:( 我錯過了什麼?

回答

2

要創建一個空的用戶所以它是正確的錯誤,試試這個(我有想象的用戶名和密碼被傳遞到POST數據吧?):

$user = new User(); 
$postData = $request->request->all(); 
$user->setUsername($postData['username']; 
$user->setPassword($postData['password']; 

$errors = $recursiveValidator->validate($user); 
+0

呀非常感謝。是的,他們正在通過POST。只是一個有關你的解決方案的問題。不是以這種方式將這些數據保存在表格中嗎? –

+0

通過這種方式,你填寫實體,檢查錯誤,然後你可以保存它或你想要的,如果你使用的是symfony表單,你可以自動填寫表單所傳遞的表單 –

+0

是的,我知道但是這個差別情況在於我沒有使用表格,所以它有點不同! 乾杯人! :) –