我有网址localhost/user/about/id/5
,我希望它转换为类似localhost/john.doe/about
,是否可以在Yii中执行此操作?
john.doe
指的是用户名
about
指的是行动
我想隐藏控制器名称,在本例中为user
感谢您的帮助
答案 0 :(得分:1)
是的,您需要使用文档here (Using Custom Url Classes)中的自定义UrlRule。然后,您可以剥离类中的URL,尝试查找用户名,如果它不存在,只需return false
,并让其余的URL规则处理。
请记住,放置自定义规则的URL规则的顺序越高,运行的次数越多(因为UrlManager将在第一个匹配规则上退出),因此如果您将其放在正确位置,则会影响性能顶部。
<强>加成强>
这也可以帮助您生成URL,因为您只需将用户名作为参数传递给普通URL,并让您的类执行复杂的操作。