Laravel在方法创建和存储

时间:2016-06-28 20:15:56

标签: php laravel

我的项目有问题我尝试将记录保存到数据库的write方法。我创建了控制器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行中的MethodNotAllowedHttpException

     
      
  1. 在RouteCollection.php第218行
  2.   
  3. 在RouteCollection-&gt; methodNotAllowed(数组(&#39; GET&#39;,&#39; HEAD&#39;,&#39; PUT&#39;,   &#39; PATCH&#39;,&#39;删除&#39;))在RouteCollection.php第205行
  4.   
  5. 在RouteCollection-&gt; getRouteForMethods(object(Request),array(&#39; GET&#39;,   &#39; HEAD&#39;,&#39; PUT&#39;,&#39; PATCH&#39;,&#39;删除&#39;))在RouteCollection.php第158行
  6.   
  7. 在RouteCollection-&gt;匹配(对象(请求))在Router.php第821行
  8.   
  9. 在Router-&gt;在路由器.php第691行中的findRoute(对象(请求))
  10.   
  11. 在Router.&gt; dispatchToRoute(对象(请求))在Router.php第675行
  12.   
  13. at Router-&gt; dispatch(object(Request))在Kernel.php第246行
  14.   
  15. at Kernel-&gt; Illuminate \ Foundation \ Http {closure}(object(Request))at   Pipeline.php中的call_user_func(object(Closure),object(Request))   第52行
  16.   
  17. at Pipeline-&gt; Illuminate \ Routing {closure}(object(Request))in   CheckForMaintenanceMode.php第44行
  18.   
  19. 在CheckForMaintenanceMode-&gt;句柄(对象(请求),    对象(关闭))    call_user_func_array(阵列(对象(CheckForMaintenanceMode),    在Pipeline.php中处理&#39;),数组(对象(Request),对象(Closure)))    第136行
  20.   
  21. at Pipeline-&gt; Illuminate \ Pipeline {closure}(object(Request))at    Pipeline.php中的call_user_func(object(Closure),object(Request))    第32行
  22.   
  23. at Pipeline-&gt; Illuminate \ Routing {closure}(object(Request))at    Pipeline.php中的call_user_func(object(Closure),object(Request))    第102行
  24.   
  25. at Pipeline-&gt;然后(对象(Closure))在Kernel.php第132行
  26.   
  27. at Kernel-&gt; sendRequestThroughRouter(object(Request))在Kernel.php中    第99行
  28.   
  29. 在index.php第53行中的Kernel-&gt;句柄(对象(请求))
  30.   

1 个答案:

答案 0 :(得分:2)

看起来资源路线上存在一些混淆......

在这里取消图表...... https://laravel.com/docs/5.2/controllers#restful-resource-controllers

/warehouse/create将是显示表单的路线,它是GET请求。您希望存储仓库,因此表单的网址应指向/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很容易中断或者如果你在另一页上有相同的表格。