V2.0 - 布局示例
yoyocmf 2020-02-22 22:06:12

page页面右侧加按钮

1.jpg

XML/HTML Code复制内容到剪贴板
  1. <div class="page enewsworkflowitem-index">  
  2.   
  3.     <div class="page-header">  
  4.         <h1 class="page-title">  
  5.             <?= Html::encode($this->title) ?>  
  6.         </h1>  
  7.         <div class="page-header-actions">  
  8.             <button type="button" class="btn btn-icon btn-inverse btn-round return-page">  
  9.                 <i class="icon wb-reply" aria-hidden="true"></i>  
  10.             </button>  
  11.             <button type="button" class="btn btn-icon btn-inverse btn-round reload-page">  
  12.                 <i class="icon wb-refresh" aria-hidden="true"></i>  
  13.             </button>  
  14.             <?= Html::a('<i class="icon fa-plus" aria-hidden="true"></i> 增加节点', ['create'], ['class' => 'btn btn-inverse btn-round','data-ajax' => '1', 'data-target' => '_blank','data-title'=>'新增']) ?>  
  15.         </div>  
  16.     </div>  
  17.   
  18.   
  19.   
  20.     <div class="page-content">  
  21.   
  22.     //... 页面内容  
  23.   
  24.     </div>  
  25.   
  26. </div>  

 

 

Horizontal Form 

Horizontal Form.png

PHP Code复制内容到剪贴板
  1. <div class="menu-form">  
  2.     <?php $form = ActiveForm::begin([  
  3.         'options' => [  
  4.             'class' => 'form-horizontal'  
  5.         ],  
  6.         'fieldConfig' => [  
  7.             'options' => ['class' => 'form-group row'],  
  8.             'labelOptions' => ['class' => 'col-md-2 col-form-label text-right'],  
  9.             'template' => "{label}\n<div class='col-md-6'>{input}</div>\n{hint}\n{error}",  
  10. //            'inputOptions' => ['class' => 'form-control'],  
  11.             'errorOptions' => ['class' => 'col-md-4 text-danger help-block'],  
  12.         ],  
  13.     ]); ?>  
  14.     <?= Html::activeHiddenInput($model'bclassid', ['classid' => 'bclassid']); ?>  
  15.     <?= Html::activeHiddenInput($model'app_id', ['value' => Yii::$app->id]); ?>  
  16.   
  17.     <div class="card-body">  
  18.         <?= $form->field($model'icon')->widget(\backend\widgets\iconpicker\IconPickerWidget::className()) ?>  
  19.         <?= $form->field($model'classname')->textInput(['maxlength' => 128]) ?>  
  20.   
  21.         <?= $form->field($model'parent_name')->dropDownList(Menu::getDropDownList(\common\helpers\Tree::build($model::find()->asArray()->all(), 'classid''bclassid''children', null)), ['encode' => false, 'prompt' => '请选择''id' => 'parent_name'])->label("父菜单") ?>  
  22.   
  23.         <?= $form->field($model'classurl')->textInput(['id' => 'route']) ?>  
  24.   
  25.         <?= $form->field($model'intro')->textarea(['class'=>'form-control']) ?>  
  26.   
  27.         <?= $form->field($model'sort')->input('number') ?>  
  28.   
  29.     </div>  
  30.   
  31.     <div class="card-footer">  
  32.   
  33.         <div class="col-md-10 offset-sm-2">  
  34.         <?=  
  35.         Html::submitButton($model->isNewRecord ? Yii::t('rbac-admin''Create') : Yii::t('rbac-admin''Update'), ['class' => $model->isNewRecord  
  36.             ? 'btn btn-success' : 'btn btn-primary'])  
  37.         ?>  
  38.         </div>  
  39.   
  40.     </div>  
  41.     <?php ActiveForm::end(); ?>  
  42. </div>  

 

 WX20200226-141830@2x.png

