Имам странен проблем с проверките на моя формуляр. Имам 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