Laravel開発で注意したいmax_input_varsnの設定について
フォーム送信時に「一部の入力データが欠落する」「保存されない」といった現象が発生しました。
このようなケースでは、PHP の設定項目 max_input_vars の影響が考えられます。
自分の場合は下記のようにカラムの途中で切れて送信されなくなりました
[101] => Array
(
[name] =>
[name_for] =>
[edit_possible] => 01
[default_column] =>
[type] => 02
[type_contents] =>
[extended_column] =>
[extended_choice] =>
[status_detail] => 01
[list_order] =>
)
[102] => Array
(
[name] =>
[edit_possible] => 01
[default_column] =>
)
■ max_input_varsとは?
max_input_vars は、1つのリクエストで受け取れる input 要素の最大数を制限する PHP の設定値です。
デフォルト値は 1000でLaravelでは request() や $request->all()
に関係します。
この上限を超えると、それ以降の項目はサーバーに届かず、Laravel 側でも取得できないようになっているので注意が必要です。Laravelはこの制限を超えてもエラーを出さないため、原因に気付きにくいです。
■ 影響を受けやすい場面
多数のチェックボックス・テキストフィールドを含むフォーム
多次元配列形式の構造や一括更新など
■ 対策方法
PHP の設定にてmax_input_varsを変更して上限を緩和します。
自分の場合は、開発環境がテストのため極端にカラムが増えていただけだったため不要なものを削除しました。