Показать сообщение отдельно
  #10 (permalink)  
Старый 04.10.2014, 17:49
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

<label>Адрес электронной почты</label>
<input type="email" name="formfield[1]" placeholder="email@example.com" maxlength="50" pattern="^[^\s@]+@[^\s@]+\.[^\s@]+$" required="5"/>


Все берется из атрибутов. В первую очередь метод валидации, например

validator['validate_'+field.type].call();

validate_email:function() {
 // бла-бла-бла
},


На сервере:

Код:
$fields('email')
	->type('email')
	->label('Адрес электронной почты')
	->placeholder('email@example.com')
	->maxlength(50)
	->pattern()
	->required(5);
Совпадение имени поля с типом значения не имеет, просто в бд оно так и называется имейл. Проперть pattern пустая, потому что рега имейла относится к вечным и смысла ее каждый раз прописывать нет. В классе есть метод который достает из массива регу по ключу имейл и втыкает в проперь по признаку имени проперти - pattern. Но если нужен особый для конкретного случая -

Код:
$fields('image')
	->type('file')
	->label('Загрузка файла')
	->maxlength(200)
	->multiple(3)
	->sub_label(' (максимум: '.$fields->image->multiple
        .' по '.$fields->image->maxlength.'Кб, '.($types='jpg,jpeg,png,gif').')')
	->pattern($types)
	->accept('image/*');
и рендер его впихнет в атрибут автоматически. Таким образом достигается цель - хранить факт в одном месте.

Но, блин, с файлами облом. Кроме типов файлов (тупой accept же берет все подряд) надо еще проверять имя файла - а для второго паттерна места уже нет.

Последний раз редактировалось kostyanet, 04.10.2014 в 18:00.
Ответить с цитированием