繁体   English   中英

从控制器访问Laravel路径或从路径传递参数到控制器

[英]Access Laravel route from controller or pass parameter to controller from route

我的图片库应用程序上有四条路线。 它们都是一样的:查询数据库并渲染图片。 它们之间的唯一区别是记录的顺序。 例如:

http://example.com/favorites : shows pics ordered by favorites
http://example.com/random    : shows pics ordered by random
http://example.com/votes     : shows pics ordered by votes
http://example.com/views     : shows pics ordered by views

为此,我想在我的图库控制器中使用一个动作并将顺序作为参数传递。

我知道我可以创建这条路线:

Route::get('/{orderby}', 'GalleryController@showPics')

然后从控制器获取参数:

class GalleryController extends BaseController
{
    public function showPics($orderby)
    {
        //query model ordering by $orderby and render the view
    }
}

问题是我不想捕获example.com/whatever,只有那四条特定的路由。

是否有一种方法可以将参数传递给路径中的控制器操作。 或者,或者,从控制器读取当前访问的路由?

您可以向路径添加参数约束,使用正则表达式限制可能的值,如下所示。

Route::get('/{orderby}', 'GalleryController@showPics')
    ->where('orderBy', 'favorite|random|vote|view');

如您所知,您将在映射的控制器操作中获取这些值:

public function showPics($orderby)
{
    dd($orderby); // favorite, random, vote or view.
}

您可以在文档中阅读有关参数路径约束的更多信息: http//laravel.com/docs/routing#route-parameters

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM