Je suis nouveau dans le framework CakePhp et actuellement je suis en train de tester un projet. Problème que j'ai, je peux peupler l'option de liste déroulante, mais quand je veux sélectionner une option, il ne sera pas enregistré sur la base de données. Ai-je manqué quelque chose?Enregistrement de données depuis une liste déroulante vers une base de données CakePHP
En utilisant ce code je peux remplir le menu déroulant - bookings.js
$("#contact_submit").click(function() {
var name = $("#name").val();
var contact_email = $("#contact_email").val();
var subject = $("#subject").val();
var message = $("#txtmessage").val();
var service = $("#sel1").val();
console.log(name+contact_email+subject+message+service);
$.post("/inquiries/inquiry", //Required URL of the page on server
{// Data Sending With Request To Server
name: name,
email: contact_email,
subject: subject,
txt: message,
service_id: service,
},
function (response) { // Required Callback Function
if (jQuery.parseJSON(response).status == 'success') {
if ($("#available").hasClass("hide")) {
$("#available").removeClass("hide");
}
if (!$("#available").hasClass("hide")) {
$("#notavailable").addClass("hide");
}
}else{
if ($("#notavailable").hasClass("hide")) {
$("#notavailable").removeClass("hide");
}
if (!$("#available").hasClass("hide")) {
$("#available").addClass("hide");
}
}
});
});
InquriesController.php
public function inquiry()
{
$inquiry = $this->Inquiries->newEntity();
if ($this->request->is('post')) {
$emailaddress = $this->request->data['email'];
$subject = $this->request->data['subject'];
$txt = $this->request->data['txt'];
$services = $this->request->data['service_id'];
$message = "this is a message";
$inquiry = $this->Inquiries->patchEntity($inquiry, $this->request->data);
if ($this->Inquiries->save($inquiry)) {
$email = new Email('default');
$email->from(['[email protected]' => 'Testing Hotel'])
->to($emailaddress)
->subject('Inquiry Mail')
->emailFormat('html')
->send($message);
echo json_encode(['status' => 'success']);
exit;
} else {
echo json_encode(['status' => 'failed']);
exit;
}
}
}
HTML CODE SNIPPET
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="text" name="contact_email" id="contact_email" class="form-control" placeholder="Email *">
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<input type="text" id="subject" class="form-control" placeholder="Subject">
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<input class="form-control" name="txtmessage" id="txtmessage" rows="8" placeholder="Messages goes here.."></input>
<div class="form-group">
<select class="form-control" id="sel1">
<option>Select a service</option>
<?php
if (!empty($ServicesInfo)) {
foreach ($ServicesInfo as $Services):
?>
<option value="<?= h($Services->name)?>"><?= h($Services->name)?></option>
<?php endforeach; } ?>
</select>
</div>
Les autres champs ne sont-ils pas également enregistrés? – Aarrbee
seul le service_id qui n'est pas enregistré. –
Vous envoyez '$ Services-> name' dans' service_id'. Votre base de données a peut-être un champ ** int ** et c'est pourquoi il ne sauvegarde pas le nom du service. – Aarrbee