gpt4 book ai didi

php - 寻求一般建议 : is there a better way to echo dynamic HTML than heredoc? (smarty/php/html)

转载 作者:行者123 更新时间:2023-11-28 00:17:19 24 4
gpt4 key购买 nike

项目:创建动态多页表单,根据不同情况以不同方式填充字段。

上下文:使用 CMSMS 和 Smarty 标签将 PHP 插入到需要的页面中。表单的每一页都是使用一个 smarty 构建的

当前方法: 使用 smarty 标签,我正在编写以 heredoc 表示法回显的大块 HTML。当我到达需要动态生成的表单部分(例如下拉菜单)时,我会转义 heredoc,编写 PHP(使用标准 echo 函数生成该表单元素所需的 HTML),然后返回到 heredoc更多 HTML block 。

怀疑:这是不雅、凌乱、乏味的,只是感觉不对。

请求:有什么更好的方法吗?

编辑:我当前设置的一个例子,在这里你可以看到一个初始的静态 HTML block 被回显 - (表单的开始,第一个问题)然后是一个需要动态生成的下拉菜单,具体取决于SESSION 变量中存在的数据。在此之后,heredoc 恢复并回显更多静态 HTML:

echo <<<EOD
<form id="myform" method="post" action="?page=2">
<div class="myform">

<div class="formfield">
<div class="question"><label for="sv_01">Question?</label> <input type="text" name="sv_01" value="$sv_01" size="10" maxlength="10" /></div>
<div class="subquestion"><label for="sv_02">What Year?</label>
EOD;
echo '<select name="sv_02">';
$vars = array(
'-Year' => 'Year',
'-2012' => '2012',
'-2011' => '2011',
'-2010' => '2010',
'-2009' => '2009',
'-2008' => '2008',
'-2007' => '2007',
'-2006' => '2006',
'-2005' => '2005',
'Pre 2005' => 'Pre 2005',
);

foreach($vars as $val => $name){
if($_SESSION['sv_02'] == $val){
echo '<option value="' . substr($val, 0, 1) . '" selected>' . $name . '</option>';
} else {
echo '<option value="' . substr($val, 0, 1) . '">' . $name . '</option>';
}
}

echo '</select></div>';
echo <<<EOD

<div class="question"><br /> <label for="sv_04">Another question</label> <input type="text" name="sv_04" value="$sv_04" size="10" maxlength="10" />%</div>
<div class="subquestion"><label for="sv_07">When was the data collected?</label>
EOD;
echo '<select name="sv_07">';
$vars = array(
'-Month' => 'Month',
'-January' => 'January',
'-February' => 'February',
'-March' => 'March',
'-April' => 'April',
'-May' => 'May',
'-June' => 'June',
'-July' => 'July',
'-August' => 'August',
'-September' => 'September',
'-October' => 'October',
'-November' => 'November',
'-December' => 'December',
);

foreach($vars as $val => $name){
if($_SESSION['sv_07'] == $val){
echo '<option value="' . substr($val, 0, 1) . '" selected>' . $name . '</option>';
} else {
echo '<option value="' . substr($val, 0, 1) . '">' . $name . '</option>';
}
}

echo '</select><select name="sv_08">';

$vars = array(
'-Year' => 'Year',
'-2012' => '2012',
'-2011' => '2011',
'-2010' => '2010',
'-2009' => '2009',
'-2008' => '2008',
'-2007' => '2007',
'-2006' => '2006',
'-2005' => '2005',
'Pre 2005' => 'Pre 2005',
);

foreach($vars as $val => $name){
if($_SESSION['sv_08'] == $val){
echo '<option value="' . substr($val, 0, 1) . '" selected>' . $name . '</option>';
} else {
echo '<option value="' . substr($val, 0, 1) . '">' . $name . '</option>';
}
}

echo '</select></div>';

echo<<<EOD


<div class="continue"><input type="submit" value="Continue" /></div>
</div>

</div>
</form>
EOD;

最佳答案

相对于标准的 HTML+PHP?这也适用于模板工具。

public function render() {
?>
<html>
<head>
<title><?= $this->title ?></title>
</head>
<body>
<h1>This is my awesome page</h1>

<p>Choose from a menu.</p>
<?php $this->renderMenu() ?>

<p>Or enter your details:</p>
<?php $this->renderForm() ?>
</body>
</html>
<?php
}

如果这不是您想要的,请显示一些代码。

关于php - 寻求一般建议 : is there a better way to echo dynamic HTML than heredoc? (smarty/php/html),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11475005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com