我的项目有问题我尝试将记录保存到数据库的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
- 在RouteCollection.php第218行
- 在RouteCollection-&gt; methodNotAllowed(数组(&#39; GET&#39;,&#39; HEAD&#39;,&#39; PUT&#39;, &#39; PATCH&#39;,&#39;删除&#39;))在RouteCollection.php第205行
- 在RouteCollection-&gt; getRouteForMethods(object(Request),array(&#39; GET&#39;, &#39; HEAD&#39;,&#39; PUT&#39;,&#39; PATCH&#39;,&#39;删除&#39;))在RouteCollection.php第158行
- 在RouteCollection-&gt;匹配(对象(请求))在Router.php第821行
- 在Router-&gt;在路由器.php第691行中的findRoute(对象(请求))
- 在Router.&gt; dispatchToRoute(对象(请求))在Router.php第675行
- at Router-&gt; dispatch(object(Request))在Kernel.php第246行
- at Kernel-&gt; Illuminate \ Foundation \ Http {closure}(object(Request))at Pipeline.php中的call_user_func(object(Closure),object(Request)) 第52行
- at Pipeline-&gt; Illuminate \ Routing {closure}(object(Request))in CheckForMaintenanceMode.php第44行
- 在CheckForMaintenanceMode-&gt;句柄(对象(请求), 对象(关闭)) call_user_func_array(阵列(对象(CheckForMaintenanceMode), 在Pipeline.php中处理&#39;),数组(对象(Request),对象(Closure))) 第136行
- at Pipeline-&gt; Illuminate \ Pipeline {closure}(object(Request))at Pipeline.php中的call_user_func(object(Closure),object(Request)) 第32行
- at Pipeline-&gt; Illuminate \ Routing {closure}(object(Request))at Pipeline.php中的call_user_func(object(Closure),object(Request)) 第102行
- at Pipeline-&gt;然后(对象(Closure))在Kernel.php第132行
- at Kernel-&gt; sendRequestThroughRouter(object(Request))在Kernel.php中 第99行
- 在index.php第53行中的Kernel-&gt;句柄(对象(请求))
醇>
答案 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很容易中断或者如果你在另一页上有相同的表格。