you cannot set form method to put directly.
try this,
<form method="post" action="...">
@method('put')
....
....
</form>
Also as @snapey said, you should change the second one's method
My Form
<section id="contact">
<div class="container text-center">
@if (Session::has('flash_message'))
<div class="alert alert-primary" role="alert">
This is a primary alert—check it out!
</div>
@endif
<div class="row">
<div class="col-12 m-t-75">
<h1 class="abouttitle">Contact Us</h1>
</div>
</div>
<div class="row m-t-30">
<div class="col">
<form action="{{url('/#contact')}}" method="PUT" role="form">
{{csrf_field()}}
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Your Name *" value="" />
@if ($errors->has('name'))
<p class="help is-danger">{{$errors->first('name')}}</p>
@endif
</div>
<div class="form-group">
<input type="text" name="email" class="form-control" placeholder="Your Email *" value="" />
</div>
<div class="form-group">
<input type="text" name="phone" class="form-control" placeholder="Your Phone Number *" value="" />
</div>
<div class="form-group">
<input type="submit" name="submit" class="btnContact" value="Send Message" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<textarea name="message" class="form-control" placeholder="Your Message *" style="width: 100%; height: 150px;"></textarea>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
My Routes
Route::get('/#contact', 'ContactController@getContact');
Route::get('/#contact', 'ContactController@postContact');
My Controller
public function getContact()
{
return view('/#contact');
}
public function postContact(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email',
'phone' => 'required',
'message' => 'required'
]);
$data = array(
'name' => $request->name,
'email' => $request->email,
'phone' => $request->phone,
'subject' => $request->subject,
'msg' => $request->message
);
Mail::send('emails.contact', $data, function($message) use ($data) {
$message->from($data['email']);
$message->to('[email protected]');
$message->subject($data['subject']);
});
Session::flash('success', 'Your Email was Sent!');
return redirect('/#contact');
}
Hey @artisticre Your error is occurring because of the # on your route. The browser always sent the request to the base url. You should remove the # from your route.
Make your route like this
Route::get('/contact', 'ContactController@getContact');
Route::post('/contact', 'ContactController@postContact');
And form like this
<form action="{{url('/contact')}}" method="post" role="form">
It will solve the problem.
Please or to participate in this conversation.