antonyz89/yii2-templates

模型/CRUD 模板中的小改动

安装量: 1,662

依赖者: 1

建议者: 0

安全: 0

星标: 2

关注者: 3

分支: 0

类型:yii2-extension

1.5.1 2021-08-23 17:43 UTC

This package is auto-updated.

Last update: 2024-09-13 04:34:54 UTC


README

Donate with PayPal

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一

php composer.phar require --prefer-dist antonyz89/yii2-templates dev-master

或添加

"antonyz89/yii2-templates": "dev-master"

到您的 composer.json 文件的 require 部分。

使用方法

environments/dev/common/config/main

并再次运行 php init

if (!YII_ENV_TEST) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['bootstrap'] = ['gii'];
    $config['modules']['debug'] = 'yii\debug\Module';

    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'generators' => [
            'model' => [
                'class' => 'antonyz89\templates\model\Generator',
                'templates' => [
                    'default' => '@antonyz89/templates/model/default', // add default template
                ]
            ],
            'crud' => [
                'class' => 'antonyz89\templates\crud\Generator',
                'templates' => [
                    'admin-lte' => '@antonyz89/templates/crud/admin-lte', // add admin-lte template
                    'material-lite' => '@antonyz89/templates/crud/material-lite', // add material-lite template
                    'material-bootstrap' => '@antonyz89/templates/crud/material-bootstrap', // add material-bootstrap template
                    'default' => '@antonyz89/templates/crud/default', // add default template
                ]
            ]
        ],
    ];
}

使用 _search.php 的简单 Pjax

仅适用于 Kartik GridView

使用 Gii 生成的任何模板的 CRUD,只需添加 YiiTemplateAsset 即可完成

使用方法

1 - 仅在 YOUR_MODULE/assets/AppAsset 上添加 YiiTemplateAsset

use antonyz89\templates\assets\YiiTemplatesAsset;

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [];
    public $js = [];
    public $depends = [
        YiiTemplatesAsset::class // ADD
    ];
}

2 - 现在,只需在 GridView 上启用 pjax

GridView::widget([
    'dataProvider' => $dataProvider,
    'pjax' => true, // here
    'columns' => [
        'id',
        'name',
        [
            'class' => 'kartik\grid\ActionColumn',
            'width' => '150px',
            'buttonOptions' => [
                'class' => 'btn btn-sm btn-default'
            ],
            'updateOptions' => [
                'class' => 'btn btn-sm btn-primary'
            ],
            'deleteOptions' => [
                'class' => 'btn btn-sm btn-danger'
            ]
        ]
    ]
]);

3 - 在 _search 的表单上添加 data-ajax => true

<div class="example-search">

    <?php $form = ActiveForm::begin([
        'action' => ['index'],
        'method' => 'get',
        'options' => [
            'data-pjax' => true // HERE
        ],
    ]); ?>

    <div class="row">
        <div class="col-md-1">
            <?= $form->field($model, 'id') ?>
        </div>
        <div class="col-md-5">
            <?= $form->field($model, 'name') ?>
        </div>
    </div>

    <?php ActiveForm::end(); ?>

</div>

完成!

在 _search 的字段中键入,GridView 将重新加载

仅从表单提交使用 Pjax

要仅从表单提交使用 Pjax,只需在 _search.phpActiveForm::begin 上添加 'pjax-only-on-submit' => true

<?php $form = ActiveForm::begin([
        'action' => ['index'],
        'method' => 'get',
        'options' => [
            'data-pjax' => true,
            'pjax-only-on-submit' => true // HERE
        ],
    ]); ?>

ActiveQuery

别名

在查询中使用 @alias. 来替换它为 ::tableNamealias

// Query
User::find()->alias('example')->where(['@alias.name' => 'Antony'])->groupBy('@alias.age');
# result
SELECT `user`.* FROM `user` as `example` WHERE `example`.`name` = 'Antony' GROUP BY `example`.`age`

禁用 GROUP BY

设置 $query->groupBy(false) 来禁用查询中的任何 GROUP BY