php-具有相似参数的路由上的路由参数模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-具有相似参数的路由上的路由参数模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1102字,纯文字阅读大概需要2分钟。
内容图文
![php-具有相似参数的路由上的路由参数模式](/upload/InfoBanner/zyjiaocheng/692/f720dda493614b4dbdf950054d6b3375.jpg)
我有一些采用几个UUID作为参数的路由:
Route::get('/foo/{uuid1}/{uuid2}', 'Controller@action');
我希望能够在将控制权转交给操作之前验证这些参数的格式是否正确:
Route::pattern('uuid1', '^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$');
这很好.但是,我真的不想重复这种模式很多次(实际上,我对8个不同的UUID路由参数重复了8次).
我不能这样做:
Route::get('/foo/{uuid}/{uuid}', 'Controller@action');
因为那会产生一个错误:
Route pattern “/foo/{uuid}/{uuid}” cannot reference variable name “uuid” more than once.
自发现Route :: patterns以来,我可以将它们全部合并为一个函数调用:
Route::patterns([
'uuid1' => '^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$',
'uuid2' => '^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$',
]);
但这仍然是重复的.有没有办法将多个模式键绑定到单个正则表达式?
理想情况下,我想找到一种避免这种情况的方法:
$pattern = 'uuid regex';
Route::patterns([
'uuid1' => $pattern,
'uuid2' => $pattern,
]);
解决方法:
没有内置的方法可以处理此问题,我实际上认为您找到的解决方案非常不错.也许会更优雅一些:
Route::patterns(array_fill_keys(['uuid1', 'uuid2'], '/uuid regex/'));
内容总结
以上是互联网集市为您收集整理的php-具有相似参数的路由上的路由参数模式全部内容,希望文章能够帮你解决php-具有相似参数的路由上的路由参数模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。