antonyz89 / yii2-templates
模型/CRUD 模板中的小改动
1.5.1
2021-08-23 17:43 UTC
Requires
- php: >=7.2
- symfony/polyfill-php80: *
- yii2mod/yii2-helpers: *
- yiisoft/yii2: ^2.0.5
- yiisoft/yii2-gii: *
README
安装
安装此扩展的首选方式是通过 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.php
的 ActiveForm::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.
来替换它为 ::tableName
或 alias
。
// 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