У меня возникла странная проблема с моими формами. У меня есть 4 входа в моей форме, и все они проверяются.Вопросы проверки формы в cakephp
Все работает нормально, пока оно не проверит мое последнее поле ввода, которое является полем ввода электронной почты. У меня есть два правила, установленные в поле ввода электронной почты, 'rule' => 'notEmpty'
, 'rule' => 'email'
. Форма проверяет и публикует сообщения только в том случае, когда требуется только проверить правило notEmpty, но если найден недействительный адрес электронной почты, он проверяет его, но он не публикуется даже после ввода действительного сообщения электронной почты.
Вот несколько сценариев:
One: пользователь вводит допустимые значения для всех входов
Все отлично работает, посты формы и данные добавляются в базу данных.
Два: пользователь вводит допустимые значения для всех, кроме ввода электронной почты, но затем вводит действительные электронные письма во всех входах
Если предположить, что пользователь нажимает отправить только после внесения вклада в течение первых трех полей
все работает после ввода правильного адреса электронной почты в первый раз, в базу данных добавляются сообщения и данные формы.
Три: пользователь вводит допустимые значения для всех, кроме электронной почты (обеспечивает недопустимый адрес электронной почты)
Он отображает сообщение об ошибке, но даже после предоставления действительного адреса электронной почты, он не делает ничего. Я замечаю, что страница продолжает перезагрузку с теми же данными, если вы продолжаете нажимать кнопку отправки.
Кроме того, сообщение об ошибке исчезнет, если кнопка отправить нажата снова после первоначального клика
Вот моя модель:
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'? не имеет никакого смысла для меня .. Если кто-то не вводил никаких сообщений электронной почты, нет необходимости также проверять действительную форму электронной почты ... – mark
Да, это не нужно, я просто просматривал документацию и пробовал разные вещи. – Archon