Все данные проходят валидацию...

3 views
Skip to first unread message

Hektor

unread,
Nov 11, 2009, 3:10:13 AM11/11/09
to cake-php-ru
даже не верные.
Поэтому прошу помочь разобраться. Ниже привожу код

VIEW

echo $form->create('Price', array('action' => 'index'));
echo $form->input('name', array('label' => 'Ваше Имя'));
echo $form->input('city', array('label' => 'Город'));
echo $form->input('phone', array('label' => 'Телефон'));
echo $form->input('email', array('label' => 'Email'));
echo $form->input('org', array('label' => 'Организация'));
echo $form->input('td', array('label' => 'Род деятельности
организации'));

MODEL
public $validate = array(
'name' => array(
VALID_NOT_EMPTY,
'rule' => 'notEmpty',
'message' => 'Пустое имя не допускается'
),
'email' => array(
VALID_EMAIL,
'rule' => array('email', true),
'message' => 'Неверно введен адрес электронной почты'
),
'city' => array(
VALID_NOT_EMPTY,
'rule' => 'notEmpty',
'message' => 'Название города объязательно!'
),
'phone' => array(
VALID_NOT_EMPTY,
'rule' => 'notEmpty',
'message' => 'номер телефона объязателен!'
),
'org' => array(
VALID_NOT_EMPTY,
'rule' => 'notEmpty',
'message' => 'Название организации объязательно! Если вы -
частное лицо, так и пишите.'
),
);

CONTROLLER
if (!empty($this->data)) {
if ($this->Price->create($this->data) && $this->Price->validates())
{
if($this->Price->save($this->data)){
// TODO CODE
} else {
$this->Session->setFlash('Не удалось обработать запрос');
}
} else {
$errors = $this->Price->invalidFields();
$this->Session->setFlash('Проверьте, пожалуйста, верно ли введены
данные?');
}
}

Anton Balaniuc

unread,
Nov 11, 2009, 3:24:17 AM11/11/09
to cake-...@googlegroups.com
вместо $this->Price->create, попробуйте использовать
$this->Price->set
http://book.cakephp.org/view/410/Validating-Data-from-the-Controller

Vladiq

unread,
Nov 11, 2009, 4:28:47 AM11/11/09
to cake-php-ru
Попробуйте добавить проверок

Потому что проверка "validEmail" - не означает, что поле не может быть
пустым.
Под "даже неверные" - неужели проходят валидацию пустые поля? Если да
- то пора тикет писать.

Hektor

unread,
Nov 11, 2009, 4:34:13 AM11/11/09
to cake-php-ru
Добавляются даже пустые поля.

Anton Balaniuc

unread,
Nov 11, 2009, 4:47:36 AM11/11/09
to cake-...@googlegroups.com
Может я чего то не понимаю, но кажется Вы не очень верно составляеете
правила вот пример из учебника

var $validate = array(
'fieldName1' => array(
'rule' => 'ruleName', // or: array('ruleName', 'param1', 'param2' ...)
'required' => true,
'allowEmpty' => false,
'on' => 'create', // or: 'update'
'message' => 'Your Error Message'
)
);


ваше правило для имени
'name' => array(

VALID_NOT_EMPTY,

'rule' => 'notEmpty',

'message' => 'Пустое имя не допускается'

),


правильнее будет

'name' => array(

'rule' => VALID_NOT_EMPTY,

'message' => 'Пустое имя не допускается'

),

c остальными полями так же

Hektor

unread,
Nov 11, 2009, 4:55:22 AM11/11/09
to cake-php-ru
Пробовал 3 варианта:

'name' => array(
VALID_NOT_EMPTY,
'rule' => 'notEmpty',
'message' => 'Пустое имя не допускается'
) и

'name' => array(
'rule' => VALID_NOT_EMPTY,
'message' => 'Пустое имя не допускается'

) и

'name' => array(


'rule' => 'notEmpty',
'message' => 'Пустое имя не допускается'
)

Перебрал весь контроллер...
Не помогает.

Anton Balanyuk

unread,
Nov 11, 2009, 5:31:13 AM11/11/09
to cake-...@googlegroups.com
дебаж каждую строку контроллера , 2 и 3 вариан правильный.

11 ноября 2009 г. 11:55 пользователь Hektor <kam...@gmail.com> написал:

Hektor

unread,
Nov 11, 2009, 6:40:11 AM11/11/09
to cake-php-ru
$this->log($this->Price->validates(), LOG_DEBUG); возвращает 1
(2009-11-11 17:35:25 Debug: 1)
Это и беспокоит меня больше всего. Как может возвращаться true,
если !!!ВСЕ!!! поля !!!ПУСТЫЕ!!!

On 11 ноя, 16:31, Anton Balanyuk <alaga...@gmail.com> wrote:
> дебаж каждую строку контроллера , 2 и 3 вариан правильный.
>

> 11 ноября 2009 г. 11:55 пользователь Hektor <kamo...@gmail.com> написал:

Anton Balaniuc

unread,
Nov 11, 2009, 6:51:27 AM11/11/09
to cake-...@googlegroups.com

$this->log($this->data), LOG_DEBUG);
$this->log($this->Price->set($this->data), LOG_DEBUG);
$this->log($this->Price->data), LOG_DEBUG);

Hektor

unread,
Nov 11, 2009, 7:12:46 AM11/11/09
to cake-php-ru
$this->log($this->data), LOG_DEBUG);
$this->log($this->Price->set($this->data), LOG_DEBUG);
$this->log($this->Price->data), LOG_DEBUG);
$this->log($this->Price->validates(), LOG_DEBUG);

