ホームページ > PHPフレームワーク > ThinkPHP > TP5.1+layuiは列番号の呼び出しを実現します

TP5.1+layuiは列番号の呼び出しを実現します

XuPing.Yang
リリース: 2021-05-08 08:58:14
オリジナル
1630 人が閲覧しました

IntegrationLayui TP5.1 では、列番号を呼び出す必要がある場合があり、データの動的な呼び出しが必要です。これまでに多くの方法を試しましたが、どれも機能しませんでした。JS データを確認しました。 call Later. メソッドを、layui と組み合わせて何度も試した結果、最終的にこの機能を実現する方法を見つけました。皆さんのお役に立てれば幸いです。

次の例は、都市を呼び出す例です。データベース フィールドには、id、order (並べ替え)、pid (上位レベルの都市 ID)、name (都市名) が含まれます。 /郡レベルと第 3 レベルの都市。

ステップ 1: Layui が提供した方法に従って、以下に示すように、まず HTML ページを作成します。

ここで、___ADMIN__ は自分自身です。構成されたスタイル パスを独自のパスに変更します。また、ここでのデータ呼び出しはjsデータ呼び出しを使用しているため、jqueryライブラリをロードする必要があります。ここではjquery-3.2.1を使用しています。以下に従って、対応するバージョンのjqueryをロードできます。 ライブラリ、ここではあまり説明しませんが、次のコードに進みます:

[HTML]

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <link rel="stylesheet" href="__ADMIN__/js/jquery-3.2.1.js">
   <link rel="stylesheet" href="__ADMIN__/layui/css/layui.css">
   <script type="text/javascript" src="__ADMIN__/layui/layui.js"></script>
