1
votes

Please help. I cannot create new object. This is the form where the painting will be created. When I open the website it says MethodNotAllowedHttpException and have no message.

In web.php (route)

Route::post('store','PaintingController@store');

In controller

        $last_line = DB::table('art_objs')->orderBy('Id_no', 'DESC')->first();
        $last = $last_line->Id_no;

        $art_objs = new Art_obj(
            ['Artist' => $request->get('Artist'),
            'Year' => $request->get('Year'),
            'Title' => $request->get('Title'),
            'Description' => $request->get('Description'),
            'Origin' => $request->get('Origin'),
            'Epoch' => $request->get('Epoch'),
            'Type_of_art'=>'1',
            'Type_of_coll'=>$request->input('Type_Coll'),
        ]);
        $art_objs->save();

In blade

<form method="post" action="store">  {{csrf_field()}} 
                <div class="form-group">
                    <label> Title: </label> <input type="text" name="Title" class="form-control" placeholder="Title"/> 
                </div>
                <div class="form-group">
                    <label> Artist: </label> <input type="text" name="Artist" class="form-control" placeholder="Artist" /> 
                </div>
                <div class="form-group">
                    <label> Year: </label> <input type="text" name="Year" class="form-control" placeholder="Year"/> 
                </div>
                <div class="form-group">
                    <label> Origin: </label> <input type="text" name="Origin" class="form-control" placeholder="Origin"/> 
                </div>
                <div class="form-group">
                    <label> Epoch: </label> <input type="text" name="Epoch" class="form-control" placeholder="Epoch"/> 
                </div>
                <div class="form-group">
                    <label> Description: </label> <textarea name="Description" class="form-control" rows="5" placeholder="description"></textarea> 
                </div>
                <div class="form-group">
                <label> Paint type: </label><input type="text" name="Paint_type" class="form-control" placeholder="Paint type"/> 
                </div>
                <div class="form-group">
                <label> Drawn on: </label><input type="text" name="Drawn_on" class="form-control" placeholder="Drawn on" /> 
                </div>
                <div class="form-group">
                <label> Style: </label><input type="text" name="Style" class="form-control" placeholder="Style"/> 
                <div class="form-group"> 
                    <input type="submit" class="btn btn-primary" value="CREATE" /> 
                </div>
                <input type="hidden" name="_method" value="PATCH" /> 
            </form>

enter image description here

3
Could you post php artisan route:list output?AnTrakS
MethodNotAllowedHttpException means that it can't find the route with the right method. Put a slash before store in your form (action="/store"), so that it won't try to use a subdirectory route.aynber
I have add php artisan route:list output in the post.Marimokung

3 Answers

1
votes

Remove the following from your form:

<input type="hidden" name="_method" value="PATCH" />
2
votes

Your url should be /painting instead of store. Please try:

<form method="post" action="/painting"> 
0
votes

You used PATCH method then you should change the route to this:

Route::patch('store','PaintingController@store');