Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Лёха
цитировать
Зарегистрирован: 05 Авг 2010 21:55:15 Сообщения: 5 Откуда: Харьков
|
Добавлено: 05 Авг 2010 22:01:22 Заголовок сообщения: Валидация данных |
|
|
1. Как использовать валидацию на одной моделе, если несколько разных форм
2. Почему не работает валидация на таком примере:
В моделе:
Код: | class Contact extends AppModel {
var $useTable = false;
var $validate = array(
'email' => 'email',
'message' => VALID_NOT_EMPTY,
'subject' => VALID_NOT_EMPTY
);
} |
В Контроллере:
Код: |
class ContactController extends AppController {
var $useTable = false;
function index() {
if ($this->data) {
if ($this->Contact->validates($this->data)) {
echo 'TRUE';
} else
{
echo '<b><big>FALSE</big></b>';
}
}
}} |
В view:
Код: | <form name="" action="" method="post">
<table border=0 align="center" cellspacing="1" bgcolor="#DEEAFE" cellpadding="1" style="border-style:solid; border-width:1px; border-color:#04388E">
<tr><td bgcolor="#4E8EFA" style="padding:10px; color:white;" colspan=2><b>Contact iBlogTalk</b></td></tr>
<tr>
<td style="padding:10px;" align="right" width="150">Your e-mail address</td>
<td><input name="data[contact][email]" type="text" value="<?php echo htmlspecialchars($this->data['contact']['email']);?>"></td>
</tr>
<tr>
<td style="padding:5px;" align="right">Subject</td>
<td><input name="data[contact][subject]" type="text" value="<?php echo htmlspecialchars($this->data['contact']['subject']);?>"></td>
</tr>
<tr>
<td colspan=2 style="padding:5px;">Message<br /><textarea name="data[contact][message]" rows=10 cols=70 wrap="off"><?php echo htmlspecialchars($this->data['contact']['message']);?></textarea></td>
</tr>
<tr><td colspan=2 align="center"><input type="submit" name="submit" value=" Send "></td></tr>
</table>
</form> | [/quote] |
|
Вернуться к началу |
|
|
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 06 Авг 2010 19:09:01 Заголовок сообщения: |
|
|
Разрешите поинтересоваться:
1) Почему имя контроллера "ContactController", а не "ContactsController" ?
2) Зачем в контроллере переменная $useTable?
3) Почему в виде имена полей с маленькой буквы data[contact][subject]? возможно с большой data[Contact][subject]?
Если мне нужно было пропустить валидацию некоторых полей, то я делал так (в нужном действии контроллера перед самой валидацией):
Код: | unset ($this->data['User']['last_login']); |
|
|
Вернуться к началу |
|
|
Лёха
цитировать
Зарегистрирован: 05 Авг 2010 21:55:15 Сообщения: 5 Откуда: Харьков
|
Добавлено: 07 Авг 2010 18:43:03 Заголовок сообщения: |
|
|
1. Изначально так поставил, менять не стал.
2. Контроллером не используется ни одна таблица. Если ничего не указать, то CakePHP будет пытаться найти таблицу Contact
3. Уже потом поменял
Вопрос решил почти сразу, понял как и что.
У меня другой вопрос:
Валидация не выдаст ошибок, если этих переменных вообще не инициализировано, в контроллере каждый раз проверять на наличие поля? А если их 20 |
|
Вернуться к началу |
|
|
Лёха
цитировать
Зарегистрирован: 05 Авг 2010 21:55:15 Сообщения: 5 Откуда: Харьков
|
Добавлено: 07 Авг 2010 21:38:38 Заголовок сообщения: |
|
|
Вопрос решен |
|
Вернуться к началу |
|
|
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 08 Авг 2010 14:34:28 Заголовок сообщения: |
|
|
на сколько, я помню $useTable используется в модели.
в контроллере не нужно каждый раз проверять существование поля, я просто пример привел. мне такое помогает если в модели есть правила валидации для всех полей таблицы, и несколько форм с разным набором полей. |
|
Вернуться к началу |
|
|
|