Ограничения регулярных выражений Laravel Routing - работают не так, как ожидалось - PullRequest
0 голосов
/ 30 ноября 2018

Короткая версия:

Почему мое регулярное выражение не работает с:

->where('user', '^(?!(nova|nova-api)$).*$');

, но это работает:

->where('user', '^(?!nova).*$');

Длинная версия

Я установил Laravel Nova.

Nova регистрирует свои маршруты в самом конце (после web.php).Это приводит к проблеме, потому что мои пользователи имеют маршрут domain.com/username.

Теперь domain.com/nova не работает, но я переместил его на поддомен nova.domain.com.Однако API все еще приводит к проблеме.

Чтобы решить ее, я добавил эти ограничения «где», и теперь все работает.

//web.php
Route::prefix('/{user}')->group(function () {

    Route::get('/', 'Profile\ProfileController@index');

    Route::view('/{offer}', 'pages.offering.food.show') 
        ->where(['offer' => '.*'])
        ->where('user', '^(?!nova).*$');
});

Но это приводит к тому, что регулярное выражение не соответствует чему-то вроде noval.(Смотрите здесь )

Моя цель состоит в том, чтобы только nova или nova-api не соответствовали.

Мое текущее регулярное выражение для этой проблемы выглядит следующим образом: this :

^(?!(nova|nova-api)$).*$

Я обновил регулярное выражение, но по какой-то причине я получаю 404 для вызова ajax:https://nova.mydomain.test/nova-api/cards

//web.php
Route::prefix('/{user}')->group(function () {

    Route::get('/', 'Profile\ProfileController@index');

    Route::view('/{offer}', 'pages.offering.food.show')
        ->where([
           'anyfood' => '.*',
           'user' => '^(?!(nova|nova-api)$).*$'
        ]);
});

Я не понимаю, почему он не работает.

...