Denixxx
Мой дом здесь!
- Регистрация
- 7 Фев 2014
- Сообщения
- 244
- Реакции
- 216
- Автор темы
- #1
Хочу сделать универсальный «создатель форм».
Придумал сделать это так.
Для элемента формы Пользователь задаёт: имя элемента, его тип, массив значений, значение по умолчанию и шаблон
В БД создаем соответственно таблицу:
Ну и при выводе этого добра все значения (name,type,values,default) — должны выводиться через шаблон.
И вот теперь вопрос: возможно ли это сделать без eval или include? Ведь мы же понимаем, что среднестатистический пользователь обязательно наделает там ошибок. Монстров типа смарти применять не хочется, а внутри шаблона ведь возможны и циклы, например:
Придумал сделать это так.
Для элемента формы Пользователь задаёт: имя элемента, его тип, массив значений, значение по умолчанию и шаблон
В БД создаем соответственно таблицу:
Код:
CREATE TABLE IF NOT EXISTS `form` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL,
`values` text COMMENT 'массив возможных значений через запятую',
`default` varchar(255) COMMENT 'значение по умолчанию',
`skin` text COMMENT 'шаблон',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Ну и при выводе этого добра все значения (name,type,values,default) — должны выводиться через шаблон.
И вот теперь вопрос: возможно ли это сделать без eval или include? Ведь мы же понимаем, что среднестатистический пользователь обязательно наделает там ошибок. Монстров типа смарти применять не хочется, а внутри шаблона ведь возможны и циклы, например:
PHP:
$result = '<td>' . $name . ': </td><td> <select name="' . $name . '" >'."\r\n".
'<option value="' . __('No matter') . '">' . __('No matter') . '</option>'."\r\n";
foreach($values as $value){
$result .= '<option value="' . $value . '" ' . (($selected==$value) ? ' selected="selected">' : '>') . $value . '</option>'."\r\n";
}
$result .= '</select></td>'."\r\n";
return $result;