У меня странные проблемы с формой в CakePHP.
Я пытаюсь сохранить данные, которые я получил из формы в модель Booking
, Некоторые контактные данные, сообщение, номер телефона и адрес электронной почты, стандартные вещи. Данные опубликованы, и я пытаюсь сохранить их через
$this->Booking->save ($this->request->data);
Но поскольку я пытаюсь сохранить, два поля не проходят проверку и не останавливают процесс сохранения:
phone_buyer
а также carsign
,
Странно то, что эти два поля не являются частью формы, которую я пытаюсь сохранить. Они не появляются в $this->data
, как и ожидалось:
$ This-> request-> данные:
array(
'Booking' => array(
'question' => 'Lieber Vermieter,
ich würde gerne im angegebenen Zeitraum auf deinem Parkplatz parken. Ist das möglich? Ich freue mich auf deine Rückmeldung.
Liebe Grüße',
'start_date' => '30.10.2014',
'end_date' => '30.10.2014',
'sellerid' => '294',
'buyerid' => '301',
'parkid' => '10468',
'status' => 'Angebot',
'answer' => 'Blserntesn7x6 u fcgt c c ',
'ppemail_seller' => '*email*',
'phone_seller' => '0532732123',
'acceptrules' => '1',
'acceptrules2' => '1',
'id' => '1012'
)
)
…и они не являются частью формы, которую я отправляю. Их нет даже в любой другой форме на странице. Однако они существуют как поля в базе данных и имеют правила проверки в модели:
Booking.php (модель):
class Booking extends AppModel {
public $validate = array(
//(...)
'phone_seller' => array (
'rule' => array ('notEmpty'),
'message' => 'Damit dich der Mieter kontaktieren kann, brauchst du eine Telefonnummer.'
),
'ppemail_seller' => array (
'rule' => array ('notEmpty'),
'message' => 'Um das Geld der Miete zu empfangen, benötigst du ein PayPal-Konto.'
),
// These two are giving me headaches:
'carsign' => array(
'required' => array(
'rule' => array('notEmpty'),
'required' => false,
'message' => 'Du brauchst ein Autokennzeichen, um den Parkplatz zu buchen.'
)
),
'phone_buyer' => array(
'required' => array(
'rule' => array('notEmpty'),
'required' => false,
'message' => 'Damit dich der Vermieter kontaktieren kann, brauchst du eine Telefonnummer.'
)
)
);
}
Но согласно документации, которую я читал до сих пор, правило notEmpty не должно ничего делать, если соответствующее поле не является частью отправленной формы. Чтобы быть уверенным, я добавил required=>false
, но они все еще бросают ошибки в меня.
Буду очень рад любой помощи, заранее благодарю. 🙂
Извините, если некоторые вещи трудно понять, английский не мой родной язык.
Обновить:
Спасибо за предложения, я нашел проблему. Я написал это в ответе ниже.
Я нашел проблему.
Проблема заключалась в том, что в некотором коде перед сохранением, $this->Booking->read();
был использован для получения содержимого базы данных. Так как эта функция перезаписывает данные в модели (как я узнал Вот), данные, которые я пытался сохранить, были потеряны и заменены содержимым базы данных (в которой отсутствовали эти конкретные поля). Я заменил функцию на $this->Booking->findById($id);
и все работало нормально.
Вы пробовали с 'allowEmpty'
ключ?
'phone_buyer' => array(
'required' => false,
'allowEmpty' => false,
'message' => 'Damit dich der Vermieter...'
)