Для Symfony 4.0 вам нужно импортировать компонент Validator.
composer require validator
Теперь в вашем классе Entity вы можете использовать аннотацию @Assert.
// src/Entity/Author.php
// ...
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
/**
* @Assert\NotBlank()
*/
public $name;
}
Возможно, вам потребуется добавить некоторую конфигурацию в файл config/packages/framework.yaml. Во всяком случае, все это прекрасно объяснено в официальной документации Symfony.
http://symfony.com/doc/current/validation.html
Чтобы проверить тип mime, вам нужно использовать ограничение File http://symfony.com/doc/current/reference/constraints/File.html
Вот рабочий пример
/**
* @ORM\Column(type="string", length=255)
* @var string
*/
private $cvFilename;
/**
* @Assert\File(
* maxSize = "2048k",
* mimeTypes = {"application/pdf", "application/x-pdf"},
* mimeTypesMessage = "Please upload a valid PDF"
* )
* @Vich\UploadableField(mapping="cv", fileNameProperty="cvFilename")
* @var File
*/
private $cvFile;
Теперь это правда, что внутри аннотации @Vich\UploadableField есть опция mime и size, как описано здесь https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md#step-2-link-the-upload-mapping-to-an-entity, но я не смог заставить это работать.
Аннотация @Assert будет генерировать ошибки Forms, которые вы можете извлечь в Twig, чтобы оставить отзыв.
Ключ в том, чтобы использовать: form_errors(candidature_form.cvFile)
вот рабочий пример:
{% set error_flag = form_errors(candidature_form.cvFile) %}
<label class=" {% if error_flag %}has-error{% endif %}">
Curriculum Vitae (PDF)
</label>
{{ form_widget(candidature_form.cvFile) }}
{% if error_flag %}
<div class="has-error">
{{ form_errors(candidature_form.cvFile) }}
</div>
{% endif %}
person
Kaizoku Gambare
schedule
16.01.2018