MethodNotAllowedHttpException

I am trying to update fields in the database, but I could not

here are my routes:

Route::get('orders', [
    'uses' => 'OrderController@postOrder',
    'as'   => 'order.show'
]);

      

here's the controller:

        public function postOrder()
    {
        $this->orderForm->validate(Input::all());
        $order = $this->orders->getNew([
            'link'       => Input::post('link'),
            'size'       => Input::post('size'),
            'color'       => Input::post('color')
        ]);
        $this->orders->save($order);
        return Redirect::back()->withMessage('Order has been updated');
    }

      

here is the blade:

{{ Form::open() }}
        <div class="box-body">
            <div class="row">
                <div class="col-lg-6">
                    <div class="form-group">

                        {{ Form::label('title', 'Product:') }}
                        {{ Form::text('title', $order->title, ['class' => 'form-control', ]) }}
                    </div>
                </div>
                <div class="col-lg-6">
                    <div class="form-group">
                        {{ Form::label('link', 'Link:') }}
                        {{ Form::text('link', $order->link, ['class' => 'form-control']) }}
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-lg-6">
                    <div class="form-group">
                        {{ Form::label('size', 'Size:') }}
                        {{ Form::text('size', $order->size, ['class' => 'form-control']) }}
                    </div>
                </div>
                <div class="col-lg-6">

            </div>
        </div>
        <div class="box-footer">
            {{ Form::submit('Save', ['class' => 'btn btn-primary']) }}
        </div>
        {{ Form::close() }}

      

so every time i try to update the order i got "MethodNotAllowedHttpException" error, i tried many methods but i got lost. I am still new to php and this problem is driving me crazy so I would be glad if you can help guys.

thank

*** I have updated the code

+3


source to share


3 answers


Just added this to the repository:

public function updateOrder($id, array $data)
{
    $orders = $this->getById($id);

    if (!empty($data['title'])) {
        $orders->title = $data['title'];
    }

    if (!empty($data['link'])) {
        $orders->link = $data['link'];
    }

  (AND SO ON)

    $orders->save();

      

and in the controller:



    public function postOrder($id)
{
    $this->orders->updateOrder($id, Input::all());

    return Redirect::back()->withMessage('Updated');
}

      

and that he

0


source


So, you send on the route /orders

. For this you will need HTTP POST request

. You are now submitting a GET

route request /orders

.

You need to change your code to:

Route::post('orders', [
    'uses' => 'OrderController@postOrder',
    'as'   => 'order.show'
]);

      



Also you need to add CSRF Token

, this can be done by adding {!! csrf_field() !!}

to your blade (inside your form open and closed).

{{ Form::open() }}
    {!! csrf_field() !!}
    <div class="box-body">
        <div class="row">
            <div class="col-lg-6">
                <div class="form-group">

                    {{ Form::label('title', 'Product:') }}
                    {{ Form::text('title', $order->title, ['class' => 'form-control', ]) }}
                </div>
            </div>
            <div class="col-lg-6">
                <div class="form-group">
                    {{ Form::label('link', 'Link:') }}
                    {{ Form::text('link', $order->link, ['class' => 'form-control']) }}
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-lg-6">
                <div class="form-group">
                    {{ Form::label('size', 'Size:') }}
                    {{ Form::text('size', $order->size, ['class' => 'form-control']) }}
                </div>
            </div>
            <div class="col-lg-6">

        </div>
    </div>
    <div class="box-footer">
        {{ Form::submit('Save', ['class' => 'btn btn-primary']) }}
    </div>
{{ Form::close() }}

      

Hope it works!

+2


source


You must specify the method in the Form :: open method.

{{ Form::open(array('method' => 'post')) }}

      

0


source







All Articles