2017-02-07 32 views
7

У меня есть приложение, искровой Laravel, и хотел бы использовать первые два параметра в маршруте для команды и проекта, с исключениями, такими как about_us, настройки и т.д. апиКак исключить слизней из шаблона маршрута Laravel

Я установил свои маршруты, похожие на:

Route::pattern('team', '[a-zA-Z0-9-]+'); 
Route::pattern('project', '[a-zA-Z0-9-]+'); 

Route::get('/home', '[email protected]'); 

Route::group(['prefix' => '{team}'], function() { 
    Route::get('/', '[email protected]'); 
    Route::group(['prefix' => '{project}'], function() { 
     Route::get('/', '[email protected]'); 
     ... 

//Spark defines routes such as /settings after the apps routing file is processed; 
//thus I cannot route to /settings as it's caught by /{team}. 

Я изо всех сил пытаюсь сделать одну из двух вещей. Либо, исключая такие значения, как «api», «settings» и т. Д. Из шаблона {team}; или запустите маршруты Laravel Spark перед моими веб-маршрутами, чтобы я мог убедиться, что все допустимые маршруты проверены перед catch/all/{team}.

Любые идеи были бы оценены!

+0

Сначала определите статические маршруты и поместите эту группу в самый конец. Это идеальный подход, поскольку порядок маршрутизации имеет значение. –

+0

Привет, Крис, это был бы мой обычный подход, но, конечно же, Spark статические маршруты, которые Spark определяет, не находятся в вашем файле маршрутов web.php; они где-то в другом месте. – Kurucu

ответ

2

кажусь решил его, используя следующую схему:

Route::pattern('team', '(?!^settings$)([a-zA-Z0-9-]+)'); 

Для тех, кто новичок в вопросе, принципы заключаются в следующем. В простой установке Laravel вы можете переупорядочить маршруты, чтобы убедиться, что они обработаны в правильном порядке, добавив подстановочные знаки после ваших фиксированных маршрутов.

С помощью Spark в пакете Spark имеется целый ряд маршрутов. Предпочитая не вмешиваться в это, позволяя более легким обновлениям Spark позже, помимо прочего, можно использовать route pattern, чтобы ограничить допустимые значения для вашего параметра. Таким образом, с некоторым Googling на RegExs, я, кажется, нашел шаблон, который будет исключать слизняки, сопоставляемые с моим параметром {team}.

Я считаю, что добавление большего количества исключений так же просто, как и вставка оператора трубы.

Это также очевидно работает на стандартных установках Laravel, но переупорядочение ваших маршрутов, вероятно, является лучшим первым вызовом.

0

Необходимо определить маршруты, которые вы хотите исключить первым. Затем определите свои рисунки под ними. Они будут иметь приоритет над шаблонами, потому что в маршрутах Laravel оцениваются в верхнем и нижнем порядке.

+0

Привет и спасибо. В Spark есть определенные предопределенные маршруты (например,/settings), которые не находятся в файле веб-маршрутов - инфраструктура вызывает их после файла маршрутов.Поэтому мой вопрос заключается в том, чтобы использовать шаблон, чтобы исключить их, или зная, как получить структуру для запуска маршрутов Spark. – Kurucu

5

Одно из предложений, которое у меня было бы, - это иметь префикс teams, после чего имя команды после этого вы можете захотеть добавить больше видов уловки, как это для другого раздела, и столкнуться с большим количеством проблем линия. Возможно, перечисление всех teams с использованием индекса этого закрытия может принести пользу админам системы?

Если вы хотите продолжить движение по этому маршруту, загляните в ваш config.app.php, я считаю, что переключение на следующие два провайдера вполне может достигнуть того, что вам нужно. Конечный результат заказа:

App\Providers\SparkServiceProvider::class, App\Providers\RouteServiceProvider::class,

Я использую последнюю версию Спарк после недавнего установить сам, это, кажется, по умолчанию теперь извинения, если это красно-селедка!

+0

Я попытался переключить их на другой день, и это не имело значения (что меня тоже удивило). Я дам ему еще один ответ и отчитаюсь. – Kurucu

+0

Попробуйте удалить кеш сервис-провайдеров: bootstrap/cache/services.php –

+0

Я сделал, и это не имело значения. – Kurucu