Sto usando CakePHP 2.6.7.CakePHP 2.6.7 hasMany Data non è stato salvato
Un utente sarà in grado di aggiungere al suo profilo più auto e più indirizzi. Sarà inoltre in grado di collegare più indirizzi a un'auto e collegare un indirizzo a più auto.
Ho poi ho un modello User con:
class User extends AppModel {
public $hasMany = array(
'Car',
'Address'
);
}
un modello di vettura con:
class Car extends AppModel {
public $belongsTo = array(
'User'
);
public $hasAndBelongsToMany = array(
'Address' =>
array(
'unique' => 'keepExisting'
)
);
}
Un un modello Indirizzo:
class Address extends AppModel {
public $hasAndBelongsToMany = array(
'Car' =>
array(
'unique' => 'keepExisting',
),
);
public $belongsTo = array(
'User'
);
}
Ho una forma in modo che il l'utente può modificare le sue auto (solo una per il momento):
[...]
<legend>Mes voitures</legend>
<?php
for($nbrvoiture = 0; $nbrvoiture <= 0; $nbrvoiture++)
{
?><h3>Voiture <?php echo $nbrvoiture+1?></h3><?php
$myLabelOptions = array('text' => "Marque");
echo $this->Form->input('Car.'.$nbrvoiture.'.CarMake', array('label' => array_merge($mainLabelOptions, $myLabelOptions)));
$myLabelOptions = array('text' => "Modèle");
echo $this->Form->input('Car.'.$nbrvoiture.'.CarModel', array('label' => array_merge($mainLabelOptions, $myLabelOptions)));
$myLabelOptions = array('text' => "Plaque d'immatriculation");
echo $this->Form->input('Car.'.$nbrvoiture.'.NumberPlate', array('label' => array_merge($mainLabelOptions, $myLabelOptions)));
echo $this->Form->submit("Valider", array(
'class' => 'btn btn-default col-sm-offset-2'
));
}
Il fatto è che non riesco a salvare i dati al mio database. Ecco parte del codice del controller User:
function edit() {
// On récupère l'ID de l'utilisateur
$user_id = $this->Auth->user('id');
// Si l'utilisateur n'a pas d'ID => il n'est pas connecté => il ne peut pas éditer son profil
if(!$user_id){
$this->redirect('/');
die();
}
debug($this->User->find('all'));
$this->User->id = $user_id;
$passError = false;
if($this->request->is('put') || $this->request->is('post')){
$d = $this->request->data;
$d['User']['id'] = $user_id;
debug($d);
if($this->request['pass'][0]=='cars')
{
if($this->User->saveAssociated($d, array('deep' => true))){
$this->Session->setFlash(__("Les informations sur la voiture ont bien été modifiées"), 'alert', array (
'plugin' => 'BoostCake',
'class' => 'alert-success'
));
}else{
$this->Session->setFlash(__("Impossible de modifier ou d'ajouter les infos"), 'alert', array (
'plugin' => 'BoostCake',
'class' => 'alert-danger'
));
}
}
Quando ho salvare i dati, mostra l'errore.
nel mio database Ho questi 4 tavoli:
Users(id, username, mail, password, created, lastlogin, active, firstname, lastname, gender, birthdate, phonenumber)
Cars(id, CarMake, CarModel, NumberPlate, user_id)
Addresses(id, address, city, state, postcode, country, user_id)
Addresses_cars(address_id, car_id)
Questo è un esempio di quello che posso ottenere dalla forma (la variabile $ d):
array(
'Car' => array(
(int) 0 => array(
'CarMake' => 'Allard',
'CarModel' => '2005',
'NumberPlate' => '56QDS1'
)
),
'User' => array(
'id' => '1'
)
)
non lo faccio capisci perché non funziona ... Puoi aiutarmi per favore?
Grazie! :)
EDIT: Ho provato anche con SaveAll ma non riesco a farlo funzionare .. cosa c'è che non va?
"mostra l'errore", ma non viene elencato l'errore. Che errore stai ottenendo? – Dave
Ha mostrato l'errore che ho scelto di mostrare in caso di errore ($ this-> Session-> setFlash (__ ("Impossibile modificare o modificare le informazioni")). In ogni caso il problema è risolto. per un altro modulo che era in conflitto con questo –
Questo non è un errore, questo è un messaggio. Per domande future, assicurati di essere accurato nella descrizione e includi l'errore/messaggio effettivo in modo da non sprecare il tempo delle persone che vogliono aiuto – Dave