私はLaravel 5.2を使用しています。私のインデックスページには、ライトボックスにフォームを表示する新しいエントリを追加するためのボタンがあります。このフォームは、createメソッドを使用して送信されます。Laravel 5.2エラーで返される - どのフォームが送信されたかを知る方法
また、このページには、インラインで編集できる機能があり、更新メソッドを使用して送信される各エントリがあります。
リクエストを介して検証をセットアップしました。これは、誰かが追加で何かを逃したときに、エラーのあるインデックスメソッドにリダイレクトすることを意味します。エラーは、ライトボックスがユーザーによってトリガーされたときにのみ表示されます。
私は$errors
を使用してエラーを確認できますが、作成エラーでライトボックスを表示させるために、作成フォームと更新フォームを区別する方法がわかりません。それを行う方法はありますか?
更新:
提案がリロード問題を回避するためにAJAXを使用しましたが、今私は422リターンを得ている:
AJAX呼び出し:
(function(){
var submitAjaxRequest = function(e){
var form = $(this);
var method = form.find('input[name="_method"]').val() || 'POST';
$.ajax({
type: method,
url: form.prop('action'),
data: form.serialize(),
success: function(data){
console.log(data)
}
});
e.preventDefault();
}
$('form[data-remote]').on('submit', submitAjaxRequest);
})();
要求:
public function response(array $errors)
{
$response = parent::response($errors);
if ($this->ajax() || $this->wantsJson()) {
return $response;
}
return $response->with('requestMethod', $this->method());
}
私もajax呼び出しをテストしており、検証規則が満たされてもうまく動作します。入力が正しくないと検証が戻った場合にのみ失敗します。
リクエスト、フォーム、およびコントローラのコードスニペットは、非常に便利です。 – Roman
'ajax'を使用できますか?この方法で、リロードについて心配する必要はありません。 –
@Ross Wilson - ajaxは、問題を取り除いて最も簡単な解決策になるかもしれません。私はそれを実行する前にフォームを区別する別の方法があるのだろうかと思っています。 – TH1981