我在CakePHP中遇到一些奇怪的问题。
我正在尝试将从表单中获取的数据保存到模型Booking
。一些联系人数据,消息,电话号码和电子邮件地址,标准内容。数据已发布,我正在尝试通过
$this->Booking->save ($this->request->data);
但是在我尝试保存时,两个字段未通过验证并停止保存过程:
phone_buyer
和carsign
。
奇怪的是,这两个字段不是我想要保存的形式的一部分。它们没有按预期显示在$this->data
中:
$这 - >请求 - >数据:
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
,但他们仍然向我提出错误。
我会很高兴得到任何帮助,谢谢你提前。 :)
对不起,如果有些事情难以理解,英语不是我的母语。
更新
感谢您的建议,我发现了问题。我在下面的答案中写道。
答案 0 :(得分:0)
您是否尝试使用'allowEmpty'
密钥?
'phone_buyer' => array(
'required' => false,
'allowEmpty' => false,
'message' => 'Damit dich der Vermieter...'
)
答案 1 :(得分:0)
我发现了问题。
问题是在保存之前的某些代码中,$this->Booking->read();
已用于获取数据库的内容。由于该函数会覆盖模型中的数据(因为我学习here),我试图保存的数据丢失了,并被数据库的内容(缺少这些特定字段)所取代。我用$this->Booking->findById($id);
替换了函数,一切正常。