yii\base\InvalidRouteException: 无法解析 yii2 中的请求
yii\base\InvalidRouteException: Unable to resolve the request in yii2
我们已经创建了高级 yii 应用程序并将 urls 更改为 clean urls 并且我们根文件夹中的 .htaccess
如下
Options +Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^admin(/.+)?$ backend/web/ [L,PT]
RewriteRule ^(.*)$ frontend/web/ [L]
</IfModule>
# Deny accessing below extensions
<Files ~ "(.json|.lock|.git)">
Order allow,deny
Deny from all
</Files>
# Deny accessing dot files
RewriteRule (^\.|/\.) - [F]
和.htaccess
中的frontend/web/
如下
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
和main.php
来自frontend/config/
如下
$params = array_merge(
require __DIR__ . '/../../common/config/params.php',
require __DIR__ . '/../../common/config/params-local.php',
require __DIR__ . '/params.php',
require __DIR__ . '/params-local.php'
);
use \yii\web\Request;
$baseUrl = str_replace('/frontend/web', '', (new Request)->getBaseUrl());
return [
'id' => 'app-frontend',
'basePath' => dirname(__DIR__),
// 'defaultRoute' => 'site/program',
'bootstrap' => ['log'],
'controllerNamespace' => 'frontend\controllers',
'components' => [
'request' => [
'csrfParam' => '_csrf-frontend',
'baseUrl' => $baseUrl,
],
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
],
'session' => [
// this is the name of the session cookie used for login on the frontend
'name' => 'advanced-frontend',
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'urlManager' => [
'baseUrl' =>$baseUrl,
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
]
]
],
'params' => $params,
];
现在的问题是创建项目时出现的默认操作像 login
、signup
、about
、contact
和 defaultroute
在工作中。除了这些之外,任何新操作都不起作用并给出错误 yii\base\InvalidRouteException: Unable to resolve the request
我们哪里做错了,为什么 defaultroute
工作正常而同一控制器中的其他操作不工作。请以正确的方式建议我们。
当动作名称是小写时,工作,但如果我们在动作名称中获得任何大写字母,则不起作用。比如 actionContactmenu 可以工作,而 actionContactMenu 不工作是什么原因让我们知道....
为此,您必须将其命名为 contact-menu 而不是 contactmenu。
我们已经创建了高级 yii 应用程序并将 urls 更改为 clean urls 并且我们根文件夹中的 .htaccess
如下
Options +Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^admin(/.+)?$ backend/web/ [L,PT]
RewriteRule ^(.*)$ frontend/web/ [L]
</IfModule>
# Deny accessing below extensions
<Files ~ "(.json|.lock|.git)">
Order allow,deny
Deny from all
</Files>
# Deny accessing dot files
RewriteRule (^\.|/\.) - [F]
和.htaccess
中的frontend/web/
如下
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
和main.php
来自frontend/config/
如下
$params = array_merge(
require __DIR__ . '/../../common/config/params.php',
require __DIR__ . '/../../common/config/params-local.php',
require __DIR__ . '/params.php',
require __DIR__ . '/params-local.php'
);
use \yii\web\Request;
$baseUrl = str_replace('/frontend/web', '', (new Request)->getBaseUrl());
return [
'id' => 'app-frontend',
'basePath' => dirname(__DIR__),
// 'defaultRoute' => 'site/program',
'bootstrap' => ['log'],
'controllerNamespace' => 'frontend\controllers',
'components' => [
'request' => [
'csrfParam' => '_csrf-frontend',
'baseUrl' => $baseUrl,
],
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
],
'session' => [
// this is the name of the session cookie used for login on the frontend
'name' => 'advanced-frontend',
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'urlManager' => [
'baseUrl' =>$baseUrl,
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
]
]
],
'params' => $params,
];
现在的问题是创建项目时出现的默认操作像 login
、signup
、about
、contact
和 defaultroute
在工作中。除了这些之外,任何新操作都不起作用并给出错误 yii\base\InvalidRouteException: Unable to resolve the request
我们哪里做错了,为什么 defaultroute
工作正常而同一控制器中的其他操作不工作。请以正确的方式建议我们。
当动作名称是小写时,工作,但如果我们在动作名称中获得任何大写字母,则不起作用。比如 actionContactmenu 可以工作,而 actionContactMenu 不工作是什么原因让我们知道....
为此,您必须将其命名为 contact-menu 而不是 contactmenu。