Php 从mysql创建PFBC表单

Php 从mysql创建PFBC表单,php,forms,Php,Forms,我找到了一个漂亮的窗体创建类。Hovewer我需要使用数据库的输出,以友好的方式创建表单。表单是通过以下方式创建的: $form->addElement(new Element\Textbox("Name:", "Name", array( "required" => 1 ))); 因此,如果我想添加一个不同的表单,我必须将newelement\Textbox更改为newelement\Password。是否可以根据数据库结果创建表单,如下所示: foreach ($fie

我找到了一个漂亮的窗体创建类。Hovewer我需要使用数据库的输出,以友好的方式创建表单。表单是通过以下方式创建的:

$form->addElement(new Element\Textbox("Name:", "Name", array(
    "required" => 1
)));
因此,如果我想添加一个不同的表单,我必须将
newelement\Textbox
更改为
newelement\Password
。是否可以根据数据库结果创建表单,如下所示:

foreach ($fields as $field) {
$form->addElement(new Element\$field->type("Name:", "Name", array(
    "required" => 1
)));
}

现在它看起来不适合我,当然也不起作用。所以我的问题是,我可以用不同的方式以数字方式输出这个表单,还是应该检查另一个类?

如果$field->type是类名的有效字符串,例如“Password”。尝试使用:

foreach ($fields as $field) {
    $className = "\\PFBC\\Element\\{$field->type}";
    $form->addElement(new $className("Name:", "Name", array(
         "required" => 1
    )));
}

检查$field的输出并确保字母大小写正确,如果需要,您可以使用“ucfirst”因为某种原因我得到了这个错误:`Class'Element\Textbox'
,如果我将
Element\Textbox`改为
$className
,那么它工作正常。
致命错误:在index.php的第3行找不到Class'Element\Textbox',我更改了行以适应当前代码,实际上它是93,其中
$form->addElement(新的$className(“Name:”,“Name”,array
行是)。很抱歉,我错过了一行。您需要在$className中有一个带命名空间的类的完整路径。所以应该像$className=“\\PFBC\\Element\{$field->type}”;我已经更新了答案。