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; 
				