PHP Code复制内容到剪贴板
  1. <div class="card card-primary">  
  2.                         <div class="card-header">  
  3.                             <h3 class="card-title">栏目选项</h3>  
  4.   
  5.                             <div class="card-tools">  
  6.                                 <button type="button" class="btn btn-tool" data-card-widget="collapse"><i  
  7.                                             class="fas fa-minus"></i>  
  8.                                 </button>  
  9.                             </div>  
  10.                             <!-- /.card-tools -->  
  11.                         </div>  
  12.                         <!-- /.card-header -->  
  13.                         <div class="card-body">  
  14.   
  15.                             <?= $form->field($model'showclass', [  
  16.                                 'template' => "{label}\n<div class='col-md-3 col-form-label'>{input}</div><div class='col-md-3 col-form-label text-gray'>(如:导航标签,地图标签)</div>\n{hint}\n{error}"  
  17.                             ])->radioList(  
  18.                                 ['1' => '显示''0' => '不显示'],  
  19.                                 [  
  20. //                                    'tag' => false,  
  21.                                     'item' => function ($index$label$name$checked$value) {  
  22.                                         $c = $checked ? "checked" : "";  
  23.                                         $template = '<input type="radio" name="' . $name . '" value="' . $index . '" title="' . $label . '" ' . $c . '><label class="form-check-label ml-2 mr-2"> ' . $label . '</label>';  
  24.                                         return $template;  
  25.                                     }  
  26.                                 ]) ?>  
  27.   
  28.                             <?= $form->field($model'sort', [  
  29.                                 'template' => "{label}\n<div class='col-md-3'>{input}</div><div class='col-md-3 col-form-label text-gray'>(值越小越前面)</div>\n{hint}\n{error}"  
  30.                             ])->input('number') ?>  
  31.   
  32.                         </div>  
  33.                         <!-- /.card-body -->  
  34.                     </div>  
  35.                     <!-- /.card -->  

 

 

PHP Code复制内容到剪贴板
  1. <div class="card card-primary">  
  2.                         <div class="card-header">  
  3.                             <h3 class="card-title">后台信息发布设置</h3>  
  4.   
  5.                             <div class="card-tools">  
  6.                                 <button type="button" class="btn btn-tool" data-card-widget="collapse"><i  
  7.                                             class="fas fa-minus"></i>  
  8.                                 </button>  
  9.                             </div>  
  10.                             <!-- /.card-tools -->  
  11.                         </div>  
  12.                         <!-- /.card-header -->  
  13.                         <div class="card-body">  
  14.   
  15.                             <div class="form-group row field-enewsclass-islast required">  
  16.                                 <label class="col-md-2 col-form-label text-right">增加/编辑信息</label>  
  17.                                 <div class="col-md-2 col-form-label">  
  18.   
  19.                                     <?= Html::activeCheckboxList($model"addreinfo", ['1' => '生成内容页'], [  
  20. //                    'class'=>'form-check',  
  21.                                         'item' => function ($index$label$name$checked$value) {  
  22.                                             $c = $checked ? "checked" : "";  
  23.                                             $template = '<input type="checkbox" name="' . $name . '" value="' . $index . '" title="' . $label . '" ' . $c . '><label class="form-check-label ml-2"> ' . $label . '</label>';  
  24.                                             return $template;  
  25.                                         },  
  26.                                     ]); ?>  
  27.   
  28.   
  29.                                     <?= Html::activeCheckboxList($model"repreinfo", ['1' => '生成上一篇信息'], [  
  30.                                         'item' => function ($index$label$name$checked$value) {  
  31.                                             $c = $checked ? "checked" : "";  
  32.                                             $template = '<input type="checkbox" name="' . $name . '" value="' . $index . '" title="' . $label . '" ' . $c . '><label class="form-check-label ml-2"> ' . $label . '</label>';  
  33.                                             return $template;  
  34.                                         },  
  35.                                     ]); ?>  
  36.   
  37.                                     <?= Html::activeCheckboxList($model"sametitle", ['1' => '检测标题重复'], [  
  38.                                         'item' => function ($index$label$name$checked$value) {  
  39.                                             $c = $checked ? "checked" : "";  
  40.                                             $template = '<input type="checkbox" name="' . $name . '" value="' . $index . '" title="' . $label . '" ' . $c . '><label class="form-check-label ml-2"> ' . $label . '</label>';  
  41.                                             return $template;  
  42.                                         },  
  43.                                     ]); ?>  
  44.   
  45.                                 </div>  
  46.   
  47.                                 <label class="col-md-2 col-form-label text-right">生成列表:</label>  
  48.                                 <div class="col-md-2">  
  49.   
  50.                                     <?= Html::activeDropDownList($model"haddlist", ['0' => '不生成','1'=>'生成当前栏目','2'=>'生成首页','3'=>'生成父栏目','4'=>'生成当前栏目与父栏目','5'=>'生成父栏目与首页','6'=>'生成当前栏目、父栏目与首页'],['class'=>'form-control']); ?>  
  51.                                 </div>  
  52.   
  53.                             </div>  
  54.   
  55.                             <?=$form->field($model,"wfid",[  
  56.                                 'template' => "{label}\n<div class='col-md-3'>{input}</div>\n{hint}\n{error}"  
  57.                             ])->dropDownList([], ['prompt'=>'不使用工作流'])?>  
  58.   
  59.                         </div>  
  60.                         <!-- /.card-body -->  
  61.                     </div>  
  62.                     <!-- /.card -->  

 

