m_Orchestrate learning system---三十一、模板和需求的关系

m_Orchestrate learning system---三十一、模板和需求的关系

一、总结

一句话总结:模板为了适应广大用户,有很多功能样式,但是,你需要的只是部分,所以删掉不需要的,如果有需要,需要的时候再加上

删 需

1、bootstrap-switch(checkbox)怎么让switch在on的状态下传递值1过去控制器?

switch value 1

只需要将switch的value设置为1即可

因为thinkphp里面的checkbox的机制是选中才传值过去,不选中是不会传值的

就算switch的值设置为1,不选中的时候还是没有办法传递值过去

2、树形结构的上下级选中的js代码?

checkbox-parent checkbox-child dataid
 1 <script type="text/javascript">
 2     /* 权限配置 */
 3     $(function () {
 4         //动态选择框,上下级选中状态变化
 5         $('input.checkbox-parent').on('change', function () {
 6             var dataid = $(this).attr("dataid");
 7             $('input[dataid^=' + dataid + ']').prop('checked', $(this).is(':checked'));
 8         });
 9         $('input.checkbox-child').on('change', function () {
10             var dataid = $(this).attr("dataid");
11             dataid = dataid.substring(0, dataid.lastIndexOf("-"));
12             var parent = $('input[dataid=' + dataid + ']');
13             if ($(this).is(':checked')) {
14                 parent.prop('checked', true);
15                 //循环到顶级
16                 while (dataid.lastIndexOf("-") != 2) {
17                     dataid = dataid.substring(0, dataid.lastIndexOf("-"));
18                     parent = $('input[dataid=' + dataid + ']');
19                     parent.prop('checked', true);
20                 }
21             } else {
22                 //父级
23                 if ($('input[dataid^=' + dataid + '-]:checked').length == 0) {
24                     parent.prop('checked', false);
25                     //循环到顶级
26                     while (dataid.lastIndexOf("-") != 2) {
27                         dataid = dataid.substring(0, dataid.lastIndexOf("-"));
28                         parent = $('input[dataid=' + dataid + ']');
29                         if ($('input[dataid^=' + dataid + '-]:checked').length == 0) {
30                             parent.prop('checked', false);
31                         }
32                     }
33                 }
34             }
35         });
36     });
37 </script>

3、Auth权限管理规则无限级分类权限组选择权限的树形结构操作中,获取祖先id代码?

静态数组

注意代码里面的静态数组已经清空静态数组的操作

算法操作的思路为:從孩子id開始,通過遞歸一直找到所有祖先,並且返回

算法应用的场景为:规则格式化函数中

 1     //最後一個字段true的作用是為了清空下面的靜態數組
 2     public static function getparentid($authRuleId){
 3         $AuthRuleRes=db('auth_rule')->select();
 4         return self::_getparentid($AuthRuleRes,$authRuleId,True);
 5     }
 6 
 7     //從孩子id開始,通過遞歸一直找到所有祖先,並且返回
 8     public static function _getparentid($AuthRuleRes,$authRuleId,$clear=False){
 9         static $arr=array();
10         if($clear){
11             $arr=array();
12         }
13         foreach ($AuthRuleRes as $k => $v) {
14             if($v['aru_id'] == $authRuleId){
15                 $arr[]=$v['aru_id'];
16                 self::_getparentid($AuthRuleRes,$v['aru_pid'],False);
17             }
18         }
19         asort($arr);//父級編號始終比子集編號小
20         $arrStr=implode('-', $arr);
21         return $arrStr;//輸出結果為孩子id和祖先id,比如1-6
22     }

4、input标签内能否直接套用原生php(input标签<内能否套用<?php ?>)?

可以
<input name="rules[]" value="{$authRule.id}"
                                                        <?php $arr=explode(',', $authgroups['rules']); if(in_array($authRule['id'], $arr)){echo 'checked="checked"';} ?>
                                                         dataid="id-{$authRule.dataid}" class="inverted checkbox-parent {if condition="$authRule['level'] neq 0"} checkbox-child {/if} " type="checkbox">

5、如何判断一个数是否在数组中(php中函数)?

in_array()
<input name="rules[]" value="{$authRule.id}" <?php $arr=explode(',', $authgroups['rules']); if(in_array($authRule['id'], $arr)){echo 'checked="checked"';} ?> dataid="id-{$authRule.dataid}" class="inverted checkbox-parent {if condition="$authRule['level'] neq 0"} checkbox-child {/if} " type="checkbox">

