/ / Ako vylúčiť slimáky zo vzoru trasy Laravel - laravel, smerovanie larvami, laravel-5.4, larvická iskra

Ako vylúčiť slimáky z trasy Laravelu - laravel, laravel-routing, laravel-5.4, laravel-spark

Mám aplikáciu Laravel Spark a rád by som použil prvé dva parametre na trase pre tím a projekt, s výnimkami ako about_us, settings, api atď.

Svoje trasy som si nastavil podobne:

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

Route::get("/home", "HomeController@show");

Route::group(["prefix" => "{team}"], function () {
Route::get("/", "TeamController@dashboard");
Route::group(["prefix" => "{project}"], function () {
Route::get("/", "ProjectController@dashboard");
...

//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}.

Snažím sa urobiť jednu z dvoch vecí. Vylúčte zo vzoru {team} hodnoty ako "api", "nastavenia" atď. alebo nechajte trasy Laravel Spark bežať pred mojimi webovými trasami, aby som mohol zaistiť, aby sa skontrolovali všetky platné trasy pred úplným spustením / {team}.

Akékoľvek nápady by boli ocenené!

odpovede:

5 pre odpoveď č. 1

Jedným z návrhov, ktoré by som mal, je zvážiť použitie predpony teams, potom po názve tímu, možno budete chcieť pridať ďalšie druhy podobných zachytení do inej sekcie a naraziť na ďalšie problémy. Možno zoznam všetkých teams použitie indexu tohto uzavretia by mohlo byť prínosom aj pre správcov systému?

Ak by ste chceli pokračovať touto cestou, pozrite si svoju config.app.php„Verím, že prechod medzi nasledujúcimi dvoma poskytovateľmi môže dobre dosiahnuť to, čo hľadáte. Poradie konečných výsledkov:

AppProvidersSparkServiceProvider::class, AppProvidersRouteServiceProvider::class,

Používam najnovšiu verziu programu Spark aj po nedávnej inštalácii. Zdá sa, že teraz ide o predvolenú verziu. Ospravedlňujeme sa, ak ide o sleďa obyčajného!


2 pre odpoveď č. 2

Zdá sa, že som to vyriešil pomocou tohto vzoru:

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

Pre tých, ktorí sú novou otázkou,princípy sú nasledujúce. V obyčajnej inštalácii Laravel by ste mohli zmeniť poradie svojich trás, aby ste sa uistili, že sú spracované v správnom poradí a za pevné trasy by ste umiestnili zástupné znaky.

S programom Spark existuje celá rada trászapuzdrené v balení Spark. Radšej sa s tým nebudeme hádať, čo okrem iného umožní ľahšie aktualizácie Sparkov, je možné použiť vzor trasy obmedziť prijateľné hodnoty pre váš parameter. Zdá sa, že u niektorých zamestnancov spoločnosti Google v RegExs som našiel vzorec, ktorý vylúči slugety zodpovedajúce môjmu parametru {team}.

Domnievam sa, že pridanie ďalších vylúčení je rovnako ľahké ako vloženie prevádzkovateľa potrubia.

To by samozrejme fungovalo aj na štandardných Laravelových inštaláciách, ale zmena poradia vašich trás je pravdepodobne lepšia prvá výzva.


0 pre odpoveď č. 3

Mali by ste definovať trasy, ktoré chcete vylúčiťnajprv. Potom definujte svoje vzory pod nimi. Budú mať prednosť pred vzormi, pretože v Laravelských trasách sa hodnotia zhora nadol.