带有斜杠的 Masonite 路由参数不起作用
Masonite Route Parameters with slash does not work
我的路线:
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/
我需要做哪些不同的事情? params 中的斜杠重定向到 404,因为它没有找到任何匹配的路由
是的,为了实现这一点,您有两个选择:使用输入或创建路由编译器
使用输入
你可以让 url 简单地转到 info
方法,在 url 中没有什么特别的:
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')
这会将其编译到您提供的正则表达式中,您现在可以像以前一样点击路由。
我的路线:
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/
我需要做哪些不同的事情? params 中的斜杠重定向到 404,因为它没有找到任何匹配的路由
是的,为了实现这一点,您有两个选择:使用输入或创建路由编译器
使用输入
你可以让 url 简单地转到 info
方法,在 url 中没有什么特别的:
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')
这会将其编译到您提供的正则表达式中,您现在可以像以前一样点击路由。