如果我有这样的PHP类:
class Person {
private $dateOfBirth;
private $height;
public function getDateOfBirth() {
return $this->dateOfBirth;
}
public function setDateOfBirth($dateOfBirth) {
$this->dateOfBirth = $dateOfBirth;
}
public function getHeight() {
return $this->height;
}
public function setAge($height) {
$this->height= $height;
}
}
有没有一个很好的解决方案如何根据这个类动态生成HTML表单?
<form action="action.php" method="post">
<input type="date" name="DateOfBirth" value="1900-01-01"/>
<input type="number" name="Height" value="180"/>
<input type="submit" class="submit" value="Submit"/>
</form>
我想出的唯一解决方案是迭代类的所有属性并生成输入。如果属性的名称包含例如&#39;日期&#39; make&#39;输入类型=&#34;日期&#34;&#39;。但我真的不喜欢这个解决方案。鉴于属性高度显然是数字类型,其名称并不表示它。而且我不想重命名它。属性名称必须保持不变。
感谢您的回复
答案 0 :(得分:0)
如果您需要生成HTML表单,我认为您应该关注jQuery(JavaScript)。 Javascript可用于操纵HTML页面的DOM。
您还可以使用jquery
切换隐藏和显示元素(表单或div)$(document).ready(function(){
$('form').hide();
$('button').click(function(){
$('form').toggle(); //this can be used in place of the hide and show methods
//$('form').show();
//$('form').hide();
});
});
上面的代码在页面加载时隐藏了表单元素,当单击提交按钮时,它会切换元素的可见性。
这是一种简单的解决方法。
...格雷斯
答案 1 :(得分:0)
为什么不在创建表单的类中添加函数?
public function getForm() {
$form = '<form action="action.php" method="post">';
$form .= '<input type="date" name="DateOfBirth" value="1900-01-01"/>';
$form .= '<input type="number" name="Height" value="180"/>';
$form .= '<input type="submit" class="submit" value="Submit"/>';
$form .= '</form>';
return $form;
}
然后只需在您需要的地方回显退回的表单。这不是你要求的,但它很简单。我是否正确地想到你想要的原因是你不需要继续创建表单?如果是这样,这将解决问题。
另一种解决方案是将表单类型添加到类中的每个变量。 E.g。
$heightType = "number";
$nameType = "text";
然后你可以迭代这些,你将拥有正确的输入类型。就个人而言,我认为第一种解决方案要容易得多。
花了这么长时间写这个,有人已经提出了我的第二个选择哈哈!
答案 2 :(得分:0)
也许最精确的解决方案是创建包含每个类的详细信息的DB表,并根据此表生成表单。
form_fields http://www.cloud.vnovak.cz/form_fields.png
类和订单列上的复合键。