Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Валидация данных

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
Лёха

цитировать



Зарегистрирован: 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 Shocked
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Лёха

цитировать



Зарегистрирован: 05 Авг 2010 21:55:15
Сообщения: 5
Откуда: Харьков

СообщениеДобавлено: 07 Авг 2010 21:38:38    Заголовок сообщения: Ответить с цитатой

Вопрос решен
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
uran26

цитировать



Зарегистрирован: 02 Апр 2009 12:13:49
Сообщения: 31
Откуда: Кировоград

СообщениеДобавлено: 08 Авг 2010 14:34:28    Заголовок сообщения: Ответить с цитатой

на сколько, я помню $useTable используется в модели.

в контроллере не нужно каждый раз проверять существование поля, я просто пример привел. мне такое помогает если в модели есть правила валидации для всех полей таблицы, и несколько форм с разным набором полей.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru