Laravel:将路由中的默认值传递给控制器

时间:2016-02-14 16:56:29

标签: routes laravel-5.2

我正在创建一个简单的应用程序,它使用单个db表来存储帖子类型。为了便于说明,我只需将其称为ArticleTweet

我正在尝试弄清楚如何在创建新记录时干净地将type传递给控制器​​。当然,我可以在表单中创建一个隐藏字段并在那里添加类型,但有人可以编辑它,我们会用错误的类型保留记录。

我更喜欢做的是这样的事情

Route::post('articles', 'PostsController@store')->where('type', 'article');
Route::post('tweets', 'PostsController@store')->where('type', 'tweet');

我尝试了以上操作,但在PostsController中一直收到错误。

这就是我想要实现的目标......

public function store($type, PostRequest $request)
{
    $input['type'] = $type;
    $input['title'] = $request->title;
    ...
}

我一直在寻找和玩很长一段时间,找不到任何有用的东西。这可能吗?

1 个答案:

答案 0 :(得分:0)

您似乎无法理解where如何使用路线。

where方法接受参数的名称和定义参数应该如何约束的正则表达式:

示例:

Route::post('tweets/{type}',  'PostsController@store') ->where('type', '[A-Za-z]+');

我认为这就是你所需要的:

 Route::post('posts/{type}',  'PostsController@store') ;

发布推文发送帖子请求到:

posts/tweet

或发布文章发送帖子请求。

posts/article