ひろこま Hack Log

プログラミングや機械学習などの知識を記録・共有します

Symfonyで $form->isValid() のエラー内容を表示したい

f:id:twx:20200122124712p:plain
Symfonyで $form->isValid() のエラー内容を表示したい

Symfonyとは

SymfonyとはWeb アプリケーションの開発のためのPHPフレームワークです。日本国内では主にEC-CUBEというeコマースCMSのフレームワークとしても使われていることで有名です。

その他の有名なWebフレームワークのひとつにRuby on Railsがありますが、Railsと同じ用にMVC構造になっているのでRailsを触ったことがある人は扱いやすいかもしれません。

フォームエラーのデバッグ方法

Symfonyで生成されたフォームに問題がある場合、$form->isValid() の値が false となります。例えば、フォームに適切な値が入力されていない、等の問題があった場合にfalseになります。

EC-CUBE4でも src/Eccube/Controller/Admin/Product/ProductController.php に以下のような記述があります。

if ($form->isValid()) {
    $Product = $form->getData();

...

}

この isValid() ですが、false になっているときに「一体なぜ」エラーとなっているのか、その原因を知りたいですよね。

その時は、Symfonyのデバッグモードが便利です。

Symfonyをデバッグモードで起動すると、ブラウザの画面右下の「sf」というマークが表示されます。

f:id:twx:20200122130220p:plain
右下のsfマーク

sfマークをクリックすると出てくるバーの中から、赤く表示されているアイコンをクリックしてください。

f:id:twx:20200122130522p:plain
メニューバーが表示され、エラーを表す赤いマークが見えます。

f:id:twx:20200122130150p:plain
エラー内容

このように、エラー内容がわかります。

今回の場合、sale_typeというデータが存在しないことがエラーの原因になっていました。

フォーム画面をカスタマイズしてエラーが出た際はこのデバッグモードを活用し原因特定をしていきましょう!


以上、Symfonyで $form->isValid() のエラー内容を表示する方法でした!

良い記事だと思っていただいた方は、以下の「★+」ボタンのクリック、SNSでのシェア、「読者になる」ボタンのクリック、Twitterのフォローをお願いします!

Koma Hirokazu 's Hacklog ―― Copyright © 2018 Koma Hirokazu