亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用rest api提交表單時正在跳過驗證

使用rest api提交表單時正在跳過驗證

PHP
一只甜甜圈 2022-01-02 17:23:39
我有這個表格:    class RegistrationFormType extends AbstractType    {    /**     * @param FormBuilderInterface $builder     * @param array                $options     */    public function buildForm(FormBuilderInterface $builder, array $options)    {        $builder            ->add('email', EmailType::class, [                'constraints' => [                    new NotBlank(),                ]            ])            ->add('username')            ->add('password')        ;    }    /**     * {@inheritdoc}     */    public function getBlockPrefix()    {        return 'app_user_register';    }    public function configureOptions(OptionsResolver $resolver)    {        $resolver->setDefaults([            'data_class' => User::class,            'allow_extra_fields' => true,            'csrf_protection' => false,        ]);    }}我在控制器中的 api:/** * @Route("/api/register") * @Method("POST") * @param Request $request * * @return JsonResponse */public function register(    UserService $userService,    Request $request){    try {         return $userService->register(json_decode($request->getContent(), true));    } catch (\Exception $e) {        return $this->json([            'status' => Response::HTTP_INTERNAL_SERVER_ERROR,            'result' => $e->getMessage()        ]);    }}我的服務職能:public function register($formData){    $user = new User();    $form = $this->formFactory->create(RegistrationFormType::class, $user);    $form->submit($formData);    if ($form->isSubmitted() && $form->isValid()) {        $this->entityManager->persist($user);        $this->entityManager->flush();        return new JsonResponse([            'status' => Response::HTTP_OK,            'result' => true        ]);    }當我嘗試在郵遞員中調用 api /api/register 時{    "username": "test1",    "email": "test1",    "password": "123456"}我得到200 code,但通常應該刪除錯誤,因為電子郵件無效,因為我在表單創建中設置了字段電子郵件應該采用電子郵件格式,即使我在電子郵件中放入一個空字符串,我也會得到200 code. 所以似乎驗證不起作用。
查看完整描述

2 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

EmailType,據我所知,沒有默認約束。但是,您通過要求它來覆蓋約束,NotBlank這絕對與Email約束不同。表單確實添加type="email"瀏覽器將強制執行的 html (這在技術上是不可靠的,因為用戶可以將其轉換為文本字段)。

解決方案可能是使用Email約束并將required屬性設置為true.


查看完整回答
反對 回復 2022-01-02
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

嘗試 :


       ->add('email', EmailType::class, [

            'constraints' => [

                new NotBlank(),

                new Email(),

            ]

        ])

并添加到您的實體:


 /**

 * @Assert\Email(

 *     message = "The email '{{ value }}' is not a valid email.",

 *     checkMX = true

 * )

 */

protected $email;


查看完整回答
反對 回復 2022-01-02
  • 2 回答
  • 0 關注
  • 171 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號