Laravel在create和store方法中返回未知错误


Laravel returned unknown error in method create and store

我有一个问题与我的项目,我尝试写方法保存记录到数据库。我创建了控制器ProductsController,其中我添加了方法:

public function create(){
        $articles = Article::lists('article_name', 'id');
        $categories = Category::lists('category_name', 'id');
        $date = Carbon::now();
        $minDate = Carbon::minValue($date);
        return view('pages.createproduct', compact('articles', 'categories', 'date', 'minDate'));
    }
    public function store(CreateProductRequest $request){
        dd($request->article_name);
        $product = new Product($request->all());
        Auth::user()->products()->save($product);
        return redirect('warehouse');
    }

接下来我创建了文件createproduct.blade.php:

{!! Form::open(['url' => 'warehouse/create', 'class' => 'form-horizontal']) !!}
        {!! Form::select('article_name[]', $articles, NULL, ['class' => 'form-control']) !!}<br />
        {!! Form::select('category_name[]', $categories, NULL, ['class' => 'form-control']) !!}<br />
        {!! Form::text('sn', null, ['class' => 'form-control', 'placeholder' => 'Podaj serial...']) !!}<br />
        {!! Form::number('quantity', null, ['class' => 'form-control', 'min' => '1', 'placeholder' => 'Podaj ilość...']) !!}<br />
        {!! Form::date('warranty', $date, ['class' => 'form-control', $minDate]) !!}<br />
        {!! Form::submit('Dodaj', ['class' => 'btn btn-default']); !!}
{!! Form::close() !!}

我的routes.php文件是这样的:

Route::get('/contact', 'PagesController@contact');
Route::resource('/addarticle', 'ArticlesController');
Route::resource('/addcategory', 'CategoriesController');
Route::resource('/warehouse', 'ProductsController');
Route::auth();
Route::get('/home', 'HomeController@index');

当我当我想保存记录到数据库Laravel返回一个错误:

RouteCollection.php第218行

  1. 在RouteCollection.php第218行
  2. at RouteCollection-> methodnotalallowed (array('GET', 'HEAD', 'PUT'),'PATCH', 'DELETE'))在RouteCollection.php第205行
  3. 在RouteCollection->getRouteForMethods(对象(请求),数组('GET','HEAD', 'PUT', 'PATCH', 'DELETE'))在RouteCollection.php行158
  4. at RouteCollection->match(object(Request)) in Router.php第821行
  5. at Router->findRoute(object(Request)) in Router.php第691行
  6. at Router->dispatchToRoute(object(Request)) in Router.php行675
  7. at Router->dispatch(object(Request)) in Kernel.php第246行
  8. at Kernel->Illuminate'Foundation'Http{closure}(object(Request)) at在Pipeline.php中调用call_user_func(object(Closure), object(Request)线52
  9. at Pipeline->Illuminate'Routing{closure}(object(Request)) inCheckForMaintenanceMode.php第44行
  10. CheckForMaintenanceMode ->处理(对象(请求),对象(关闭)(CheckForMaintenanceMode中的call_user_func_array(数组(对象),'handle'), array(object(Request), object(Closure))第136行
  11. at Pipeline->Illuminate'Pipeline{closure}(object(Request)) at在Pipeline.php中调用call_user_func(object(Closure), object(Request)第32行
  12. at Pipeline->Illuminate'Routing{closure}(object(Request)) at在Pipeline.php中调用call_user_func(object(Closure), object(Request)第102行
  13. at Pipeline->then(object(Closure)) in Kernel.php行132
  14. at Kernel->sendRequestThroughRouter(object(Request)第99行
  15. at Kernel->handle(object(Request)) in index.php第53行

看起来资源路由有些混乱…

在这里离开图表…https://laravel.com/docs/5.2/controllers restful-resource-controllers

/warehouse/create将是显示表单的路由,它是GET请求。您想要存储仓库,所以您的表单的URL应该指向/warehouse,它应该是POST请求。

考虑到这一点,你应该改变…

{!! Form::open(['url' => 'warehouse/create', 'class' => 'form-horizontal']) !!}

{!! Form::open(['route' => 'warehouse.store', 'method' => 'post', 'class' => 'form-horizontal']) !!}

请注意,我也把url改为route,因为它更安全一点,允许Laravel为你生成URL,而不是使用相对URL,如果你的路由因某种原因改变,或者如果你在另一个页面上有相同的表单,相对URL很容易中断。