带斜线的Masonite路线参数不起作用

时间:2019-05-26 17:15:30

标签: masonite

我的路线:

Get().route('/amp/@website', 'PageController@amp_info').name('amp_info'),
Get().route('/@website', 'PageController@info').name('info')

这有效:https://websiteopedia.com/www.eventsnow.com 这不是https://websiteopedia.com/https://www.eventsnow.com/

我需要做些什么?参数中的斜杠未找到匹配的路由而重定向到404

1 个答案:

答案 0 :(得分:1)

是的,要实现此目的,您有两个选择:使用输入或创建路由编译器

使用输入

您可以使网址简单地转到info方法,而网址中没有任何特殊内容:

Get().route('/', 'PageController@info').name('info')

然后,您可以打https://websiteopedia.com/?website=https://www.eventsnow.com/

之类的路线

然后在info方法中,您将像往常一样获得输入:

def info(self, request: Request):
    request.input('website') #== 'https://www.eventsnow.com/'

路由编译器

路由编译器只是在URL中编译正则表达式的一种方法。您可以使用服务提供商中的一种引导方法来制作新的编译器。

这个新的编译器看起来像这样:

def boot(self, view: View):
    view.compile('url', r'([^\s]+)')

然后您可以像这样构造路线:

Get().route('/@website:url', 'PageController@info').name('info')

现在,它将把它编译到您提供的正则表达式中,您现在可以像以前一样点击路由了。