Первое сообщение здесь о переполнении стека, поэтому я надеюсь, что все правильно, я искал, но не могу найти то, что искал.проблема проверки валидации cakephp?
Я новичок в cakephp и довольно новичок в php. Я смог встать и запустить вчера без проблем и отправить данные в мою базу данных. на днях я хотел работать с валидацией с помощью ajax, но я думаю, что я оставлю ajax из него на некоторое время, поскольку у меня возникла проблема с отображением ошибок проверки.
Валидация настроена для первых двух полей формы, подобных этому;
<?php
class people extends AppModel
{
public $name = 'people';
public $useTable = 'people';
public $validate = array(
'firstName'=>array(
'rule'=>'notEmpty',
'message'=>'Enter You First Name'
),
'secondName'=>array(
'rule'=>'notEmpty',
'message'=>'Enter Your Second/Family Name'
),
);
}?>
и он отлично работает, если эти поля пустые, они не будут писать в базу данных до сих пор так хорошо. Однако, когда я нажимаю submit на форме, страница обновляется, сообщения об ошибках появляются под полями формы, но также добавляет совершенно новую форму в соответствии с предыдущей. вот контроллер. Примечание: функция validate_form это из CakePHP с Ajax учебнике я был следующим и закомментированного
<?php
class peoplesController extends AppController
{
public $name = "peoples";
public $helpers = array('Html', 'form', 'Js');
public $components = array('RequestHandler');
public function index() {
if($this->request->is('post'))
{
$data = $this->request->data;
$this->people->save($data);
}
}
/*public function validate_form() {
if ($this->RequestHandler->isAjax()) {
$this->data['people'][$this->params['form']['field']] = $this->params['form']['value'];
$this->people->set($this->data);
if ($this->people->validates()) {
$this->autoRender = FALSE;
}
else {
$error = $this->validateErrors($this->people);
$this->set('error', $error[$this->params['form']['field']]);
}
}
}*/
}
?>
и вид. примечание: divs с отправкой id и успехом также из учебника, которое я следовал, но я не думаю, что это повлияет на эту конкретную проблему.
<div id="success"></div>
<h2> Fill in your profile details </h2>
<?php
echo $this->Form->create('people');
echo $this->Form->input('firstName');
echo $this->Form->input('secondName');
echo $this->Form->input('addressOne');
echo $this->Form->input('addressTwo');
echo $this->Form->input('city');
echo $this->Form->input('county');
echo $this->Form->input('country');
echo $this->Form->input('postCode', array(
'label' => 'Zip Code',
));
echo $this->Form->input('dob', array(
'label' => 'Date of birth',
'dateFormat' => 'DMY',
'minYear' => date('Y') - 70,
'maxYear' => date('Y') - 18,
));
echo $this->Form->input('homePhone');
echo $this->Form->input('mobilePhone');
echo $this->Form->input('email', array(
'type' => 'email'
));
$goptions = array(1 => 'Male', 2 => 'Female');
$gattributes = array('legend' => false);
echo $this->Form->radio('gender',
$goptions, $gattributes
);
echo $this->Form->input('weight');
echo $this->Form->input('height');
$toptions = array(1 => 'Tandem', 2 => 'Solo');
$tattributes = array('legend' => false);
echo $this->Form->radio('trained',
$toptions, $tattributes
);
echo $this->Form->input('referedBy');
/*echo $this->Form->submit('submit');*/
echo $this->Js->submit('Send', array(
'before'=>$this->Js->get('#sending')->effect('fadeIn'),
'success'=>$this->Js->get('#sending')->effect('fadeOut'),
'update'=>'#success'
));
echo $this->Form->end();
?>
<div id="sending" style="display: none; background-color: lightgreen">Sending.... </div>
<?php
echo $this->Html->script(
'validation', FALSE);
?>
поэтому создание второй идентичной формы на той же странице, моя основная проблема, я думаю, что это что-то делать с контроллером принимает первую форму и отправить ее обратно в ту же точку зрения, но я не знаю, как это сделать.
вторая проблема заключается в том, что по какой-то причине, если я использую
echo $this->Form->submit('submit');
вместо
echo $this->Js->submit('send', array(
'before'=>$this->Js->get('#sending')->effect('fadeIn'),
'success'=>$this->Js->get('sending')->effect('fadeOut'),
'update'=>'#success'));
Тогда я не получаю мои сообщения об ошибках больше я вместо того, чтобы просто получить пузырь, который появляется и говорит " заполните это поле «Я уверен, что это проблема с jQuery, но снова я не знаю, как это сделать, чтобы этот булл не появлялся, и вместо этого отображаются сообщения об ошибках. Я хочу
Спасибо заранее
Спасибо Я ценю это, причина, я не сделал использовать кепки было, потому что поля моей базы данных не были кепками, я могу предположить, что тогда не будет иметь никакого значения? – Ir1sh
Нет, имена классов не связаны с полями базы данных. Имя класса модели связано с db ** таблицами **, но они всегда преобразуются в строчные. – Costa