Не совсем уверен, куда вы идете с этим или зачем это нужно. Я построил динамические формы из определений БД (так что добавление / удаление полей будет иметь внешний интерфейс, но я не понимаю, почему это можно сделать из файла 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 и полей вам потребуется внести изменения в условные выражения (возможно, реализовать регистр переключателей для обработки специфическое форматирование.) Это явно предполагает, что ваша таблица или модель настроена для обработки любого из установленных полей.