如何解决Symfony 验证错误:preg_match():编译失败:在偏移
当我验证从Symfony 2.x更新到Symfony 4.4的应用程序的运行时,出现以下错误。
我正在验证的功能是输入 ID“!”进行验证并验证验证是否正常工作。半角字母数字字符、下划线 (_)、连字符 (-) 和点 (.) 可用于目标区域。
有什么你能想到的吗?
我删除了 form.errors,但没有用。
错误
preg_match(): Compilation failed: range out of order in character class at offset 13
类型
$form->add("loginId",TextType::class,array(
"required" => false,));
$resolver->setDefaults(array(
'validation_groups' => function (FormInterface $form) {
$options = $form->getConfig()->getOptions();
$loginStaff = $options["login_staff"];
$staff = $form->getData();
return $this->getValidationGroups($loginStaff,$staff);
},));
private function getValidationGroups($loginStaff,$staff)
{
$validationGroups = array();
if ($loginStaff->isManage()) {
$validationGroups[] = 'manage';
}
if ($loginStaff->isHq()) {
if ($staff->getPassword()) {
$validationGroups[] = 'hqEdit';
} else {
$validationGroups[] = 'hqNew';
}
} else {
if ($staff->getPassword()) {
$validationGroups[] = 'shopEdit';
} else {
$validationGroups[] = 'shopNew';
}
}
return $validationGroups;
}
验证.yaml
getters:
loginId:
- Length: { max: 20,groups: [hqInitialSetting,shopInitialSetting,hqEdit,shopEdit] }
- Regex:
pattern: "/^[a-zA-Z0-9_-.]+$/"
groups: [hqInitialSetting,shopEdit]
员工.php
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use AppBundle\Model\Lib\Parameters;
use Symfony\Component\Security\Core\User\EquatableInterface;
use Symfony\Component\Security\Core\User\UserInterface;
/**
*
* @ORM\Entity(repositoryClass="AppBundle\Model\Repository\StaffRepository")
* @ORM\Table(name="staff",uniqueConstraints={
* @ORM\UniqueConstraint(name="idx_staff_unique",columns={"staff_login_id"}),* @ORM\UniqueConstraint(name="idx_image_mail_unique",columns={"image_mail"})
* })
* @ORM\HasLifecycleCallbacks
*/
class Staff implements AdvancedUserInterface,\Serializable,EquatableInterface
{
/**
* @ORM\Column(name="login_id",type="string",length=20,nullable=true,options={"comment"="ID"})
*/
protected $loginId;
树枝
{{ form_start(form) }}
{{ form_errors(form) }}
<div class="formGroup">
<div class="formGroup">
{{ form_label(form.loginId,'LOGIN ID') }}
{{ form_widget(form.loginId) }}
{{ form_errors(form.loginId) }}
</div>
</div>
{{ form_rest(form) }}
{{ form_end(form) }}
解决方法
我更改了正则表达式,效果很好。
由于php版本升级,正则表达式方法可能发生了变化。
pattern: "/^[a-zA-Z0-9-_.]+$/"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。