我已在我的Yii2应用程序上启用了干净的网址,但我似乎无法获得传递给该操作的参数。
我希望如此:
本地主机/应用程序/网页/ A / B / C / d
要映射到以下内容:
AController-> actionB($ c,$ d)
它没有发生。
这是我的.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
我的web.php的相关部分:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
],
答案 0 :(得分:2)
据我了解,该规则应该类似于:
'<controller:\w+>/<action:\w+>/<c>/<d>' => '<controller>/<action>'
因此,如果您尝试访问localhost/app/web/a/b/c/d
,Yii会致电:
class AController extends Controller
{
public function actionB($c, $d)
{
}
}
答案 1 :(得分:0)
我建议你的urlManager遵循以下规则:
'rules' => [
'<a:\w+>/<b:\w+>/<c:\d+>/<d:\d+>' => 'a/b'
],
寻址到localhost/a/b/c/d
现在应该在控制器 a 内呼吁采取行动 b ,其中参数 c 和 d 。
答案 2 :(得分:-1)
如果您希望关注以下网址。
本地主机/应用程序/网页/ A / B / C / d
要映射到以下内容:
AController-&gt; actionB($ c,$ d)
你可以像下面的例子一样指定main.php。
您必须像我在下面的示例中提到的那样设置网址规则。它应该工作。
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<controller:\w+>/<action:\w+>/<id:\d+>/<id:\d+>' => 'a/b/c/d'
],
],
如果您还有任何疑问,请与我们联系。