WX20200413-213743@2x.png 

PHP Code复制内容到剪贴板
  1. <?php $form = ActiveForm::begin([  
  2.     'options' => [  
  3.         'class' => 'form-horizontal',  
  4.         'data-ajax' => 1,  
  5.         'data-callback' => 'parent.location.reload();'  
  6.     ],  
  7.     'fieldConfig' => [  
  8.         'options' => ['class' => 'form-group row'],  
  9.         'labelOptions' => ['class' => 'col-md-3 col-form-label text-right'],  
  10.         'template' => "{label}\n<div class='col-md-5'>{input}</div>\n{hint}\n{error}",  
  11. //            'inputOptions' => ['class' => 'form-control'],  
  12.         'errorOptions' => ['class' => 'col-md-2 text-danger help-block'],  
  13.     ],  
  14. ]); ?>  
  15.   
  16. <div class="card-body classification-form">  
  17.   
  18.     <?= Html::activeHiddenInput($model'classid', ['value' => $model->classid]) ?>  
  19.   
  20.     <?= Html::hiddenInput('oldbclassid', ['value' => $model->bclassid]) ?>  
  21.   
  22.     <?= $form->field($model'bclassid')->dropDownList(Classification::getDropDownTreeList($model->classid), ['encode' => false, 'prompt' => '顶级分类''id' => 'parent_name'])->label("所属父栏目") ?>  
  23.   
  24.     <?= $form->field($model'classname')->textInput(['maxlength' => true]) ?>  
  25.   
  26.     <?= $form->field($model'classimg')->widget(\common\modules\attachment\widgets\SingleAndChooseWidget::className(), [  
  27.         'onlyUrl' => true  
  28.     ]) ?>  
  29.   
  30.     <?= $form->field($model'islast', [  
  31.         'template' => "{label}\n<div class='col-md-2'>{input}</div><div class='col-md-4'><span class='text-danger'>(非终级分类下才能增加信息)</span></div>\n{hint}\n{error}"  
  32.     ])->checkboxList([1 => '是'], [  
  33.         'item' => function ($index$label$name$checked$value) {  
  34.             $c = $checked ? "checked" : "";  
  35.             $template = '<input type="checkbox" name="' . $name . '" value="' . $value . '" title="' . $label . '" ' . $c . '><label class="form-check-label ml-2"> ' . $label . '</label>';  
  36.             return $template;  
  37.         },  
  38.     ]); ?>  
  39.   
  40.     <?= $form->field($model'showclass', [  
  41.         'template' => "{label}\n<div class='col-md-3 col-form-label'>{input}</div>\n{hint}\n{error}"  
  42.     ])->radioList(  
  43.         ['1' => '显示''0' => '不显示'],  
  44.         [  
  45.             'item' => function ($index$label$name$checked$value) {  
  46.                 $c = $checked ? "checked" : "";  
  47.                 $template = '<input type="radio" name="' . $name . '" value="' . $value . '" title="' . $label . '" ' . $c . '><label class="form-check-label ml-2 mr-2"> ' . $label . '</label>';  
  48.                 return $template;  
  49.             }  
  50.         ]) ?>  
  51.   
  52.     <?= $form->field($model'sort')->input('number') ?>  
  53.   
  54. </div>  
  55. <div class="card-footer form-group">  
  56.     <div class="col-md-7 offset-md-3">  
  57.         <?= Html::submitButton($model->isNewRecord ? '新增' : '更新', ['class' => 'btn btn-success']) ?>  
  58.     </div>  
  59. </div>  
  60. <?php ActiveForm::end(); ?>  

 

