【问题标题】:Masonite Route Parameters with slash does not work带斜线的 Masonite 路由参数不起作用
【发布时间】:2019-05-26 17:15:30
【问题描述】:

我的路线:

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,因为它没有找到任何匹配的路由

【问题讨论】:

    标签: masonite


    【解决方案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')
    

    这将把它编译成你提供的正则表达式,你现在可以像以前一样点击路由。

    【讨论】:

      猜你喜欢
      • 2016-12-31
      • 2013-06-29
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2017-01-05
      相关资源
      最近更新 更多