Masonite Route Параметры с косой чертой не работает - PullRequest
1 голос
/ 26 мая 2019

Мои маршруты:

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 Ответ

1 голос
/ 27 мая 2019

Да, для достижения этого у вас есть два варианта: использовать входные данные или создать компилятор маршрута

Использование входов

Вы можете заставить URL-адрес просто перейти к методу 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')

Теперь это скомпилирует это в заданное вами регулярное выражение, и теперь вы можете использовать маршруты, как и раньше.

...