model示例:

PHP Code复制内容到剪贴板
  1. /** 
  2.  * 获取下拉树列表 
  3.  * 
  4.  * @param string $id 
  5.  * @return array 
  6.  */  
  7. public static function getDropDownTreeList($id = '')  
  8. {  
  9.     $list = self::find()  
  10.         ->where(['=''showclass', StatusEnum::STATUS_ON])  
  11.         ->andFilterWhere(['<>''classid'$id])  
  12.         ->select(['classid''bclassid''classname''islast','sonclass'])  
  13.         ->orderBy('sort asc')  
  14.         ->asArray()  
  15.         ->all();  
  16.     $tree = \common\helpers\Tree::build($list,'classid''bclassid''children', 0);  
  17.     return self::getDropDownList($tree);  
  18. }  
  19. /** 
  20.  * 获取下拉选择,树列表 
  21.  * @param array $tree 
  22.  * @param array $result 
  23.  * @param int $deep 
  24.  * @param string $separator 
  25.  * @return array 
  26.  */  
  27. protected static function getDropDownList($tree = [], &$result = [], $deep = 0, $separator = ' &nbsp;&nbsp;&nbsp;&nbsp;'){  
  28.     $deep++;  
  29.     foreach ($tree as $list) {  
  30.         $result[$list['classid']] = str_repeat($separator$deep - 1) . $list['classname'];  
  31.         if (isset($list['children'])) {  
  32.             self::getDropDownList($list['children'], $result$deep);  
  33.         }  
  34.     }  
  35.     return $result;  
  36. }  

 

id / title / parent_id

PHP Code复制内容到剪贴板
  1. /** 
  2.      * 获取下拉树列表 
  3.      * 
  4.      * @param string $id 
  5.      * @return array 
  6.      */  
  7.     public static function getDropDownTreeList($id = '')  
  8.     {  
  9.         $list = self::find()  
  10.             ->where(['=''status', StatusEnum::STATUS_ON])  
  11.             ->andFilterWhere(['<>''id'$id])  
  12.             ->select(['id''parent_id''title','son'])  
  13.             ->orderBy('sort asc')  
  14.             ->asArray()  
  15.             ->all();  
  16.         $tree = \common\helpers\Tree::build($list,'id''parent_id''children', 0);  
  17.         return self::getDropDownList($tree);  
  18.     }  
  19.     /** 
  20.      * 获取下拉选择,树列表 
  21.      * @param array $tree 
  22.      * @param array $result 
  23.      * @param int $deep 
  24.      * @param string $separator 
  25.      * @return array 
  26.      */  
  27.     protected static function getDropDownList($tree = [], &$result = [], $deep = 0, $separator = '&nbsp;&nbsp;&nbsp;&nbsp;'){  
  28.         $deep++;  
  29.         foreach ($tree as $list) {  
  30.             $result[$list['id']] = str_repeat($separator$deep - 1) . $list['title'];  
  31.             if (isset($list['children'])) {  
  32.                 self::getDropDownList($list['children'], $result$deep);  
  33.             }  
  34.         }  
  35.         return $result;  
  36.     }  

 

id / title

PHP Code复制内容到剪贴板
  1. /** 
  2.  * 获取所有列表供下拉列表使用 
  3.  * @return array 
  4.  */  
  5. static function getListDropDownList($where = []){  
  6.     $query = self::find()->select('id,title');  
  7.     $query->andFilterWhere($where);  
  8.     $list = $query->orderBy('sort asc')->asArray()->all();  
  9.     return ArrayHelper::map($list,"id","title");  
  10. }  

 

checkbox布局示例 

WX20200720-144939@2x.png 

