使用邮政形式在路线中发送slu ..

时间:2017-01-02 08:08:23

标签: php laravel-5 blade slug

我正试图在路线中发送{slug}:

Route::post('page-edit/{slug}', 'PageController@postSavePage');

在视图中我有:

{!! Form::open(array('action' => 'PageController@postSavePage')) !!}
控制器中的

public function postSavePage($slug = null){
dd($slug);
}

但我有错误:

Missing required parameters for [Route: ] [URI: page-edit/{slug}]. (View: /var/www/html/CMS/resources/views/admin/pages/page-edit.blade.php)

正确的语法是什么?

2 个答案:

答案 0 :(得分:1)

如果您希望slug为optional,则必须在routes.php文件的参数名称中添加问号(?)。

像这样:

Route::post('page-edit/{slug?}', 'PageController@postSavePage');

如果您不这样做,则必须将slug添加到表单的url中。像这样:

{!! Form::open(array('action' => array('PageController@postSavePage', 'slug'))) !!}

<强>更新

我认为您发送此请求的网页与您尝试发布的网址相同。在这种情况下,最好的办法是将表单的操作字段留空。这将确保表单提交到相同的URL。

所以你可以这样做:

{!! Form::open() !!}

答案 1 :(得分:0)

我认为您还缺少在刀片模板中发送{slug}参数:

{!! Form::open(array('action' => 'PageController@postSavePage', $slug))) !!}

在您的控制器中:

public function postSavePage($slug = null){
  // here's you can define $slug var, for example : 
  $slug = 3;
  return view('admin.pages.page-edit', compact('slug'));
}