【发布时间】:2015-07-03 02:14:41
【问题描述】:
我正在验证我在 Symfony 中的一个表单。我的表格为四个字段;前两个是相同的信息,可以是任何文本或天堂空。我的第三个字段是网站的 url,第四个是我的linkedin 的 url。
现在,我唯一的验证是我的两个 url 是以 http 或 https 开头的 url,但由于我的字段是 url 字段,它已经在开头添加了它,所以它基本上总是正确的我写。诅咒,如果我不放任何东西,它会起作用,但我想要那样。
如果有验证类可以帮助我进行更多验证,例如检查地址是否存在或者linkedin是否实际上是linkedin的url,我正在徘徊?
这是我的代码
表格:
<?php
namespace AdminBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
Class ModifierInfosType extends AbstractType
{
public function buildForm(FormBuilderInterface $constructeur, array $options)
{
$constructeur
->add('travailFr', 'text', array('label'=>'Travail (Fr)'))
->add('travailEn', 'text', array('label'=>'Travail (En)'))
->add('lien', 'url', array('label'=>'Lien travail'))
->add('linkedin', 'url', array('label'=>'LinkedIn'))
->add('Modifier', 'submit');
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AdminBundle\Entity\Infos',
));
}
public function getName()
{
return 'portfolio_modifier_info';
}
}
验证字段(PublicBundle\ressources\config\validation.yml):
PublicBundle\Entity\Infos:
properties:
lien:
- Url:
linkedin:
- Url:
【问题讨论】:
-
好吧,如果您想检查 url 是否真正响应,您可以尝试对给定 url 进行 curl 调用并检查它是否返回 2xx http 代码,检查自定义约束:symfony.com/doc/current/cookbook/validation/…
标签: forms validation symfony