我在实现表单上传文件时遇到问题。 上传工作正常,但检查上传文件的扩展名并将错误添加到表单似乎有问题。
这是我的控制者:
public function add(Application $app) {
// Build the form
$addform = $app['form.factory']
->createNamed('addform', 'form')
->add('title', 'text', array(
'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('min' => 5)))
))
->add('content', 'textarea', array(
'constraints' => array(new Assert\NotBlank())
))
->add('images', 'file', array(
'constraints' => array(new Assert\NotBlank())
));
// Check file extension. If it's invalid, we'll manually add an error the form so that isValid() ends up returning false later one
$files = $app['request']->files->get($addform->getName());
if ($files['images'][0] !== null) {
foreach ($files['images'] as $image) {
if('.jpg' !== substr($image->getClientOriginalName(), -4)) {
$addform->get('images')->addError(new \Symfony\Component\Form\FormError('Only .jpg allowed'));
}
}
}
// Form was submitted: process it
$addform->handleRequest($app['request']);
// Form is valid
if ($addform->isValid()) {
// Add blogpost to database and save images
}
// Render the template with the form
return $app['twig']->render('admin/blog/add.twig', array(
'user' => $app['session']->get('user'),
'addform' => $addform->createView()
));
}
在我的twig文件中上传图片的部分如下所示:
<div class="form-group">
{{ form_label(addform.images) }}
{{ form_widget(addform.images, { 'full_name': addform.images.vars.full_name ~ '[]', 'attr' : { 'multiple': 'multiple' }} ) }}
{{ form_errors(addform.images) }}
</div>
我真的不明白我做错了什么。 我做了一个var_dump的addform-&gt; get ['images']并且错误肯定在那里,但是当我在我的twigfile中尝试转储addform.images时,没有错误的迹象。所以当然它不会显示错误。
我遇到的另一个问题是,在添加错误后表单仍然有效。所以我想手动添加错误不会使表单无效?