2016-06-04 16:35:25 3722次浏览 4条回答 0 悬赏 10 金钱

http://admin.myblog.com/article/article/index 这是我的一个文章列表连接 明显多了一个 article 但是除掉又不行。。报未找到。 解析流程我想是 第一个 article是找到config配置文件 找到了类

article' => ['class' => 'app\modules\article\Module',],  

然后根类找到$controllerNamespace
接下来自然而然的 就找到了 /article/index 这样完成了一个模块访问,
那么问题就来了。url不够简洁。求各位大神解惑。

config文件配置

  'modules' => [
        'article' => ['class' => 'app\modules\article\Module',],
    ],


这是module.php
<?php

namespace app\modules\article;

/**
 * article module definition class
 */
class Module extends \yii\base\Module
{
    /**
     * @inheritdoc
     */
    public $controllerNamespace = 'app\modules\article\controllers';

    /**
     * @inheritdoc
     */
    public function init()
    {
        parent::init();

        // custom initialization code goes here
    }
}

最佳答案

  • 师阳 发布于 2016-06-05 17:25 举报

    它url出现这个article/article/index,中间这个是控制器名称,你把这个article控制器改成 index 也是个解决办法

    1 条回复
    回复于 2016-07-01 17:37 回复

    你说对 是这个思路,之前想差了。

  • 回答于 2016-06-04 18:29 举报

    这不算是有重,两个article的意义不一样,只是因为你把两个取了一样的名字。

    个别路径要调整你可以指定别名,比如用art代替 article/article 。
    如果量多,修改路由转发规则

    1 条回复
    回复于 2016-06-04 19:36 回复

    前一段估计是自己骗自己。为的就是美化,名字无所谓。估计还得修改路由规则。。谢谢哥们的回答。你真太牛了。

  • 回答于 2016-06-04 19:02 举报
     'urlManager' => [
                'enablePrettyUrl' => true,
                'showScriptName' => false,
                'suffix' => '',    //如果设置了此项,那么浏览器地址栏就必须带上.html后缀,否则会报404错误
                'rules'=>[
                    '<controller:poor-per-info>/<action:get-area-list>/<pid:\d+>.html'=>'<controller>/<action>',
                    'article/index' => 'article/article/index',
                ],
            ],
    
    1 条回复
    回复于 2016-06-04 19:38 回复

    你这种方法太过于笨重了。。。我在别人项目中 没发现这样做,但却实现了。我所说的。。不知道是修改那了。。谢谢你们的回答。

  • 回答于 2016-06-07 21:26 举报

    没看太明白,不过我感觉你需要的是/article,url路由要/开头,不然的话是相对路由,如果你当前已经在article模块,就会再出一个article

您需要登录后才可以回答。登录 | 立即注册
最爱红烧肉
副总裁

最爱红烧肉

注册时间:2014-11-07
最后登录:2017-10-27
在线时长:69小时2分
  • 粉丝11
  • 金钱4740
  • 威望30
  • 积分5730

热门问题