【问题标题】:Is there a standard way to handle design (CSS) seperate from conditionals in PHP?是否有一种标准方法来处理与 PHP 中的条件分开的设计(CSS)?
【发布时间】:2011-01-01 18:40:17
【问题描述】:

我一直在与一位开发人员合作开发基于 Web 的应用程序。我主要有一些 html 和 css 的经验,现在已经完成了繁重的工作,我想开始改进程序的设计元素(我知道这不是理想的情况,在一个完美的世界里,所有的设计元素会从一开始就被考虑 - 但你们这些从事项目工作的人知道它并不总是这样:-D)

我很好奇在处理大量 PHP 条件时是否有一种“标准”方式来处理 css 和一般布局结构。以下是我们页面某个区域的示例:

$print_data .= '<p><b>My subscription:</b>&nbsp;&nbsp;';

if($period3=="1 M") {
  $print_data .= "$".$amount3." a month.<br />";
  $print_data .= "<b>Billing date:</b>&nbsp;&nbsp; Monthly on the " . date("jS", $subscr_effective_date_string) .".<br /><br /><b>Modification Options:</b><br />";
  $print_data .= '<input type="button" value="$75 every 6 months" onclick="#" /><br />
 <input type="button" value="$135 every 12 months" onclick="#" /><br /><br />';
}

elseif($period3=="6 M") {
  $print_data .= "$".$amount3." every 6 months.<br />";
  $print_data .= "<b>Billing date:</b>&nbsp;&nbsp; Every 6 months on " . date("m/d", $subscr_effective_date_string) ." and " . date("m/d",$subscr_effective_date_add_6mo_string) .".<br /><br /><b>Modification Options:</b><br />";
  $print_data .= '<input type="button" value="$14 a month" onclick="#" /><br /><input type="button" value="$135 every 12 months" onclick="#" /><br /><br />';
}

elseif($period3=="1 Y") {
  $print_data .= "$".$amount3." every year.<br />";
  $print_data .= "<b>Billing date:</b>&nbsp;&nbsp; Yearly on the " . date("m/d", $subscr_effective_date_string) .".<br /><br /><b>Modification Options:</b>";
  $print_data .= '<input type="button" value="$14 a month" onclick="#" /><br /><input type="button" value="$75 every 6 months" onclick="#" /><br /><br />';
}

$print_data .= '<input type="button" value="Unsubscribe" onclick="#" /></p>';

简而言之,我希望将上述内容包含在 &lt;ul&gt; 中,然后将每个条件设置为单独的 &lt;li&gt; 组,该组将根据条件填充 &lt;ul&gt;

这类事情通常都是在线处理的,还是什么?

谢谢! 乔尔

【问题讨论】:

  • PS:我不知道为什么我所有的代码都没有出现在代码框中?
  • 你必须正确缩进代码。
  • PPS:看到一些 html 也从消息中被删除了......叹息......最后一句话应该是这样的简而言之,我想将上述内容包含在
      然后让每个条件成为一个单独的
    • 组,该组将根据条件填充
        。这种事情通常都是在线处理的,还是什么?
  • 每行代码前加4个空格
  • @Joel :因为您必须在每行代码的开头放置 4 个空格 - 在编辑框中选择代码后,您可以使用带有 0 和 1 的图标。

标签: php javascript css ajax standards


【解决方案1】:

呃,太丑了。这几乎就是过去几年 Web 开发转向模型-视图-控制器 (MVC) 方法的原因。理想情况下,您的演示文稿标记(上面汤中的 html 标记)将位于一个文件中,而将其填充到另一个文件中的逻辑。在 PHP 中执行此操作的最常见方法之一是使用 Smarty 模板引擎。

在此期间,至少应该清理上面的代码:找出 $amount3 的值和账单输入按钮上的文本,然后在一个地方输出 HTML,而不是重复它适用于每种情况(最好使用sprintf 而不是为了清洁和增加安全性而将琴弦塞在一起)。

【讨论】:

  • 我们在代码的这个特定部分上处于非常紧张的状态,这就是为什么他最终只是将所有内容都作为 $print_data 推出。如果我正确理解您(并按照我的直觉)理想情况下,每个条件中使用 $print_data 的每一行都将是它们自己的变量,然后我将在这段代码之后使用 html 并用这些变量填充它,对吗?
  • 正确。由于您所拥有的几乎每次都重复相同的内容,因此请取其变化的每个部分,使其成为具有正确内容的变量,并在最后将变量放入正确的位置。这意味着您只有一个地方的 HTML 代码(以防您以后需要更改它或添加更多内容等)。对于您的下一个项目,请尝试使用某种形式的模板引擎或完整的 MVC 方法。
  • 所以 MVC 似乎是我问题的答案。谢谢大家...尝试回到项目并开始实施它是多么愚蠢?甚至可能吗?这是一个实时站点,因此保持一切正常运行是首要任务。
  • 一点也不傻,假设您在版本控制中拥有一切。
  • 大声笑-如果你的意思是我复制一个页面,重命名它,并尝试一些编辑......那么是的,我有版本控制。 :-D
猜你喜欢
  • 1970-01-01
  • 2019-05-05
  • 2013-07-09
  • 2010-11-14
  • 2011-01-21
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多