欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Yii 多应用多模块

程序员文章站 2022-03-11 22:27:42
...
本文以YII 2.0.7为例,给大家分享了关于Yii多应用多模块,有需要的朋友可以参考一下

概述

首先看看多应用和多模块的特点:

多应用的特点:

  • 独立配置文件

  • 独立域名

多模块的特点:

  • 统一配置文件

  • 统一域名

那么,实际该怎么决定使用多应用还是多模块呢?

  • 对于前后台分离,例如后台需要单独的域名进行管理这个应该用多应用

  • 多应用的配置完全不一样,用多应用比较方便,配置文件使用不同的

  • 多应用需要更多的域名配置,比价麻烦,对于小项目也不区分域名,多模块比较好

多应用

最简单的方法是下载官网的 Yii2的高级应用程序模板:yii-advanced-app-2.0.12.tgz。下载下来解压后,进入advanced目录,运行:

# Windows
init.bat

# Linux
init

会在frontendbackend两个应用的web目录生成入口文件index.phpfrontendbackend分别表示前台和后台应用,里面的目录结构是一样的:

assets/  
config/  
controllers/  
models/  
runtime/  
views/  
web/

运行:

$ cd advanced/frontend/web
$ php -S 0.0.0.0:8888
PHP 5.6.22 Development Server started at Sun Aug 20 21:10:28 2017
Listening on http://0.0.0.0:8888

打开浏览器输入http://0.0.0.0:8888就可以访问默认的首页了。

建议model还是放在根目录的common/models里。

多模块

多模块可以参照http://www.yiichina.com/doc/g...。示例:在frontend里新建一个h5应用:

1、建立相关目录

$ cd frontend
$ mkdir -p modules/h5 && cd modules/h5
$ mkdir controllers
$ touch Module.php

2、Module.php内容示例:

<?php
namespace frontend\modules\h5;

class Module extends \yii\base\Module
{
    public function init()
    {
        parent::init();

        $this->params['foo'] = 'bar';
        // ...  其他初始化代码 ...
    }
}

3、在frontend/config/main.php增加模块的申明:

'modules' => [
    'h5' => [
        'class' => 'frontend\modules\h5\Module',
        // ... 模块其他配置 ...
    ],
],

4、在modules/h5/controllers新建控制器类:

<?php
namespace frontend\modules\h5\controllers;

use Yii;
use common\models\LoginForm;
use frontend\models\SignupForm;
use frontend\models\ContactForm;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;

class SiteController extends Controller
{
    public function actionIndex()
    {
        return "hello h5 module";
        //return $this->render('index');
    }
}

浏览器访问:http://localhost:8888/index.php?r=h5/site/index 即可访问。

还有一种方法也可以实现类似该URL路由的访问形式,例如r=test/site/index。只需要在frontend/controllers目录新建个子目录叫test,把控制器放在里面,然后改下命名空间为

namespace frontend\controllers\test;

就可以了。这种可以用于API版本控制,例如:

r=v1/site/index
r=v2/site/index

原载于:http://www.cnblogs.com/52fhy/...

相关推荐:

Yii2配置基本概念

Yii2.0执行流程详解

如何引入Yii框架

以上就是Yii 多应用多模块 的详细内容,更多请关注其它相关文章!

相关标签: 模块 应用