Yii2.0 高级模版编写使用自定义组件(component)

翻译自:http://www.yiiframework.com/wiki/760/yii-2-0-write-use-a-custom-component-in-yii2-0-advanced-template/

简单模版中添加自定义组件:http://www.yiiframework.com/wiki/747/write-use-a-custom-component-in-yii2-0/

我们实现的是添加一个读取真实IP的组件,下面是详细步骤:

1. 在项目根目录的common目录中新建components目录。

2. 在components目录里新建ReadHttpHeader.php。这个是组件要实现的功能。

namespace common\components;

use Yii;
use yii\base\Component;

class ReadHttpHeader extends Component {

    public  function RealIP()
    {
        $ip = false;

        $seq = array(‘HTTP_CLIENT_IP‘,
                  ‘HTTP_X_FORWARDED_FOR‘
                  , ‘HTTP_X_FORWARDED‘
                  , ‘HTTP_X_CLUSTER_CLIENT_IP‘
                  , ‘HTTP_FORWARDED_FOR‘
                  , ‘HTTP_FORWARDED‘
                  , ‘REMOTE_ADDR‘);

        foreach ($seq as $key) {
            if (array_key_exists($key, $_SERVER) === true) {
                foreach (explode(‘,‘, $_SERVER[$key]) as $ip) {
                    if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
                        return $ip;
                    }
                }
            }
        }
    }

}

3. 引入组件。打开common/config/main-local.php

添加下面的代码

<?php
return [
    ‘components‘ => [
        ‘db‘ => [
            ‘class‘ => ‘yii\db\Connection‘,
            ‘dsn‘ => ‘mysql:host=localhost;dbname=yii2_demo‘,
            ‘username‘ => ‘root‘,
            ‘password‘ => ‘‘,
            ‘charset‘ => ‘utf8‘,
            ‘tablePrefix‘ => ‘au_‘,
        ],
         //  新添加的
        ‘ReadHttpHeader‘ => [
            ‘class‘ => ‘common\components\ReadHttpHeader‘
        ],
        ‘mailer‘ => [
            ‘class‘ => ‘yii\swiftmailer\Mailer‘,
            ‘viewPath‘ => ‘@common/mail‘,
            // 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,
        ],
    ],
];

4. 调用自定义组件。

打开任意一个Controller文件,比如我打开的是backend\controllers\SiteController.php。

在合适的地方调用组件。

    public function actionIndex()
    {
         //自定义组件
        echo Yii::$app->ReadHttpHeader->RealIP();

        return $this->render(‘index‘);
    }

完。

时间: 2024-12-09 21:17:59

Yii2.0 高级模版编写使用自定义组件(component)的相关文章

Yii2.0高级框架数据库增删改查的一些操作(转)

yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 ----------------------------------------------------------------------------------------------------- User::find()->all();    //返回所有用户数据:User::findOne($id);   //返回 主键 id=1  的一条数

Yii2.0高级框架数据库增删改查的一些操作

yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 ----------------------------------------------------------------------------------------------------- User::find()->all();    //返回所有用户数据:User::findOne($id);   //返回 主键 id=1  的一条数

yii2.0高级框架配置时打开init.bat秒退的解决方法 (两种方法)

第一种: 这几天刚接触到yii2.0框架,在配置advanced版本时运行init.bat初始化文件时老是闪退: 用cmd运行该文件时显示:The OpenSSL PHP extension is required by Yii2.如下图所示: 搜索了很多资料,终于找到问题所在之处了,原来是php.ini中的extension=php_openssl.dll没有打开: 1.打开php.ini文件,如我的目录是D:\wamp\php\php.ini,搜索extension=php_openssl.

ionic3.x 自定义组件component双向绑定之自定义计数器

本文主要示例在ionic3.x环境下实现一个自定义计数器,实现后最终效果如图: 1.使用命令创建一个component ionic g component CounterInput 类似的命令还有: ionic g page YourPageName //创建新页面 ionic g directive YourPageName //创建指令 ionic g component YourComponentName //创建组件 ionic g provider YourProviderName /

yii2.0高级模板归档文件windows7下安装

本地php环境用的是phpstudy搭建的 安装yii分为2步,1设置php环境变量.2安装yii 1设置php环境变量 php.ini中找到(去掉以下;) ;extension=php_gd2.dll;extension=php_mysql.dll;extension=php_sockets.dll ;On windows:;extension_dir = "ext" //你存放php的目录,此处整个安装完成后要改回来,不然phpadmin,登陆后打不开,原因未知? 右击[计算机]-

CKG10-高性能高可用Yii2.0电商平台 仿京东商城 高级组件 MySQL LVS

随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了.对于学习有困难不知道如何提升自己可以加扣:1225462853进行交流得到帮助,获取学习资料. 下载地址:http://pan.baidu.com/s/1jI05TPW 如果你已经完成了Yii2.0入门,并能用它搭建一些完整的项目,那你就该向更高级的Yii2.0开发迈进,真正学会如何在实际工作中运用Yii2.0

PHP框架Yii2.0安装(基础版、高级版)

最近农成也是切入了yiiframework 2.0,就是安装yii2.0就花费了不少的时间,为此做了很多的弯路,特此写一篇博文来给后面学习的同学少走一点的弯路.写的不好的地方欢迎各位学习的同学们能够指点出来. yii2.0的安装,官方提供了两种的安装办法,一种是通过composer来安装,另外一种是通过跟yii1.0的办法直接下载安装包来安装.至于对于第一种composer的安装,农成就不做多余的说明了,这里有很好的安装教程.点击进去就可以看到了,为此农成就不在说了,下面就给大家详细讲讲第二种通

Yii2.0源码阅读-behavior的实现原理

Yii2.0中的一个思想就是组件化的思想,所以.大多数的类都直接或间接的继承自yii\base\Component,而组件的三大功能:属性.事件.行为. 行为的目的是为了方便的扩展一个类的功能,而不需要直接去修改这个类,同时行为中也附带了事件的实现. 1.整体的结构 Controller和模型ActiveRecord都继承自yii\base\Component 而Component继承自yii\base\Object Object中和Component中都实现了魔术方法__get和__set以及

yii2.0 框架 载入 PHPExcel 类

我用的是composer 安装的, 自己引入的话找了好多的方法但是都不能引入 所以找了这个简单一点的. composer require "phpoffice/phpexcel"    用这个命令下载就可以(等一会时间),前提是你已经安装的composer 如果没有,就安装一个,就不多说了. 安装完成后 window 下打开命令窗口 输入compposer 查看是否安装成功,然后打开你的yii2.0(高级版)框架的verdor 这个文件夹 Shift+右键,打开命令窗口,运行上面那个下