我正在继续学习symfony,这一次,我想收到任何关于如何在存储请求发布数据之前正确验证它的想法。我正在尝试尽可能小的控制器。我读过关于DTO的文章。(使用它来实现验证)。我还看到我们可以使用实体注释来验证请求。示例:
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
/**
* @Assert\NotBlank
*/
private $name;
}请给我一些例子,你如何在symfony rest api中验证传入的请求数据。作为一名Laravel开发人员,我可以说我们可以这样做:
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
// The blog post is valid...
}或者我们可以使用TypeHinting:
public function store(StorePostRequest $request)
{
// The incoming request is valid...
// Retrieve the validated input data...
$validated = $request->validated();
}我们如何在symfony中做到这一点,节省瘦控制器的想法?
发布于 2021-11-20 21:59:20
您可以在实体中使用Assert注释,在控制器中使用ValidatorInterface:
public function store(Request $request, ValidatorInterface $validator): json {
$author = new Author();
$author->setName($request->get('name'));
// ... Hydrate $author properties ...
$errors = $validator->validate($author);
if (count($errors) > 0) {
$errorsString = (string) $errors;
return $this->json(['status' => 'error', 'message' => $errorsString]);
}
return $this->json(['status' => 'success', 'author' => $author);
}https://stackoverflow.com/questions/70047470
复制相似问题