BourneShady
BourneShady

Reputation: 935

Add method 'put' to a url in laravel 4.2

I'm trying to change the status of a database record with just a button click so far I have this:

view

<td>

            <a class="btn btn-small btn-warning" href="{{ URL::to('brands/'.$value->BrandID.'/archive') }}">Archive  </a>



        </td>

controller

public function archive($id)
{
    $rules= array ('BrandName' =>'required | max:20',);
    $validator = Validator::make(Input::all(), $rules);

    if($validator->fails())
    {
        return Redirect::to('brands.view')
        ->withErrors($validator);

    } else {

        DB::table('tbl_brands')->where('BrandID' , $id)
        ->update(
            array
            (
                'Status' => 'Archived'
            ));

        Session::flash('message','Successfully Archived!');
        return Redirect::to('brandsview');
    }
}

and the route

Route::put('brands/{id}/archive', array('as' => 'Brandarch', 'uses'=>'BrandsController@archive'));

and my error what method exception. I scrolled down a bit and saw that in the errors, the http request is 'get' which I know should be 'put' any ideas on how to properly execute this?

Upvotes: 0

Views: 196

Answers (1)

Mahmoud Tantawy
Mahmoud Tantawy

Reputation: 713

You will need to change your hyperlink to a submit form in a form with hidden field with name _method, only this way you can control HTTP method used.

For example:

<form action="{{ URL::to('brands/'.$value->BrandID.'/archive') }}" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <input type="submit" value="Archive">
</form>

Upvotes: 1

Related Questions