Lestah
Lestah

Reputation: 53

MethodNotAllowedHttpException this wont let me insert the data

I'm just trying to insert title and body using eloquent on database and MethodNotAllowedHttpException appears wont let me do it cause of that error

Here's the controller

public function store(Request $request)
    {

        $this->validate($request, array(
                'title' => 'required|max:255',
                'body' => 'required'
            ));

        $post = new Post; 

        $post->title = $request->title;
        $post->body = $request->body;

        $post->save();

        return redirect()->route('posts.show', $post->id);

    }

Here's my view create.blade.php

<form action="post.store" method="POST">
                <div class="form-group">
                    <label for="title">Title</label>
                    <input type="text" class="form-control" name="title" placeholder="Enter title">
                </div>
                <div class="form-group">
                    <label for="body">Body</label>
                    <textarea class="form-control" name="body" rows="3"></textarea>
                </div>
                <div class="form-group">

                    <input type="submit" class="btn btn-success btn pull-right" value="post">
                </div>
</form>

Upvotes: 0

Views: 357

Answers (3)

Vishal Varshney
Vishal Varshney

Reputation: 905

use in form action {{ route('posts.store') }}

Upvotes: 0

Riaz Laskar
Riaz Laskar

Reputation: 1322

i am assuming your are using resource route.

i think this <form action="post.store" method="POST"> should be <form action="{{ route('post.store') }}" method="POST"> and use this too {{ csrf_field() }} inside form otherwise you will get tokenmismatch error.

<form action="{{ route('posts.store') }}" method="POST">
{{ csrf_field() }}
                <div class="form-group">
                    <label for="title">Title</label>
                    <input type="text" class="form-control" name="title" placeholder="Enter title">
                </div>
                <div class="form-group">
                    <label for="body">Body</label>
                    <textarea class="form-control" name="body" rows="3"></textarea>
                </div>
                <div class="form-group">

                    <input type="submit" class="btn btn-success btn pull-right" value="post">
                </div>
</form>

Upvotes: 3

Sovary
Sovary

Reputation: 702

You may use command php artisan route:list and in column Name you will see route name and you will be able to call in view by {{ route('routename') }}

Example: In route list is shown posts.store, so you will call in view {{ route('posts.store') }}

I think you may call incorrect route by above route view is posts.show but when insert you called post.store maybe posts.store

Upvotes: 0

Related Questions