PHP Code复制内容到剪贴板
  1. <?php $form = ActiveForm::begin([  
  2.     'options' => [  
  3.         'id' => 'memberForm',  
  4.         'data-ajax' => 1,  
  5.         'data-callback' => 'parent.location.reload();'  
  6.     ],  
  7.     'fieldConfig' => [  
  8.         'options' => [  
  9.             'class' => 'form-group row',  
  10.         ],  
  11.         'labelOptions' => [  
  12.             'class' => 'col-form-label col-md-3'  
  13.         ],  
  14.         'template' => "{label}\n<div class='col-md-5'>{input}\n{hint}</div>\n{error}",  
  15.         'errorOptions' => ['class' => 'col-md-4 text-danger help-block'],  
  16.     ],  
  17. ]); ?>  
  18.                 <?= $form->field($model'org_id', [  
  19.                     "options" => [  
  20.                         "class" => "form-group row select2-danger"  
  21.                     ]  
  22.                 ])->widget(\backend\widgets\select2\Select2Widget::className(), [  
  23.                     "data" => $organization  
  24.                 ]) ?>  
  25.   
  26.                 <?= $form->field($model'role')->dropDownList($roleList, [  
  27.                     'encode' => false,  
  28.                     'prompt' => '请选择',  
  29.                     'data-plugin' => 'selectpicker',  
  30.                     'multiple' => true,  
  31.                     'title' => '请选择角色,支持多选',  
  32.                 ]) ?>  
  33.   
  34.                 <?= $form->field($model'identity')->customInlineRadioList(OrganizationMember::getIdentityEnum()) ?>  
  35.   
  36.                 <?= $form->field($model'executive', [  
  37.                     "options" => [  
  38.                         "class" => "offset-md-3"  
  39.                     ]  
  40.                 ])->customCheckbox() ?>  

 

视图显示树列表

 1、视图文件:

PHP Code复制内容到剪贴板
  1. <?= \backend\widgets\grid\TreeGrid::widget([  
  2.     'dataProvider' => $dataProvider,  
  3.     'keyColumnName' => 'department_id',  
  4.     'parentColumnName' => 'parent',  
  5.     'parentRootValue' => null, //first parentId value  
  6.     'pluginOptions' => [  
  7.         'initialState' => 'expanded',// expanded默认展开,collapse收起,只显示一级栏目  
  8.     ],  
  9.     'columns' => [  
  10.         'department_name',  
  11.         'level',  
  12.         'myorder',  
  13.         [  
  14.             'class' => 'yii\grid\ActionColumn',  
  15.             'template' => '{create} {view} {update} {delete}',  
  16.             'buttons' => [  
  17.                 'create' => function ($url$model) {  
  18.                     return Html::a("<i class='fa fa-plus'></i>", ['create''id' => $model->department_id], ['class' => 'btn btn-default btn-xs']);  
  19.                 }  
  20.             ]  
  21.         ],  
  22.     ],  
  23. ]); ?>  

 

2、如果使用searchModel,数据不要分页:

PHP Code复制内容到剪贴板
  1. 'pagination' => false,  //不分页  

WX20181218-201352@2x.png

参照【文档管理】 - 【资料树挂载】

 1.png

 

树列表的遍历删除子级

PHP Code复制内容到剪贴板
  1. /** 
  2.      * 递归删除子分类 
  3.      */  
  4.     public function afterDelete()  
  5.     {  
  6.         $ids = $this->getChildrenIds($this->id);  
  7.         self::deleteAll(["in","id",$ids]);  
  8.         parent::afterDelete();  
  9.     }  
  10.   
  11.     public function getChildrenIds($categoryId)  
  12.     {  
  13.         $ids = [];  
  14.         $res = self::find()->where(["pid" => $categoryId])->all();  
  15.         if ($res) {  
  16.             foreach ($res as $val) {  
  17.                 $ids[] = $val['id'];  
  18.                 $ids = array_merge($ids,$this->getChildrenIds($val['id']));  
  19.             }  
  20.         }  
  21.         return $ids;  
  22.     }  

 

 

 

 

上传bse64编码的图片

暂只支持 oss / local

PHP Code复制内容到剪贴板
  1. //定义图片储存文件目录  
  2.         $saveDir = Yii::getAlias("@storagePath")."/discern-helmet/" . date("Ymd") . "/";  
  3.         $base64Img = "data:image/jpg;base64,".$picpath//统一保存为jpg格式,由于前面没有这一串,所以手动拼接上  
  4.         $r = Attachment::uploadFromBase64($saveDir,$base64Img,"oss");  

 

美化input框

2.png

PHP Code复制内容到剪贴板
  1. <?= $form->field($model'amount')->append('<span class="input-group-text">万元</span>')->label("项目金额") ?>  

 

 

 

 

本文来自于:http://www.yoyo88.cn/note/yoyocmf/496.html

上一篇 V2.0版本
Powered by yoyo苏ICP备15045725号