根据PHP类

时间:2015-08-06 09:52:34

标签: php html forms entity-framework

如果我有这样的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;。但我真的不喜欢这个解决方案。鉴于属性高度显然是数字类型,其名称并不表示它。而且我不想重命名它。属性名称必须保持不变。

感谢您的回复

3 个答案:

答案 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

订单列上的复合键。