码迷,mamicode.com
首页 > 其他好文 > 详细

Yii2访问自定义模块下的controller

时间:2018-04-17 19:41:26      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:echo   配置信息   function   style   alt   pat   comment   img   user   

之前,由于所要访问的controller都是位于根目录下的controllers目录下,就像下面这样:

技术分享图片

此时,我们可以直接通过 localhost/basic/web/index.php?r=dao/index 来访问图中DaoController.php里的actionIndex。

但是如果,我们将controller、view等有关联的独立出来作为一个模块Modules,那么又将怎样去处理呢。

技术分享图片

就像上面这样,这个Site控制器里面的action又将如何访问呢。

1.建立目录

首先建立如上的目录结构,在api下的以及目录有三个文件夹和一个文件Module.php,这个php文件内容如下:

<?php

namespace app\modules\api;

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

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

        // custom initialization code goes here
    }
}

这个文件可以直接复制,无需作任何修改,只是注意红字部分的命名空间,不要写错了!

2.web.php

还记得项目根目录下的config文件夹下有个web.php文件么,添加如下字段:

<?php

$params = require __DIR__ . /params.php;
$db = require __DIR__ . /db.php;

$config = [
    ‘id‘ => basic,
    ‘basePath‘ => dirname(__DIR__),
    ‘bootstrap‘ => [log],
    ‘aliases‘ => [
        @bower => @vendor/bower-asset,
        @npm   => @vendor/npm-asset,
    ],
    ‘components‘ => [
        request => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            cookieValidationKey => jjsYJ_ju0W8ifOv5mY3JBMI6DOppFlo6,
        ],
        cache => [
            class => yii\caching\FileCache,
        ],
        user => [
            identityClass => app\models\User,
            enableAutoLogin => true,
        ],
        errorHandler => [
            errorAction => site/error,
        ],
        mailer => [
            class => yii\swiftmailer\Mailer,
            // send all mails to a file by default. You have to set
            // ‘useFileTransport‘ to false and configure a transport
            // for the mailer to send real emails.
            useFileTransport => true,
        ],
        log => [
            traceLevel => YII_DEBUG ? 3 : 0,
            targets => [
                [
                    class => yii\log\FileTarget,
                    levels => [error, warning],
                ],
            ],
        ],
        db => $db,
        /*
        ‘urlManager‘ => [
            ‘enablePrettyUrl‘ => true,
            ‘showScriptName‘ => false,
            ‘rules‘ => [
            ],
        ],
        */
    ],
    ‘modules‘ => [
        ‘api‘ => [
            ‘class‘ => ‘app\modules\api\Module‘,
        ],
    ],
    ‘params‘ => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for ‘dev‘ environment
    $config[bootstrap][] = debug;
    $config[modules][debug] = [
        class => yii\debug\Module,
        // uncomment the following to add your IP if you are not connecting from localhost.
        //‘allowedIPs‘ => [‘127.0.0.1‘, ‘::1‘],
    ];

    $config[bootstrap][] = gii;
    $config[modules][gii] = [
        class => yii\gii\Module,
        // uncomment the following to add your IP if you are not connecting from localhost.
        //‘allowedIPs‘ => [‘127.0.0.1‘, ‘::1‘],
    ];
}

return $config;

为了避免看的时候出错,上面红字的“键”是出于同一级的,红字加粗的是我们为modules添加的相关配置信息,相当于在应用中注册了刚才定义的组件(api)。

3.api组件下的controllers

现在我们在Modules/api/controllers下新建一个SiteControllers.php,内容如下:

<?php

namespace app\modules\api\controllers;

use yii\web\Controller;


class SiteController extends Controller
{
    public function actionIndex()
    {
        echo "hello world";
    }
}

注意命名空间就好~~~

4.浏览器访问

最后就是浏览器访问这个actionIndex了,浏览器输入: http://localhost/basic/web/index.php?r=api/site/index

技术分享图片

至此,结束~~~

 

Yii2访问自定义模块下的controller

标签:echo   配置信息   function   style   alt   pat   comment   img   user   

原文地址:https://www.cnblogs.com/eco-just/p/8868487.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!