自定义gii生成模块

来源:互联网 发布:mac响声很大 编辑:程序博客网 时间:2024/05/01 00:09

主要形成modal(弹出窗)模板风格:
1、将vendor\yiisoft\yii2-gii\generators\crud\default复制到backend\components\gii-custom\crud\default,在backend中缺少的文件自己创建,default中包含gii自动生成的代码
2、配置main-local.php

$config['modules']['gii']=[        'class' => 'yii\gii\Module',        'allowedIPs' => ['127.0.0.1','::1'],        'generators' => [            'crud'=>[            'class'=>'yii\gii\generators\crud\Generator',            'templates'=>[                'myCrud'=>'@app/components/gii-custom/crud/default',            ]            ]        ],    ];}

3、修改default中index.php的代码(都在该文件中中修改)
a.create按钮

 <p>        <?= "<?= " ?>Html::a(<?= $generator->generateString('创建' . Inflector::camel2words(StringHelper::basename($generator->modelClass))) ?>, ['create'], [                'class' => 'btn btn-success',                'id'=>'create',                'data-toggle'=>'modal',                'data-target'=>'#operate-modal',                ]) ?>    </p>

b、GridView和modal结合

            ['class' => 'yii\grid\ActionColumn',                'template'=>'{update}{delete}',                'header'=>'操作',                'buttons'=>[                    'update'=>function ($url,$model,$key){                        return Html::a('信息',$url,[                        'title'=>'栏目信息',                        'class'=>'btn btn-default btn-update',                        'data-toggle'=>'modal',                        'data-target'=>'#operate-modal',                        ]);                    },                    'delete'=>function ($url,$model,$kry){                        return Html::a('删除',$url,[                            'title'=>'删除',                            'class'=>'btn btn-default',                            'data'=>[                                'confirm'=>'确定删除吗?',                                'method'=>'post',                            ],                        ]);                    },                ],            ],

c、页面低端创建modal和create、update

    //创建modal    Modal::begin([    'id'=>'operate-modal',    'header'=>'<h4 class="modal-title"></h4>'    ]);    Modal::end();    //创建create    $requestCreateUrl=Url::toRoute('create');    //创建update    $requestUpdateUrl=Url::toRoute('update');    $js=<<<JS        //创建create操作        $('#create').on('click',function(){            $('.modal-title').html('创建');            $.get('{$requestCreateUrl}',function (data){                $('.modal-body').html(data);            });        });        //创建update操作        $('.btn-update').on('click',function{            $('.modal-title').html('删除');            $.get('{$requestUpdateUrl}',{id:$(this).closest('tr').data('key')},                function(data){                    $('.modal-body').html(data);                }            );        });JS;    $this->registerJs($js);

4、修改表单页面_fom.php

  <?= "<?php " ?>$form = ActiveForm::begin([        'id'=>'<?= Inflector::camel2id(StringHelper::basename($generator->modelClass)) ?>-id',        'enableAjaxValidation'=>true,//通过异步验证        'validationUrl'=>Url::toRoute('validate-form'),    ]);     ?>

5、在控制器中增加actionValidateForm验证

 //异步表单验证ValidateForm    public function actionValidateForm(){        $model=new <?=$modelClass?>();        $model->load(Yii::$app->request->post());        Yii::$app->response->format=yii\web\Response::FORMAT_JSON;        return \yii\widgets\ActiveForm::validate($model);    }

6、针对某个数据表可以gii生成相应的模板
注:自己也是学习白狼大哥的教程,只是作为自己学习的总结
http://www.manks.top/document/yii2-blog-manage.html