-1

私のサイトを PHP OOP アプローチに移行する方法を理解することに近づいていると思います。

ユーザーごとに異なるページを用意しています。これは、JavaScript で生成されたグリッドに対するニーズがユーザーごとに異なるためです。保守性のために、以下に示すように、1 つのページを作成して、javascript に php を挿入することはできますか?? PHP変数をMySQLに保持し、 $_SESSION['user_id'];?? に応じて吐き出すのが標準的な方法ですか? これまでの私の考えが正しい道を進んでいるかどうか疑問に思っていますか?

ORIGINAL GRID
var mygrid;

            function doInitGrid(){  
            mygrid = new dhtmlXGridObject('gridbox');
            var combo=mygrid.getCombo(4);
            combo.put(2, 'Approve / Deny');
            combo.put(1, 'Approve');
            combo.put(0, 'Deny');
            mygrid.setImagePath("../codebase/imgs/");           
            mygrid.setHeader("Submit Date, Manufacturer, Product Category, Progress, Approval Status",null,["text-align:center;","text-align:center;","text-align:center","text-align:center","text-align:center"]);        
            <!--mygrid.attachHeader("#text_filter,#text_filter,#text_filter");-->
            mygrid.setInitWidthsP("10,16,44,18,12");
            mygrid.setColAlign("center,left,left,center,center");
            mygrid.enableAutoWidth(false);
            mygrid.setColTypes("ro,ro,ro,button,coro");
            mygrid.setColSorting("str,str,str,str,str,str");
            mygrid.enableRowsHover(true,'grid_hover');              
            mygrid.setSkin("modern");
            mygrid.init();          
            mygrid.setStyle("font-size:11px;","font-size:11px;","font-size:11px","font-size:11px","font-size:11px");
            mygrid.loadXML("connector.php?hospid=<?php echo $hospid; ?>");
            mygrid.setColumnIds("date,man_name,group,approval_progress, approval_status");          
            var dp = new dataProcessor ("connector.php?hospid=<?php echo $hospid; ?>");     
            dp.init(mygrid);                        
            dhxWins = new dhtmlXWindows();
            dhxWins.setImagePath("../codebase/imgs/");          
            mygrid.attachEvent("onRowSelect", function(id,ind){ 
                 if (ind == 0 || ind == 1 || ind == 2 || ind == 3){  
                dhxWins = new dhtmlXWindows();
                var w1 = dhxWins.createWindow("w1", 60, 60,925, 575);
                dhxWins.setSkin("dhx_web");
                dhxWins.setImagePath("../codebase/imgs/");
                w1.centerOnScreen();
                w1.setText("");
                w1.setModal(false);
                theVar11 = (id);
                w1.attachURL("pop_details.php?var1=" +theVar11);
                return true;
                 };
                 });

MY IDEA FOR OOP GRID
    var mygrid;

                function doInitGrid(){  
                mygrid = new dhtmlXGridObject('gridbox');
                var combo=mygrid.getCombo(4);
                combo.put(2, 'Approve / Deny');
                combo.put(1, 'Approve');
                combo.put(0, 'Deny');
                mygrid.setImagePath("../codebase/imgs/");           
                mygrid.setHeader(<?php $MySQL_results ?>);      
                <!--mygrid.attachHeader("#text_filter,#text_filter,#text_filter");-->
                mygrid.setInitWidthsP("<?php $MySQL_results ?>");
                mygrid.setColAlign("<?php $MySQL_results ?>");
                mygrid.enableAutoWidth(false);
                mygrid.setColTypes("<?php $MySQL_results ?>");
                mygrid.setColSorting("<?php $MySQL_results ?>");
                mygrid.enableRowsHover(true,'grid_hover');              
                mygrid.setSkin("modern");
                mygrid.init();          
                mygrid.setStyle("<?php $MySQL_results ?>");
                mygrid.loadXML("connector.php?hospid=<?php echo $hospid; ?>");
                mygrid.setColumnIds("date,man_name,group,approval_progress, approval_status");          
                var dp = new dataProcessor ("connector.php?hospid=<?php echo $hospid; ?>");     
                dp.init(mygrid);                        
                dhxWins = new dhtmlXWindows();
                dhxWins.setImagePath("../codebase/imgs/");          
                mygrid.attachEvent("onRowSelect", function(id,ind){ 
                     if (ind == 0 || ind == 1 || ind == 2 || ind == 3){  
                    dhxWins = new dhtmlXWindows();
                    var w1 = dhxWins.createWindow("w1", 60, 60,925, 575);
                    dhxWins.setSkin("dhx_web");
                    dhxWins.setImagePath("../codebase/imgs/");
                    w1.centerOnScreen();
                    w1.setText("");
                    w1.setModal(false);
                    theVar11 = (id);
                    w1.attachURL("pop_details.php?var1=" +theVar11);
                    return true;
                     };
                     });
4

2 に答える 2

3

私の意見では (他の人は自由に異議を唱えるかもしれません)、あなたの提案は完全に実行可能な選択肢です。JavaScript にそれほど多くの php を含めたくない場合は、phpjson_encode()関数を使用して初期 JavaScript オブジェクトを作成し、php エコーの代わりにそのプロパティを使用できます。たとえば、次のようなものです。

var gridOpts = <?php echo json_encode($MySQL_results);?>;
mygrid.setColTypes(gridOpts.colTypes);
于 2012-04-10T20:42:27.173 に答える
2

私はそのコードを読むことができません、それはあまりにも厄介です...

しかし、一般的な使用のために:

<script type="text/javascript">
    var js_variable = <?php echo json_encode($php_variable); ?>;
</script>

このメソッドを使用すると、任意のタイプの PHP 変数 (リソースを除く) を JS に渡すことができます。

于 2012-04-10T20:40:13.273 に答える