Routing-Variablenregeln


Routing-Variablenregeln

Master-Routing-Regeln, Sie sollten über Grundkenntnisse in regulären Ausdrücken verfügen.

Die Standardeinstellung für die Variablenregel des Systems ist w , die nur Buchstaben, Zahlen, chinesische Zeichen und Unterstriche zulässt, nicht aber Sonderzeichen und andere Zeichen , die Variablenregeln definieren oder die Standardvariablenregeln anpassen müssen.

Sie können die Standardvariablenregeln in der Routing-Konfigurationsdatei anpassen, z. B. das Hinzufügen von Übereinstimmungen mit Unterstrichen:

'default_route_pattern'	=>	'[\w\-]+',

Unterstützt die Angabe variabler Regeln beim Regelrouting, wodurch die Unfähigkeit, die Dynamik einzuschränken, ausgeglichen wird Variablen Spezifische Typprobleme und unterstützt globale Regeleinstellungen. Die Verwendung ist wie folgt:

Lokale Variablenregeln

Lokale Variablenregeln sind nur in der aktuellen Route gültig:

// 定义GET请求路由规则 并设置name变量规则
Route::get('new/:name', 'News/read')
    ->pattern(['name' => '[\w|\-]+']);

Keine Notwendigkeit Hinzufügen von ^ am Anfang oder Hinzufügen von $ am Ende. Modusmodifikatoren werden nicht unterstützt und das System fügt sie automatisch hinzu.

Globale Variablenregeln

Globale Variablenregeln festlegen, alle Routen sind gültig:

// 支持批量添加
Route::pattern([
    'name' => '\w+',
    'id'   => '\d+',
]);

Kombinierte Variablen

Wenn Ihre Routing-Regeln speziell sind, können Sie beim Definieren von Routen zusammengesetzte Variablen verwenden.

Zum Beispiel

Route::get('item-<name>-<id>', 'product/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);

Der Vorteil der Kombination von Variablen besteht darin, dass es in Routing-Regeln keine festen Trennzeichen gibt. Sie können die erforderlichen Variablenregeln und Trennzeichen nach Belieben kombinieren. Die Routing-Regeln können wie folgt geändert werden:

Route::get('item<name><id>', 'product/detail')
    ->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']);
Route::get('item@<name>-<id>', 'product/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);

Wenn Sie bei der Verwendung kombinierter Variablen optionale Variablen verwenden müssen , können Sie die folgende Methode verwenden:

Route::get('item-<name><id?>', 'product/detail')
    ->pattern(['name' => '[a-zA-Z]+', 'id' => '\d+']);

Dynamisches Routing

Sie können die Variablen in den Routing-Regeln in das Routing übergeben Adresse können Sie ein dynamisches Routing implementieren, zum Beispiel:

// 定义动态路由
Route::get('hello/:name', 'index/:name/hello');

Der Wert der Namensvariablen wird als Routing-Adresse übergeben.

Variablen im dynamischen Routing unterstützen auch kombinierte Variablen und Assembler, zum Beispiel:

Route::get('item-<name>-<id>', 'product_:name/detail')
    ->pattern(['name' => '\w+', 'id' => '\d+']);