24. Yii2中下拉列表dropdownlist的用法

准确说,初学框架那段时间,使用下拉列表可不是件容易的事,包括怎么引入类class都需要去百度,手册找,而且几乎很多次都是徒劳无功.第一次使用地区三级联动还是用的网上的js插件,才插件中别人已经把地区信息以数组或者json的格式包装好了,不需要提供额外的数据
库支持,好处是直接使用.坏处是地区信息都很旧,比如我家所在地,记得是2012年已经将毕节地区改为市了,但是插件中还是使用毕业地区,这虽然没什么错,但已经说明这些数据其实也是作者搜索出来的,别的地方没有考证过,但肯定也有一些地区信息,已经在最近的几年被更改
过了,因此使用一定意义上是不正确的.

几乎在我遇到的项目中,地区信息都有自己的数据库,而且后台都有地区信息添加修改功能,所以地区的插件其实是不需要的,基本都要自己去写,这次也不例外.

Read More

23. Yii2如何重写Gii生成的列表页按钮

Gii默认生成的crud操作虽然简单,但是可定制的灵活性却没那么简便。如果默认的样式勉强够用,推荐使用gii生成,毕竟太便捷了。但是如果需要一些个性的可定制性,就得需要去了解很多额外的东西。这次我们讲解,如何重写默认生成的查看,编辑和删除操作按钮并新增按钮。

// 默认是不需要设置的,默认值是
[
    'class' => 'yii\grid\ActionColumn',
    'template' => '{view} {update} {delete}'
],

// 可以看到默认的实现方式是:
protected function initDefaultButtons()
{
    if (!isset($this->buttons['view'])) {
        $this->buttons['view'] = function ($url, $model, $key) {
            $options = array_merge([
                'class' => 'buttonViewLink',
                'title' => Yii::t('yii', '查看'),
                'aria-label' => Yii::t('yii', 'View'),
                'data-pjax' => '0',
            ], $this->buttonOptions);
            return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, $options);
        };
    }
}
// 即是使用Bootstrap的字体和样式实现的

因此就可以重写该类,覆盖原来的内容。因为常用的操作就这么多,修改默认样式和增加新按钮相对多些。比如不想用默认的图标,想改成汉字,比如”查看”, “编辑”, “删除”,则只需要改变return的行为就可以,

Read More