如果这只是一个静态网站,我会有四个链接
<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,但问题是,它仍然看起来与所有nexted if语句一样糟糕。
第二个选项是if:,else:,endif;构造,但这并没有使它变得更好。 这是我需要你聪明才智的地方,我怎么能重组这个代码?
答案 0 :(得分:1)
您可能需要查看PHP Templating Engine。我在很多项目中使用PHPTAL。我认为Twig(未列在那里)也很受欢迎,可能是因为Symfony很受欢迎。
目标是使PHP代码保持PHP代码并防止不断地进出php标记。
答案 1 :(得分:1)
如果我正确理解您的问题,您是否可以将PHP验证与HTML分开,并根据验证功能显示和隐藏操作按钮?
检查以下代码
HTML&amp; 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>
get类函数可以将类返回为active
或inactive
,如果它处于非活动状态,则不会显示操作按钮。
<强> CSS 强>
.active{
display:block;
}
.inactive{
display:none;
}