построение динамической формы в CakePHP - PullRequest
0 голосов
/ 10 февраля 2010

Я пытаюсь построить форму динамически на основе поля и его определений, хранящихся в файле XML. В моем xml я определил 1 флажок с некоторой меткой и 1 текстовое поле с некоторой меткой.

Как мне построить форму динамически на основе того, что у меня есть в моем xml.

Я не хочу создавать какие-либо модели.

1 Ответ

1 голос
/ 14 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...