php - 如何使用别名和 $_GET 参数配置 yii2 urlManager 规则

标签 php url-routing yii2

对于我当前(高级)基于 yii2 的项目,我只需要一个 Controller (SiteController)。所以没有必要在url中显示它。这就是为什么我将此规则添加到前端配置的原因:

'urlManager' => [
    'rules' => array(
        '<alias:product|contact|about>' => 'site/<alias>',
    ),

这工作正常,localhost/product 指向 localhost/site/product

当然,我激活了 prettyUrl 并将此默认规则添加到通用配置中:

 'rules' => array(
                '<controller:\w+>/<id:\w+>' => '<controller>',
                '<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
            ),

现在我想访问这样的 GET 参数:localhost/product/productname。但是我得到了错误:

Unable to resolve the request "product"

但是 localhost/site/product/productname 工作正常... “产品名称”应该是 $_GET['id']。我必须改变什么才能实现这一目标?

谢谢!

最佳答案

您的规则应该在默认规则之前,并且您需要 2 条规则,例如:

'rules' => array(
    '<alias:contact|about>' => 'site/<alias>',
    '<alias:product>/<id:\w+>' => 'site/<alias>',
    '<controller:\w+>/<id:\w+>' => '<controller>',
    '<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>',
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),

关于php - 如何使用别名和 $_GET 参数配置 yii2 urlManager 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316780/

相关文章:

php - 在 Wordpress + Polylang 中获取所选语言网站的主页

javascript - 如何使用 AJAX/jQuery 检查链接是否被单击

javascript - 使用javascript获取用户名到sql select中where子句的值

javascript - 当我们使用 this.props.history.push ("/next Component"移动到下一个组件时,我们可以传递一个值吗?

javascript - 为什么样式和 javascripts 代码不适用于新添加的 html 内容

php - password_verify() 在密码匹配时返回 false

asp.net-mvc - 你如何处理可变数量的 MVC 路由?

asp.net - 如何从后台代码访问 RouteData?

csrf - 在 Yii2 中禁用单个操作的 CSRF 验证

gridview - Yii2 GridView 值调用模型函数