上文中后台模板框架已经搭建起来了,但还是有些不协调,像是有两个User标题,或者我们想自己在gii生成时添加或删除些公用的东西。这就需要我们定义自己的gii模板。
我们以CRUD的模板为例,默认的gii模板位置是在:vendor/yiisoft/yii2-gii/generators/crud的default目录下,我们当然可以在此新建一个和default并列的目录,但是并不推荐在这里新建,因为这里是vendor目录,正如上章所说的,vendor目录下的东西尽量不要去更改,这样你在git发布时或团队共享时不需要提交vendor目录,比较方便。
正确的方法是,将default文件夹复制出来,移动到你想移动到的位置,我这里移动到了backend/views/gii/crud目录下,然后更改改backend/common/main-local.php下的gii配置:
<span style="color: #800080;">$config</span>['bootstrap'][] = 'gii'<span style="color: #000000;">; </span><span style="color: #800080;">$config</span>['modules']['gii'] =<span style="color: #000000;"> [ </span>'class' => 'yii\gii\Module', 'generators' => [ <span style="color: #008000;">//</span><span style="color: #008000;">here</span> 'crud' => [ <span style="color: #008000;">//</span><span style="color: #008000;"> generator name</span> 'class' => 'yii\gii\generators\crud\Generator', <span style="color: #008000;">//</span><span style="color: #008000;"> generator class</span> templates'<span style="color: #000000;"> => [ //setting for out templates </span>'vishun' => '@backend/views/gii/crud/<span style="color: #0000ff;">default</span>'<span style="color: #000000;">, // template name => path to template ] ] ], ]; </span>
这样,再访问gii中的CRUD生成器就会发现多了一个选择:(如果改的是backend的配置,那么只能通过后台的url访问gii才会出现多出来的选项)
记得要改拷贝过来的内容,例如删除掉多出来的标题什么的,然后重新生成一遍,就可以看到改变后的效果了。如果是团队合作,也应该将这个写入到环境中去。
再说下AdminLTE,我们在其官方演示站时,会发现模板集成了很多的漂亮功能,例如在Forms/Advanced Elements中select2,下拉菜单是箭头的样式。用firebug查看其css编发现引用了select2.min.css这个css。再回到我们自己的站点同样看下,便会发现我们站点没有这么一个css。所以我们要着手将其引入,但在此之前,需要先了解Yii2中如何在页面中引入js或者css。下面以引入js为例,css与此相同:
方法一、直接同在html中一样:(不建议使用,会导致依赖顺序错乱)
<span style="color: #008000;">//</span><span style="color: #008000;">外部js文件</span> <script src="%E4%BD%A0%E7%9A%84js%E8%B7%AF%E5%BE%84/plugins/select2/select2r.min.js"> <span style="color: #008000;">//<span style="color: #008000;">或者 <?=Html::jsFile('你的js路径/plugins/select2/select2r.min.js')?> <span style="color: #008000;">//<span style="color: #008000;">内部js <script> <span style="color: #0000ff;">var a='abc' </script>
方法二、用$this->registerJs
和$this->registerJsFile
方法(可控依赖顺序,但是引入外部js时建议用方法三)
<span style="color: #800080;">$this</span>->registerJs("var options = ".json_encode(<span style="color: #800080;">$options</span>).";", View::POS_END, 'my-options');<span style="color: #008000;">//</span><span style="color: #008000;">引入内部js</span> <span style="color: #800080;">$this</span>->registerJsFile('http://example.com/js/main.js', ['depends' => [\yii\web\JqueryAsset::className()]]);<span style="color: #008000;">//</span><span style="color: #008000;">引入外部js文件</span>
方法三、引入外部js式时,利用Yii2新功能注册资源包来部署(功能更强大,例如可以转换less,压缩合并等),可参照backend/assets/AppAsset.php文件:
<span style="color: #000000;">namespace backend\assets; </span><span style="color: #0000ff;">use</span><span style="color: #000000;"> yii\web\AssetBundle; </span><span style="color: #0000ff;">class</span> AppAsset <span style="color: #0000ff;">extends</span><span style="color: #000000;"> AssetBundle { </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$basePath</span> = '@webroot'<span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$baseUrl</span> = '@web'<span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$css</span> =<span style="color: #000000;"> [ </span>'css/site.css',<span style="color: #000000;"> ]; </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$js</span> =<span style="color: #000000;"> [ ]; </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$depends</span> =<span style="color: #000000;"> [ </span>'yii\web\YiiAsset', 'yii\bootstrap\BootstrapAsset',<span style="color: #000000;"> ]; }</span>
定义此类后,在视图文件中:
backend\assets\AppAsset::register(<span style="color: #800080;">$this</span>);
即可将定义的site.css以及关联的'yii\web\YiiAsset'和'yii\bootstrap\BootstrapAsset'定义的css和js引入。更多功能请看YII2权威指南中的“客户端脚本”和“资源”两个章节。
既然已了解以上引入方法,可以继续我们引入select2的计划,我们先看下我们站点引入了哪些资源,在你copy后的layouts/main.php中:
<span style="color: #0000ff;">if</span> (<span style="color: #008080;">class_exists</span>('backend\assets\AppAsset'<span style="color: #000000;">)) { backend\assets\AppAsset</span>::register(<span style="color: #800080;">$this</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { app\assets\AppAsset</span>::register(<span style="color: #800080;">$this</span><span style="color: #000000;">); } dmstr\web\AdminLteAsset</span>::register(<span style="color: #800080;">$this</span>);
先是注册了本来就有的AppAsset,然后又注册了dmstr\web命名空间下的AdminLteAsset,我们追溯到此文件下就会发现里面只引入了vendor/almasaeed2010/dist文件中的AdminLTE.min.css和变动的*.min.css这两个css文件(almasaeed2010文件是我们compose下载yii2-adminlte-asset自动下载的依赖文件),但我们打开vendor/almasaeed2010/adminlte/plugins下,会发现还有很多的功能,我们上方提到的select2也在其中。我们当然可以在AdminLteAsset.php的平级建立Select2Asset.php文件,但理由同上方gii模板时说的,最好不要改动vendor下的文件,所以我们将此文件建立在backend/assets中,具体文件内容可参考:
<span style="color: #000000;">php namespace backend\assets; </span><span style="color: #0000ff;">use</span><span style="color: #000000;"> yii\web\AssetBundle; </span><span style="color: #0000ff;">class</span> Select2Asset <span style="color: #0000ff;">extends</span><span style="color: #000000;"> AssetBundle { </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$sourcePath</span> = '@vendor/almasaeed2010/adminlte/plugins/select2';<span style="color: #008000;">//</span><span style="color: #008000;">路径</span> <span style="color: #0000ff;">public</span> <span style="color: #800080;">$css</span> =<span style="color: #000000;"> [ </span>'select2.min.css',<span style="color: #008000;">//</span><span style="color: #008000;">css</span> <span style="color: #000000;"> ]; </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$js</span> =<span style="color: #000000;"> [ </span>'select2.min.js'<span style="color: #008000;">//</span><span style="color: #008000;">js</span> <span style="color: #000000;"> ]; </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$depends</span> =<span style="color: #000000;"> [ </span>'dmstr\web\AdminLteAsset',<span style="color: #008000;">//</span><span style="color: #008000;">依赖关系</span> <span style="color: #000000;"> ]; }</span>
同时在layouts/main.php中:
backend\assets\Select2Asset::register(<span style="color: #800080;">$this</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> dmstr\web\AdminLteAsset::register($this);</span>
可以将AdminLteAsset这行注释掉,因为我们在Select2Asset中写明了依赖AdminLteAsset,所以会自动注册依赖文件的css和js,这时我们再次查看元素,就会发现多了select2.min.css和select2.min.js,有了这两个我们便可以使用三角样式的下拉菜单了。
以上就这样了,睡觉先。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음