Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue with htmx redirection behavior when using PUT method #2496

Open
Luddinus opened this issue Apr 18, 2024 · 5 comments
Open

Issue with htmx redirection behavior when using PUT method #2496

Luddinus opened this issue Apr 18, 2024 · 5 comments

Comments

@Luddinus
Copy link

I'm currently facing an issue with htmx when using the PUT method in combination with redirection. Here's the scenario:

I have a form in my Laravel application that I'm submitting using htmx with the PUT method.
After submitting the form, if there are validation errors, Laravel redirects back to the form page with the errors.

Problem:

The issue arises when Laravel redirects back with the errors. Instead of making a GET request to the form page, htmx seems to make another PUT request to the form URL. This causes a "Method Not Allowed" error because the form URL only accepts GET requests.

I've also tested the behavior with the GET method, and everything works as expected. When submitting the form with the GET method and encountering validation errors, htmx correctly makes a GET request to the form page upon redirection.

My code is as simple as this

<form hx-put="/users/{{ $user->id }}">
   <input name="name" value="...">

   (render errors if any)
</form>

Thanks.

@mannih
Copy link

mannih commented Apr 19, 2024

What http status code is used for the offending redirect?

@Luddinus
Copy link
Author

What http status code is used for the offending redirect?

302, Laravel defaults when there are session errors (422 if the request expects a json, but not the case)

@defenestrator
Copy link

@Luddinus are you sending a HX-Redirect response header back from the server? I seem to remember needing to do that in Laravel for PUT and DELETE (possibly others) requests. Can we get a look at the relevant piece of your Laravel source?

@Luddinus
Copy link
Author

@mannih @defenestrator

Well, I solved this way:

<form hx-post="/users/{{ $user->id }}">
   @method('put')
   
   ...
</form>

@defenestrator
Copy link

@mannih @defenestrator

Well, I solved this way:

<form hx-post="/users/{{ $user->id }}">
   @method('put')
   
   ...
</form>

That actually makes sense, thanks for sharing your workaround/solution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants