Yii2:使用urlManager将querystring参数替换为值

Yii2:使用urlManager将querystring参数替换为值,yii2,Yii2,我有一个管理规则 'rules' => [ 'products/<whatever:[-_0-9a-zA-Z]+>' => 'products/show', ], 但是a有一个错误:错误的请求(#400)缺少必需的参数:name 如何将产品的$名称传输到控制器,或者如何从控制器中的URL获取它?我想您应该在规则中指定变量的名称。您正在调用它无论什么,请将其更改为名称: 'rules' => [ 'products/&

我有一个管理规则

    'rules' => [
        'products/<whatever:[-_0-9a-zA-Z]+>' => 'products/show',
    ],
但是a有一个错误:错误的请求(#400)缺少必需的参数:name


如何将产品的$名称传输到控制器,或者如何从控制器中的URL获取它?

我想您应该在规则中指定变量的名称。您正在调用它
无论什么
,请将其更改为
名称

'rules' => [
        'products/<name:[-_0-9a-zA-Z]+>' => 'products/show',
    ],
“规则”=>[
“产品/”=>“产品/展会”,
],

正确完整的答案是你必须使用下面的
规则

'rules' => [
        'products/<name:[\-\w]+>' => 'products/show',
],
<?=Html::a($model->name, 
    Yii::$app->urlManager->createUrl([
        'products/show',
        'name'=>$model->slug
    ])
  );
?>
完成上述所有设置后,打开浏览器并键入

http://yourdomain.com/products/some-product

它会告诉你

某些产品

当您必须创建指向该页面的链接时,让我们假设在菜单中,您在
产品下列出了所有产品,并且您必须为所有产品创建指向详细信息页面的链接,即
actionShow
,您将按照下面的方式进行操作

'rules' => [
        'products/<name:[\-\w]+>' => 'products/show',
],
<?=Html::a($model->name, 
    Yii::$app->urlManager->createUrl([
        'products/show',
        'name'=>$model->slug
    ])
  );
?>


您如何呼叫控制器?为您添加了一个答案,看看这是否有助于您的成功。但在这种情况下,我不得不在URL中写道:
products/namesamsung450z
不,你错了@yiier,虽然gmc是对的,但他没有给出完整的答案。