</head>
<body>
<!--test12对应的是layuitree.render中的elem值,这两个值必须一致-->
<div id="test12"></div>
<script type="text/javascript">
layui.use([&#39;form&#39;,&#39;layer&#39;,&#39;element&#39;,&#39;tree&#39;, &#39;util&#39;],function(){
       $ = layui.jquery;
        var form = layui.form
        ,layer = layui.layer;
        var tree = layui.tree
        ,util = layui.util;
        var element = layui.element;
        form.on(&#39;checkbox(checkeds)&#39;, function(data){
           if(data.elem.checked){
               $(&#39;.checkone&#39;).prop(&#39;checked&#39;,true);
        }else{
               $(&#39;.checkone&#39;).prop(&#39;checked&#39;,false);
        }
           form.render(&#39;checkbox&#39;);
        });
   //调用数据
    $(document).ready(function(){
           $.get(&#39;{:url("getCategoryList")}&#39;).done(function (data) {
               var arr =$.parseJSON(data);
        //alert(arr);
        tree.render({
                   elem: &#39;#test12&#39;
        ,data: arr
                   ,showCheckbox: false  //是否显示复选框
        ,id: &#39;demoId1&#39;
        ,isJump: false //是否允许点击节点时弹出新窗口跳转
        ,click: function(obj){
                       //var data = obj.data;  //获取当前点击的节点数据
        var dump_url = obj.data.href;
        window.location.href = dump_url;
        //layer.msg(&#39;状态:&#39;+ obj.state + &#39;<br>节点数据:&#39; +                                 JSON.stringify(data));
        }
               });
        })
       });
});
</script>
</body>
</html>
ログイン後にコピー

ステップ 2: バックグラウンドの PHP コードを書きます。ここでは TP5.1 のルールに従ってコードを書きました。

[PHP コード]

//获取栏目信息
public function getCategoryList(){
   $id = Request::param(&#39;id&#39;);
   $parentId = $this->getAllParentId($id);//获取父级ID信息
   $list = AreaModel::where(&#39;pid&#39;,100000)
       ->where(&#39;status&#39;,0)
       ->order(&#39;order asc&#39;)
       ->select();
   $cate = array();
   foreach ($list as $key=>$v){
       $cate[$key][&#39;title&#39;] = $v[&#39;name&#39;];
       if(in_array($v[&#39;id&#39;],$parentId)){
           $cate[$key][&#39;checked&#39;] = &#39;true&#39;;
           $cate[$key][&#39;spread&#39;] = &#39;true&#39;;
       }

       $cate[$key][&#39;field&#39;] = &#39;name&#39;.$v[&#39;id&#39;];
       $cate[$key][&#39;id&#39;] = $v[&#39;id&#39;];
       $cate[$key][&#39;href&#39;] = "/yejuzhi/article/index?cid=".$v[&#39;id&#39;];
       $child = AreaModel::where(&#39;pid&#39;,$v[&#39;id&#39;])
           ->where(&#39;status&#39;,0)
           ->order(&#39;order asc&#39;)
           ->select();
       if($child){
           foreach ($child as $key1=>$c){
               /*$cate[$key][&#39;children&#39;][] = array(
                   &#39;title&#39; => $c[&#39;c_name&#39;],
                   &#39;id&#39; => $c[&#39;id&#39;],
                   &#39;href&#39; => "/yejuzhi/article/index?cid=".$c[&#39;id&#39;],
                   &#39;children&#39; => array()
               );*/
               $cate[$key][&#39;children&#39;][$key1][&#39;title&#39;] = $c[&#39;name&#39;];
               $cate[$key][&#39;children&#39;][$key1][&#39;checked&#39;] = &#39;true&#39;;
               $cate[$key][&#39;children&#39;][$key1][&#39;spread&#39;] = &#39;true&#39;;
               $cate[$key][&#39;children&#39;][$key1][&#39;field&#39;] = &#39;name&#39;.$c[&#39;id&#39;];
               $cate[$key][&#39;children&#39;][$key1][&#39;id&#39;] = $c[&#39;id&#39;];
               $cate[$key][&#39;children&#39;][$key1][&#39;href&#39;] = &#39;&#39;;
               $child1 = AreaModel::where(&#39;pid&#39;,$c[&#39;id&#39;])
                   ->where(&#39;status&#39;,0)
                   ->order(&#39;order asc&#39;)
                   ->select();
               foreach ($child1 as $key2=>$value){
                   $cate[$key][&#39;children&#39;][$key1][&#39;children&#39;][$key2][&#39;title&#39;] = $value[&#39;name&#39;];
                   $cate[$key][&#39;children&#39;][$key1][&#39;children&#39;][$key2][&#39;checked&#39;] = &#39;true&#39;;
                   $cate[$key][&#39;children&#39;][$key1][&#39;children&#39;][$key2][&#39;spread&#39;] = &#39;true&#39;;
                   $cate[$key][&#39;children&#39;][$key1][&#39;children&#39;][$key2][&#39;field&#39;] = &#39;name&#39;.$value[&#39;id&#39;];
                   $cate[$key][&#39;children&#39;][$key1][&#39;children&#39;][$key2][&#39;id&#39;] = $value[&#39;id&#39;];
                   $cate[$key][&#39;children&#39;][$key1][&#39;children&#39;][$key2][&#39;href&#39;] = &#39;&#39;;
               }
           }
       }

       //$cate[$key][&#39;children&#39;][] = array();
   }
   //dump($cate);
   return json_encode($cate);
}
ログイン後にコピー

上記でメソッドが使用されました:getAllParentId、このメソッドはすべての親 ID を取得するために特別に使用されます。以下はコード情報です:

//获取父级栏目
public function getAllParentId($id = 43){
   static $parentId;
   $cates = AreaModel::where(&#39;id&#39;,$id)->find();
   if($cates[&#39;pid&#39;]==0){
       $parentId[] = $cates[&#39;id&#39;];
   }
   $list = AreaModel::where(&#39;status&#39;,0)
       ->order(&#39;order asc&#39;)
       ->select();
   foreach ($list as $k => $v) {
       if ($cates[&#39;pid&#39;] == $v[&#39;id&#39;]) {
           $parentId[] = $v[&#39;id&#39;];
           $this->getAllParentId($v[&#39;id&#39;]);
       }
   }
   return $parentId;
}
ログイン後にコピー

試してみてください。お役に立てれば幸いです。 。ここにあるのは都市情報の循環出力です。他の情報を出力することもできます。データ呼び出しルールを変更するだけで済みます。ただし、親と子をどのように呼び出すかに関係なく、親と子を呼び出す必要があることに注意してください。存在する。 ######ありがとう!

関連する推奨事項:
最新の 10 件の thinkphp ビデオ チュートリアル

以上がTP5.1+layuiは列番号の呼び出しを実現しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート