yii2静态页面

yii2静态页面,yii2,yii-url-manager,viewaction,Yii2,Yii Url Manager,Viewaction,我不能显示静态页面。尝试按照doc here(第100页)中的描述进行操作,但是当我启用prettyurl时,它就不起作用了 在urlManager规则中添加: 'urlManager' => array( 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => array( '' => 'site/index', 'login' =&g

我不能显示静态页面。尝试按照doc here(第100页)中的描述进行操作,但是当我启用prettyurl时,它就不起作用了

在urlManager规则中添加:

'urlManager' => array(
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => array(
        '' => 'site/index',
        'login' => 'site/login',
        'contacts' => 'site/contact',
        '<view:(break)>'=>'/site/page?&view=<view>',
    ),
),
然后创建views/site/pages/break.php

<h1>View static page Break</h1>
然后我可以看到我的页面输入url:index.php?r=site/page&view=break


ViewAction有什么问题?

我认为您的url管理规则部分做得不对。 试试这个

'urlManager'=>[
'class'=>'yii\web\UrlManager',
//禁用index.php
'showScriptName'=>false,
//禁用r=路由
“enablePrettyUrl”=>true,
'规则'=>数组(
“/”=>“/视图”,
'//' => '/',
'/' => '/',
),
],
规则部分应该很重要。

我曾经尝试过这种方法(没有规则规范):


我解决了我的问题。使用这些行:

'<view:(break)>' => 'site/page',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
''=>'站点/页面',
“/”=>“/视图”,
'//' => '/',
'/' => '/',
我强制使用页面的特定名称进行查看,在我的例子中是“break”,因为不能使用这个名称

'<view:[a-zA-Z0-9-]+>' => 'site/page',
''=>'站点/页面',
(它会导致其他规则崩溃。)我认为它可以更好地创建扩展UrlRule的“自己的规则类”,但现在我不需要它了。

解决方案很简单:

  • php代码是这样的
    'rules'=>[
    “站点/页面/”=>“站点/索引”,

  • 在SiteController中,不要使用函数actions(),而是:

  • 公共功能操作索引($view)
    {
    返回$this->render('/site/pages/'.$view);
    }捕获(无效的$e){
    抛出新的HttpException(404);
    }

  • 如果views/site/pages/中存在view contacts.php,则url为yourdomain/basic/web/site/page/contact

  • 4.感谢samdark及其文章

    是的,现在“site/page?&view=break”打开了page break.php,但是如何创建更为seo友好的url?就像“site.ru/break”
    '=>'site/page'
    这是一条路!注意,这条规则也应该起作用:
    '=>'site/page'
    应该最后声明,否则它将我知道所有其他的模式。
    'urlManager' => [
        'class' => 'yii\web\UrlManager',
        // Disable index.php
        'showScriptName' => false,
        // Disable r= routes
        'enablePrettyUrl' => true,
        'rules' => array(
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ),
        ],
    
            'urlManager' => [
                'class' => 'yii\web\UrlManager',
                'enablePrettyUrl' => true,
                'showScriptName' => 'false'
        ],
    
    '<view:(break)>' => 'site/page',
    '<controller:\w+>/<id:\d+>' => '<controller>/view',
    '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    
    '<view:[a-zA-Z0-9-]+>' => 'site/page',