zoukankan      html  css  js  c++  java
  • Yii 框架学习--03 多应用多模块

    本文以YII 2.0.7为例。

    概述

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

    多应用的特点:

    • 独立配置文件
    • 独立域名

    多模块的特点:

    • 统一配置文件
    • 统一域名

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

    • 对于前后台分离,例如后台需要单独的域名进行管理这个应该用多应用
    • 多应用的配置完全不一样,用多应用比较方便,配置文件使用不同的
    • 多应用需要更多的域名配置,比价麻烦,对于小项目也不区分域名,多模块比较好

    多应用

    最简单的方法是下载官网的 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/guide/2.0/structure-modules配置。示例:在frontend里新建一个h5应用:

    1、建立相关目录

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

    2、Module.php内容示例:

    <?php
    namespace frontendmodulesh5;
    
    class Module extends yiiaseModule
    {
        public function init()
        {
            parent::init();
    
            $this->params['foo'] = 'bar';
            // ...  其他初始化代码 ...
        }
    }
    

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

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

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

    <?php
    namespace frontendmodulesh5controllers;
    
    use Yii;
    use commonmodelsLoginForm;
    use frontendmodelsSignupForm;
    use frontendmodelsContactForm;
    use yiiaseInvalidParamException;
    use yiiwebBadRequestHttpException;
    use yiiwebController;
    
    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 frontendcontrollers	est;
    

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

    r=v1/site/index
    r=v2/site/index
    
  • 相关阅读:
    Oracle启动关闭
    Open_stack 有虚拟机端口不通的问题
    关于Oracle归档的一些操作
    电脑无法开机 接通电源后主板有红灯闪烁的问题
    Centos7+python3.6+face-recognition
    电脑无法开机的问题-主板上有红色告警灯闪烁
    关于systemctl
    Vsftp搭建 for centos7
    外星人入侵——安装Pygame
    mysql索引原理详解
  • 原文地址:https://www.cnblogs.com/52fhy/p/7401625.html
Copyright © 2011-2022 走看看