我有一些路由需要几个UUID作为参数:
TSource
我希望能够在将控制权交给操作之前验证这些参数是否是正确的格式:
SELECT DISTINCT trans.[Transaction],
STUFF(( SELECT ',' + str(trans1.ProductNo) AS [text()] FROM Transactions trans1
WHERE trans.[Transaction]=trans1.[Transaction] ORDER BY trans1.[Transaction] FOR XML PATH('')), 1,1,'')[ProductNo]
FROM Transactions trans
这很好用。但是,我真的不想重复那种模式(在实际情况下,我为8个不同的UUID路由参数重复了8次)。
我不能这样做:
Route::get('/foo/{uuid1}/{uuid2}', 'Controller@action');
因为这会产生错误:
路由模式“/ foo / {uuid} / {uuid}”不能多次引用变量名“uuid”。
我发现Route::pattern('uuid1', '^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$');
:
Route::get('/foo/{uuid}/{uuid}', 'Controller@action');
但这仍然是重复的。有没有办法可以将多个模式键绑定到单个正则表达式?
理想情况下,我想找到一种方法来避免这样的事情:
Route::patterns
答案 0 :(得分:4)
没有内置的方法来处理这个问题,我认为你找到的解决方案非常好。也许这样会更优雅:
Route::patterns(array_fill_keys(['uuid1', 'uuid2'], '/uuid regex/'));