SameController中的Laravel多路径

时间:2019-02-17 00:45:04

标签: php laravel

Route::get('/blog', 'BlogController@index')->name('blog');
Route::get('/blog/tag/{tag}', 'BlogController@index')->name('blog');
Route::get('/blog/category/{category}', 'BlogController@index')->name('blog');

我想将不同的URL重定向到同一控制器。

如果用户过滤了标签,请给我发送链接,例如:blog / tag / sample-tag

或类别:博客/类别/样本类别

或者如果用户想查看所有博客:博客

我想签入BlogController的index方法,例如:

if ($request->has('tag') // return tag's blog content
else if ($request->has('category') // return category's blog content
else // return all blog content.

Laravel 5.6。*

错误:

  

缺少[路由:博客] [URI:   Blog / category / {category}]

我这样叫:<li><a href="{{ route('blog') }}">BLOG</a></li>

3 个答案:

答案 0 :(得分:2)

最好将路由分为不同的控制器方法

// Define routes
Route::get('/blog', 'BlogController@index')->name('blog');
Route::get('/blog/tag/{tag}', 'BlogController@tag')->name('blog.tag');
Route::get('/blog/category/{category}', 'BlogController@category')->name('blog.category');

// Generate url
route('blog');
route('blog.tag', ['tag' => $tag]);
route('blog.categoru', ['category' => $category]);

答案 1 :(得分:0)

您可以使用 Route::get('/blog/{second?}/{third?}','BlogController@index')->where(['second'=>'tag|category']);

答案 2 :(得分:0)

最好将路线分开,但是您可以通过将模型注入到代码中的方法来实现,就像下面的代码一样:

storage_data_disk {
  name            = "${var.ax_base_hostname}-${count.index+1}-DISK-0"
  managed_disk_type = "Standard_LRS"
  create_option   = "Empty"
  lun             = 0
  disk_size_gb    = "1023"
}

storage_data_disk {
  name            = "${var.ax_base_hostname}-${count.index+1}-DISK-1"
  managed_disk_type = "Standard_LRS"
  create_option   = "Empty"
  lun             = 1
  disk_size_gb    = "1023"
}