Laravel 5.4把方法奇怪的行为

时间:2017-12-02 10:42:57

标签: php laravel-5

这是我的路线:

/*
 * Photos route group
 */
Route::group(['prefix' => 'admin/photos', 'middleware' => 'auth'], function(){

    Route::get('/edit/{id}', 'PhotoController@edit')->name('photos.edit');

    Route::get('/new', 'PhotoController@create')->name('photos.new');

    Route::get('/', 'PhotoController@index')->name('photos.show');

    Route::post('/', 'PhotoController@store')->name('photos.save');

    Route::put('/update/{id}', 'PhotoController@update')->name('photos.update');

});

这是照片模型中的更新方法:

    public function update(Request $request, Photo $photo, $id)
    {
        //return [$request->all(), $photo::all()];
        return $id;
    }

最后这是我的表单将被创建的地方

            <form action="{{ route('photos.update', ['id' => $photo->id]) }}">
                {{ method_field('put') }}
                {{ csrf_field() }}

但是当我使用此配置时,laravel返回methodNotAllowedException。当我将put方法更改为post时,同样会返回相同的结果,但当我将方法更改为get时,页面将正常工作。

我在web.php文件中对我的路线进行了重新排序,但问题又出现了。

你知道我的代码有什么问题吗?

注意:

我在其他模型中有一些其他更新方法,这些都没问题,这个问题仅针对此模型...

Thanks in Advance

1 个答案:

答案 0 :(得分:0)

一直尝试简单

roures.php

 Route::post('/photos/update', 'PhotoController@update');

view.blade.php

    <form action="/photos/update" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
    </form>

Controller.php这样

public function update(Request $request)    {
        //return [$request->all(), $photo::all()];
        return redirect('home');
    }