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

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

Symfony 5 注冊表驗證不起作用

Symfony 5 注冊表驗證不起作用

PHP
慕仙森 2023-11-03 15:34:58
我剛剛第一次學習 Symfony。表單驗證沒有按預期工作,我實際上已經按照 Symfony 文檔留下了樣板代碼,我已經閱讀了其他堆棧溢出文章和文檔 10 遍,看看我是否錯過了一些東西,但我無法弄清楚??蛻舳蓑炞C已關閉,基本上可以很好地測試服務器端驗證。但是,當提交表單時,即使表單為空且數據無效,isValid() 方法也會返回 true。我在 Entity 和 formType 中添加了約束,但它只是繞過了所有內容,我知道這一點,因為異常是由數據庫或密碼編碼方法引發的。發現:當提交完全空的表單時:encodePassword() 會拋出異常,因為密碼字段為 null 并且它需要字符串,(它甚至不應該進入這個階段,因為我想象 isValid() 應該返回 false?)使用密碼和所有其他值作為空值提交:繞過所有內容,只有數據庫拋出異常。為 uniqueCode 提交錯誤的模式:驗證器甚至無法識別任何內容并每次都通過它handleRequest() 方法不會拋出任何異?;蚍祷?false,除了密碼,我收到一個非常丑陋的錯誤,說密碼的參數 2 不能為空,所以顯然驗證沒有發生, isValid() 返回 true。錯誤異常來自數據庫,當我嘗試插入具有錯誤模式的唯一代碼時,插入沒有問題,當名稱為空時,它通過驗證,但數據庫拋出異常,當密碼字段為空時,它仍然通過驗證,Symfony 文檔說:handleRequest() 方法將數據寫回同一個對象,然后我們驗證數據:“在上一節中,您學習了如何提交包含有效或無效數據的表單。在 Symfony 中,問題不在于“表單”是否有效,而在于底層對象(本例中的 $task)是否有效在表單應用提交的數據后有效。調用 $form->isValid() 是一個快捷方式,詢問 $task 對象是否具有有效數據。我嘗試查看 ValidatorInterface 文檔,但其中明確指出:“大多數時候,您不會直接與驗證器服務交互,也不需要擔心打印出錯誤。大多數時候,您將使用在處理提交的表單數據時間接驗證。有關更多信息,請參閱如何驗證 Symfony 表單?!蔽以谶@里缺少什么?
查看完整描述

1 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

這對于 Stackoverflow 來說并不是真正正確的格式,但我們可以看看在關閉之前我們能走多遠??赡苄枰^續訪問 Reddit Symfony 論壇。


從小事做起,讓以下行動發揮作用。請注意,沒有任何實體或其他東西正在發生。只是想讓自己相信驗證的基礎知識確實有效:


class RegistrationController extends AbstractController

{

    public function register(Request $request)

    {

        $form = $this->createFormBuilder()

            ->add('username', TextType::class, [

                'constraints' => new NotBlank(['message' => 'User name cannot be blank'])

            ])

            ->add('save', SubmitType::class, ['label' => 'Register'])

            ->getForm();


        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {

            dump('Validated');

        }

        return $this->render('user/register.html.twig',['form' => $form->createView()]);


    }

}


# user/register.html.twig

{% extends 'base.html.twig' %}


{% block body %}

    <h1>Register Form</h1>

    {{ form_start(form, {'attr':{'novalidate':'novalidate'}}) }}

    {{ form_end(form) }}

{% endblock %}


查看完整回答
反對 回復 2023-11-03
  • 1 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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