6、php判断字段为空?

is_null empty isset

empty

如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,””、0、”0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。

  • 如果eNULLL e=NULL,它肯定是空,即empty($e)=true;
  • 如果eint e=0,就相对于数字,0代表为零,即empty($e)=true;
  • 如果estring e=”“,相对于字符串,”“就代表为是空,即empty($e)=true;
  • 如果estring e=”0”,相对于字符串,”0“就代表为是零,即empty($e)=true;
  • 如果ebool e=false,相对true,false就代表为空,即empty($e)=true;
  • 如果earray a=array(),相对数组来说,没有元素的数据就为空,即empty($e)=true;

isset

如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。

is_null

检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是null,它才返回TRUE . 其它都返回 FALSE 【未定义变量传入后会出错!】

== VS ===

在有些情况下,推荐使用isset来判断一个变量是否为NULL。
但是从语义上来说,一个变量”是否已显示初始化“和”是否为NULL“是不同的概念,在某些场景下使用isset是不合适的,比如检查一个函数的返回值是否为NULL。
此时可以使用”==”和”===“来判断它们是否为NULL。
对于”==”和”===“,它们直接的区别还是很大。对于”==”,它认同空字符串,0,false都为NULL。而对于”===”,只有一个变量真的为NULL,它才代表NULL。
另外”===”相对于”isset”来说,性能基本接近,甚至要好点。
因此综上述,判断一个变量是否为NULL最好的办法就是直接使用”===”,这样就不用在is_null,isset之间犹豫。其实上述的结论也同理于False的判断。

附录:

测试代码:

        $data = 0;
        $data1 = '0';
        $data2 = array();
        $data3 = null;
        $data4 = false;
        $data5 = "";

结果:

if (!变量)全部为true
if (isset(变量))全部为true
if (empty(变量))全部为true
if (is_null(变量))  只有nulltrue 其他为为false
if (变量==null) 只有'0'false,其他为true
if (变量===null) 只有nulltrue,其他false

7、sm尺寸下占1/6,xs尺寸下占全部如何實現?

col-sm-2
col-sm-2
1 <div class="form-group">
2     <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
3 
4     <div class="col-sm-10">
5         <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
6     </div>
7 </div>

8、实现任何看到的样式?

css 查看

因为都是html,css,所以完全可以查看然后copy样式实现相同的效果,非常简单方便

9、聚合查找,查找学校拥有的的班级数?

group
$school_class=db('school_class')->field('sc_s_id,count(sc_s_id)')->group('sc_s_id')->select();
dump($school_class);die;

结果:

array(3) {
  [0] => array(2) {
    ["sc_s_id"] => int(8)
    ["count(sc_s_id)"] => int(4)
  }
  [1] => array(2) {
    ["sc_s_id"] => int(9)
    ["count(sc_s_id)"] => int(4)
  }
  [2] => array(2) {
    ["sc_s_id"] => int(11)
    ["count(sc_s_id)"] => int(5)
  }
}

10、input:file显示样式优化的原理?

重叠 透明度 size 定位

显示出来的是button,button和input重叠了,点到button点到了input

input的透明度是0,input的size是50rem,而且是绝对定位

 1 <div class="fry_file">
 2     <button type="button" class="btn btn-danger btn-sm">
 3         <i class="fa fa-upload"></i> Select images to upload</button>
 4     <input class="fry_file_input" id="doc-form-file" type="file" accept="image/*" name="ep_picture[]" multiple="">
 5 </div>
 6 <div id="file-list"></div>
 7 <!--上傳顯示圖片的js-->
 8 <script>
 9     $(function() {
10         $('#doc-form-file').on('change', function() {
11             var fileNames = '';
12             $.each(this.files, function() {
13                 fileNames += '<span class="badge">' + this.name + '</span> ';
14             });
15             $('#file-list').html(fileNames);
16         });
17     });
18 </script>
19 <!--END 上傳顯示圖片的js-->
1 /*===================== input_file顯示樣式 =====================*/
2 .fry_file{
3     position: relative;overflow: hidden;margin-bottom: 1.5rem;
4 }
5 .fry_file .fry_file_input{
6     position: absolute;left: 0;top: 0;z-index: 1;width: 100%;opacity: 0;cursor: pointer;font-size: 50rem;
7 }

二、内容在总结中

 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/10056538.html