0

如果这只是一个静态网站,我会有四个链接

<li><a href="javascript:void(0)">Action 1</a></li>
<li><a href="javascript:void(0)">Action 2</a></li>
<li><a href="javascript:void(0)">Action 3</a></li>
<li><a href="javascript:void(0)">Action 4</a></li>

但在这种情况下,链接需要执行不同的回调、输出消息和操作,具体取决于点击者。现在,由于所有这些复杂性,我的页面非常混乱。我的代码是这样的;

<?php
 foreach ($var as $key) {
?>
  <div class="content">
     <li><a href="javascript:void(0)">Action 1</a></li>
     <li><a href="javascript:void(0)">Action 2</a></li>
       <?php
        if(session check){
             $var1 = the ouptut of some function
             $var2 = the output of another function
                  if(another check) {
           ?> 

                     <li><a href="javascript:void(0)">Action 3 type 1</a></li>

               <?php
                   } else{
                        if($var1 === something){
                  ?>
                            <li><a href="javascript:void(0)" onClick="somefunc()">Action 3 type 2</a></li>
                      <?php
                         } 
                         else {
                          ?>
                            <li><a href="javascript:void(0)" class ="colorlink" onClick="somefunc()">Action 3 type 3</a></li>
                        <?php
                            }
                         }
 /* we are done with action 3 and now moving to action 4. Nb: still in the same session check */
        if($var2 == something){
       ?>
           <li><a href="javascript:void(0)" onClick="somefunc()">Action 4 type 1</a></li>

      <?php
        }else{
       ?>
           <li><a href="javascript:void(0)" style ="colorit"onClick="somefunc()">Action 4 type 2</a></li>
     <?php 
          }
/* Now thats the end of everthing in the session check */
/* This else is for session not active */
 } else{
     <li><a href="javascript:void(0)">Action 3</a></li>
     <li><a href="javascript:void(0)">Action 4</a></li>
     }
    ?>

我真的很抱歉缩进有多糟糕,我真的不知道如何缩进。我想知道是否有更好的方法来重构代码,当它被正确缩进时它看起来并没有那么糟糕。我知道的选项是,首先,我将所有内容都包裹在一个 php 标记中并回显出 html,但问题是,所有下一个 if 语句看起来仍然很糟糕。

第二个选项是 if:,else:,endif; 构造,但这并没有使它变得更好。这就是我需要你聪明才智的地方,我还能如何重组这段代码?

4

2 回答 2

1

如果我正确理解了您的问题,您不能将 PHP 验证与 HTML 分开并根据验证功能显示和隐藏操作按钮吗?

检查下面的代码

HTML 和 PHP

<?php
    $username = 'somename';

    function getmyclass(i,user){
       //return active or inactive according to the conditions
    }
?>
<div class="content">
     <li><a href="javascript:void(0)" class="<?php echo getmyclass(1,$username) ?>" onClick="somefunc1()">Action 1</a></li>
     <li><a href="javascript:void(0)" class="<?php echo getmyclass(2,$username) ?>" onClick="somefunc2()">Action 2</a></li>
     <li><a href="javascript:void(0)" class="<?php echo getmyclass(3.1,$username) ?>" onClick="somefunc3()">Action 3</a></li>
     <li><a href="javascript:void(0)" class="<?php echo getmyclass(3.2,$username) ?>" onClick="somefunc4()">Action 3</a></li>
     <li><a href="javascript:void(0)" class="<?php echo getmyclass(4.1,$username) ?>" onClick="somefunc5()">Action 4</a></li>
     <li><a href="javascript:void(0)" class="<?php echo getmyclass(4.2,$username) ?>" onClick="somefunc6()">Action 4</a></li>
</div>

获取类函数可以将类返回为activeinactive,如果它处于非活动状态,则不会显示操作按钮。

CSS

.active{
   display:block;
}

.inactive{
   display:none;
}
于 2012-11-28T19:04:58.043 回答
1

您可能想研究一个PHP 模板引擎。我在很多项目中使用 PHPTAL。我认为 Twig(未在此处列出)也很受欢迎,可能是因为 Symfony 很受欢迎。

目标是使 PHP 代码与 PHP 代码保持一致,并防止不断地闯入和闯出 php 标签。

于 2012-11-28T18:47:53.507 回答