Логи:
2009-11-11 18:10:49 Debug: Array
(
[Price] => Array
(
[name] =>
[city] =>
[phone] =>
[email] =>
[org] =>
[td] =>
)

)

2009-11-11 18:10:49 Debug: Array
(
[Price] => Array
(
[name] =>
[city] =>
[phone] =>
[email] =>
[org] =>
[td] =>
)

)

2009-11-11 18:10:49 Debug: Array
(
[Price] => Array
(
[name] =>
[city] =>
[phone] =>
[email] =>
[org] =>
[td] =>
)

)

2009-11-11 18:10:49 Debug: 1

Hellbot

unread,
Nov 11, 2009, 7:24:01 AM11/11/09
to cake-...@googlegroups.com
Проверьте, а загружается ли файл модели.
Может быть досадная ошибка и например файл модели лежит не в app/models/price.php
И тогда кейк создает модель по таблице сам (ну и там правил валидации нет)


2009/11/11 Hektor <kam...@gmail.com>

Hektor

unread,
Nov 11, 2009, 8:14:22 AM11/11/09
to cake-php-ru
Огромное спасибо. переписал полностью модель.
Возможно проблема была в регистре первой буквы имени файла. было
Price.php стало price.php

On 11 ноя, 18:24, Hellbot <g.hell...@gmail.com> wrote:
> Проверьте, а загружается ли файл модели.
> Может быть досадная ошибка и например файл модели лежит не в
> app/models/price.php
> И тогда кейк создает модель по таблице сам (ну и там правил валидации нет)
>

> 2009/11/11 Hektor <kamo...@gmail.com>

Anton Balaniuc

unread,
Nov 11, 2009, 9:13:16 AM11/11/09
to cake-...@googlegroups.com
) Кажется для UNIX систем это имеет значение. Когда то делал сайт на
cakePHP, дома WinXp имена моделей с большой буквы, потом перевёл на
хостинг и много плясок с бубном , пока не поменял имена моделей .

Vlad Sournine

unread,
Nov 11, 2009, 9:29:02 AM11/11/09
to cake-...@googlegroups.com
никаких "кажется". Имеет значение :)

11 ноября 2009 г. 16:13 пользователь Anton Balaniuc
<alag...@gmail.com> написал:

--
С уважением, Влад

Reply all
Reply to author
Forward
0 new messages