search(), ‘filter’=>$model, ‘columns’=>array( ‘id’, ‘content’, array( ‘name’=>’type’, ‘type’=>’raw’, //调用...‘value’=>array($this,’get_type_text’), //调用自定义的函数 ‘htmlOptions’=>array(‘width’=>”90px”), //设置样式 ), array...> 第二步:在Controller控制器中写函数: //判断推荐的类型 $data 代表行数据,$row 代表行号。
问题: 在yii中,一个controller会包含若干个action。有时为了重用或代码管理等目的,我们希望这些action可以单独定义成一个类,然后在 controller中使用。...那么在yii中要如何实现呢?...不然当url中无$name参数时页面会报错。 实现 下面我们要做的是,将actionHello形成一个单独的类,在TestController中调用它。 1....当然也可以通过$_GET的方式在函数内部取得 详见 http://www.yiiframework.com/doc/guide/1.1/en/basics.controller#action一节中的...本例中之所以写为“application.controllers.test.HelloAction”,是因为test目录不在yii自动加载范畴。
Yii中setAttributes用法注意 例如有这样一个model A: (1)A对应到的表格为tableA tableA中这样几个字段 字段 id name sex age 数据 1...test 男 18 (2)将一个新的数据插入到数据库中 有两种方法: 方法一: $a = new A; a->name = 'test2'; a->sex = '女'; a->age =...$a->setAttributes(array('name'=>'test2','sex'=>'女','age'=>20)); $a->save(); 但是使用方法二的时候要注意,如果在model A中的...rules方法中没有列出相应的字段,这个setArributes方法不会和数据库中的字段对应起来的 例如 model A中的rules为 public function rules() {
yii的controller中支持调用外部的action类(见《在controller中使用外部的action》) 但最近工作时碰到这样一个问题,外部action类如何渲染页面(render)呢...其实controller类中是有render方法的,所以问题转换为如何得到调用该action的controller类。
通常来讲在config/wep.php文件中配置代码如下 if (YII_ENV_DEV) { $config['bootstrap'][] = 'gii'; $config['modules...,然后将模块的assets目录复制到4ebd21cf文件夹下让视图调用。...下面我们看一下代码实现: 我们在Module类中增加getAssetsUrl方法 调用moduels/admin/Module类的“getAssetsUrl()”方法。...="width: 50%;height: 50%"> 在调用publish()方法的过程中,在应用目录下随机创建了“4ebd21cf”文件夹,并把/modules/admin/assets目录下的文件复制过去
在renderController()方法中首先调用findLayoutFile()方法,渲染出布局文件,然后调用View类的renderFile()方法,完成局部文件和使徒的渲染。...开始应用级布局 在一个应用中多个控制器使用一个布局文件,那么可以在应用级配置文件config/web.php中设置yii/base/Application的$layout属性,代码如下: $config...'viewPath' => 'xxx', ]; 配置文件config/web.php中的“viewPath”是yii\bash\Application类的属性.该类继承了yii\base\Module类...::getAlias($path); } } 在Module中并没有设施成员属性viewPath,但是使用viewPath成员属性时将自动调用_get()魔术方法间接调用getViewPath(...),同理在设置viewPath成员属性时将自动调用_get()魔术方法间接调用setViewPath()方法。
php namespace common\components; use yii\base\Component; class QCC extends Component...securityToken' => null, 'defaultBucket' => 'test-order-file', ], ], 4.控制器调用...$qcc = Yii::$app->get('name');//name必须是components内取的名字 $qcc->getName();
php namespace frontend\controllers; use Yii; use yii\web\Controller; class UserController extends Controller
Yii2中的composer 当我们安装完Yii2后打开目录我们会在安装目录下看到composer.json文件,里面有所需的信息和依赖的库。...每次我们需要安装所需的Yii2插件时,打开composer.json 找到 “require”如下: “require”: { “php”: “>=5.4.0”, “yiisoft/yii2”: “=2.0.10...”, “yiisoft/yii2-bootstrap”: “*”, “yiisoft/yii2-swiftmailer”: “*”, “qiniu/php-sdk”:”*”, “dmstr/yii2-adminlte-asset...”:”2.*”, “2amigos/yii2-file-upload-widget”: “~1.0”, “mdmsoft/yii2-admin”: “=2.7”, “yiisoft/yii2-jui”:...中的一个使用,它还有好多命令,大家可以参考Composer的官方网站,至于Yii2的插件,今后我会整理一下常用的插件方便大家使用。
注册进去了。怎么做的呢? 控制器: 视图: 即可。
wallet_price'], 'default', 'value' => 1], 设置默认值 exist : 存在||CExistValidator 的别名, 确保属性值存在于指定的数据表字段中....['level', 'in', 'range' => [1, 2, 3]]; unique : 唯一性||CUniqueValidator 的别名, 确保了特性在数据表字段中是唯一的.
好了,回到\yii\base\Application类的构造函数,这个函数最后调用了\yii\base\Component类的构造函数,但\yii\base\Component类是没有构造函数的,不过它继承了...回想最初调用的源头,其实它就是入口文件中需要进行实例化的\yii\web\Application类的对象啊。...),当赋值操作找不到components成员变量时会调用setComponents()方法,又去找这个方法的所在,终于在它的祖先类\yii\di\ServiceLocator中找到了setComponents...最后总结一下,其实yii创建应用实例的时候只是进行了各个组件的注册,也就是将组件的配置信息存入\yii\di\ServiceLocator类的私有成员变量$_definitions中,并没有进行实际创建...,等到程序运行过程中真正需要使用到某个组件的时候才根据该组件在$_definitions中保存的注册信息使用依赖注入容器\yii\di\Container进行组件实例的创建,然后把创建的实例存入私有成员变量
php $url = Yii::$app->request->getHostInfo().Url::to(['customer-detail/information', 'id' => $customer...php $url = Yii::$app->request->getHostInfo().Url::to(['customer-detail/information', 'id' => $customer
A7.关于GridView中footerOptions的使用。 在A6中我们说GridView的列有一个footerOptions属性,那么这个属性是干嘛用的那?...A9.showFooter的大家族 从A7中我们知道了GridView的showFooter,它决定这table是否显示tfoot信息,除此之外show家族还有一些其他成员。...B6.rowOptions 学会了B5,你可能看着rowOptions一眼识破,没错它的目的就是管理tbody下的每个tr,但是它更强大,除了直接接收一个数组外还能传入匿名函数。...: GridView对象 B7. beforeRow和afterRow 这是一对非常灵活的属性,它们接收一个匿名函数。...此功能是在yii2.0.14才支持的。 emptyCell 又是一个小细节,如果一个单元格为空,用什么字符填充那?默认是  ,你可以重新指定。
// config/web.php 'language'=>'zh-CN' 静态缓存问题 在用yii2的时候,我们习惯将静态文件(图片、css文件、js文件等)放到资源类中管理,但是可能存在浏览器缓存问题...开发中 本段为你介绍我在yii2开发中一些习惯和小技巧,希望对你有用。...模型的重要性 很多yii2的初学者喜欢将大量逻辑写到控制器的动作(action)中,这是不对的,我们的重点应该在模型中,而控制器仅仅是做输入输出。 我们拿关联举个例子,下面的这段代码是不好的。...当然从理念上说也有点不同 行为 一些类附加的属性 父类 一些类共同的属性 我的用法(不一定就是对的),尤其在模块中我喜欢为控制器增加一层父类。...入口文件 我们首先要改变yii2的运行模式,从开发模式变为生产模式,一般代码如下 // index.php defined('YII_DEBUG') or define('YII_DEBUG', false
自定义辅助函数 入口文件加载 目录下创建一个helpers目录下创建functions.php 文件 <?php if (!...自定义component 组件 在app\components下新建NewComponent.php namespace app\components; use Yii; use yii...Yii::$app->testcomponent->hello(); 自定义Modules 模块 以下参考yii2.0 权威指南 新建一个如下目录 forum/ Module.php...方法包含很多初始化模块属性代码, 可将他们保存在配置 并在init()中使用以下代码加载: public function init() { parent::init(); // 从config.php...模块其他配置 ... ], ], ] 访问路由 forum/post/index 代表模块中 post 控制器的 index 操作
Yii2底层分析 我是从入口处分析的。...中没有构造函数,所以我们顺理成章的找找 它的父类也就是\yii\base\Application,看看父类里面是否有构造函数 \yii\base\Application没有让我们失望, 构造方法如下...Component::__construct($config);//将配置文件中的所有信息赋值给Object,也就是Yii::$app->配置文件参数可以直接调用配置文件的内容 如:Yii:...']//也能同样做到 loadedModules是一个数组,存放成员类的。...Object是基础类,所以绝大部分类都能直接调用配置文件中配置内容 如: var_dump(Yii::$app->name); 实际上config文件的数组中有name属性 return [
原生写法如下 select * from vd_video order by locate(video_type_id,'3,7,6') desc Yii中写法如下 $type_ids =
YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下。 行为附加到组件后,行为将注入自已的方法和属性到组件,可以像组件访问自定义的方法和属性一样访问行为。...returnData函数 Controller::EVENT_AFTER_ACTION... { //控制器调用行为中的方法... { //控制器调用行为中的方法...然后我们访问/goods/index和/order/index,行为方法成功调用,结果如下: ?
本文就从Yii2 Advance版本的配置文件着手,详细介绍配置文件角度的Yii2框架,其中涉及到的部分内核方面的要点将在后续文章中逐一说明....用法是将所有路径在index.php中全部注册到全局容器Yii中.方法就是Yii::setAlias();方法....有两种情况,如果你的module或者component甚至一个名不见经传的对象引用了yii\base\BootstrapInterface接口,并实现了bootstrap()方法.将直接调用这个方法.如果没有引用...既然提到bootstrap,这个阶段Yii2还会调用所用的extension,做上述相同的事情.如果你自己编写了关于Yii2的扩展,这时候它将被实例化并缓存到Yii的对象容器中.至于extension的编写...'modules' 对应的modules(例如backend)目录下的Module对象的命名空间.方便Yii2进入你所定义的module. module在Yii2中是一组MVC的封装,这个概念可能在其他框架中不同