我正在尝试根据存储在XML文件中的字段及其定义动态构建表单。在我的xml中,我定义了1个带有一些标签的复选框和带有一些标签的1个文本域。
如何根据我在xml中的内容动态构建表单。
我不想创建任何模型。
答案 0 :(得分:1)
不确定你要去哪里或为什么需要它。我已经从数据库定义构建了动态表单,(因此添加/删除字段会有一个前端,但是不知道为什么会从xml文件中执行此操作。)尽管如此,这是基本的想法:
在控制器功能
中// Import cake's xml class
App::import('Xml');
// your XML file's location
$f = "/path/to/form.xml"; //no need to fopen('file.xml','r'), cake does it
// parse the xml
$xml_array =& new XML($f);
$this->set('form_info', Set::reverse($xml_array));
在视图中:
//Assuming you know how the xml is gonna be setup declare the magic form elements
e($form->create('Model', array('action'=>'action_name')));
foreach($form_info[fields] as $field){
e($form->input($field['name'], array('class'=>field['class'],
'label'=>field['label'], 'type'=>$field['type'])
}
//and close the form:
e($form->end('submit'));
这是基本的想法,在实践中我会将这些数组选项包装在!empty()检查中,并且根据您使用的xml结构和字段,您需要对条件进行调整(可能需要实现一个开关案例来处理特定格式。)这显然假设您的表或模型已设置为处理任何字段集。