У меня странная проблема с проверкой формы. У меня есть 4 входа в моей форме, и все они проверяются.
Все работает нормально, пока не проверит мое последнее поле ввода, которое является полем ввода электронной почты. У меня есть два правила, установленных в поле ввода электронной почты: 'rule' => 'notEmpty'
, 'rule' => 'email'
. Форма проверяется и публикуется просто отлично, когда ей нужно только проверить правило notEmpty, но если найден недействительный адрес электронной почты, он проверяет его, но не публикует даже после ввода действительного адреса электронной почты.
Вот несколько сценариев:
Первый: Пользователь вводит правильные записи для всех входных данных
Все работает нормально, форма отправляется и данные добавляются в базу данных.
Второе: пользователь вводит действительные записи для всех полей, кроме адреса электронной почты, но затем вводит действительные адреса электронной почты для всех входных данных
Предположим, что пользователь нажимает кнопку "Отправить" после ввода только первых трех полей< /em>
Все работает нормально после того, как они вводят действующий адрес электронной почты с первого раза, сообщения формы и данные добавляются в базу данных.
Три: пользователь вводит действительные записи для всех, кроме адреса электронной почты (предоставляет неверный адрес электронной почты)
Отображает сообщение об ошибке, но даже после предоставления действительного адреса электронной почты ничего не происходит. Я заметил, что страница продолжает перезагружаться с одними и теми же данными, если вы продолжаете нажимать кнопку отправки.
Кроме того, сообщение об ошибке исчезает, если кнопка отправки снова нажимается после первого нажатия
Вот моя модель:
class Member extends AppModel
{
public $validate = array(
'id' => array(
'rule' => 'notEmpty'
),
'Student_First_Name' => array(
'rule' => 'notEmpty'
),
'Student_Last_Name' => array(
'rule' => 'notEmpty'
),
'Student_Email' => array(
'emailRule-1' => array(
'rule' => 'notEmpty',
'last' => false
),
'emailRule-2' => array(
'rule' => 'email',
'message' => 'Please enter a valid email address.'
))
);
}
Вот Контроллер:
class MembersController extends AppController
{
...
public function add()
{
if($this->request->is('post'))
{
$this->Member->create();
if($this->Member->save($this->request->data))
{
$this->Session->setFlash('Member has been added!');
$this->redirect( array( 'action' => 'members'));
}
else
{
$this->Session->setFlash('Unable to add member.');
}
}
}
}
Я прошу прощения за такой длинный пост из-за такой простой/раздражающей проблемы, но я ненавижу подобные вещи в своих приложениях/веб-сайтах.
Спасибо.
'last' => false
? для меня не имеет смысла ... если вы не ввели адрес электронной почты, нет необходимости также проверять действительную форму электронной почты ... - person mark   schedule 09.04.2013