Bonjour,
Jeune débutant avec cakephp je voulais savoir si il était possible de faire en une seule page un formulaire contenant des informations de plusieurs tables séparé ??
Dans mon cas je voudrais qu'a la création d'un bon de commande table (orders lié a users par user_id) il me propose une liste d'addresses que je lui ai déjà renseigné (table addresses lié a users par user_id) ainsi qu'une liste de contacts (table contacts lié a users par user_id) ressortir le taux de tva qui est dans la table addresses (champs tx_tva).
Est-ce possible ?
Cordialement
Il faut faire plusieurs save dans le controller. C'est possible mais ne cherche pas une fonction toute faite :)
j'ai fais comme ça mais ça ne fonctionne pas :
Mon controller :
public function members_add() {
$id_user = $this->Auth->user('id');
$id_order = $this->Order->id;
$this->Order->user_id = $id_user;
$this->Item->order_id = $id_order;
if ($this->request->is('post') || $this->request->is('put')) {
$this->Order->save($this->request->data);
$this->Item->save($this->request->data);
}
debug($this->request->data);
}
ma vue :
<div class="orders form">
<?php echo $this->Form->create('Order');?>
<fieldset>
<legend><?php echo __('New Order'); ?></legend>
<?php
echo $this->Form->input('number');
echo $this->Form->input('comment');
echo $this->Form->input('user_id',array('value'=>$user_id,'type'=>'hidden'));
echo $this->Form->create('Item');
echo $this->Form->input('name');
echo $this->Form->input('reference');
echo $this->Form->input('quantity');
echo $this->Form->input('price_unit');
echo $this->Form->input('sub_total');
echo $this->Form->input('order_id',array('value'=>$order_id,'type'=>'hidden'));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit'));?>
</div>
J'ai plusieurs erreur :
Undefined variable: user_id [APP/View/Orders/members_add.ctp, line 14]
Undefined variable: order_id [APP/View/Orders/members_add.ctp, line 14]
Et quand je post j'ai :
Notice (8): Indirect modification of overloaded property OrdersController::$Item has no effect [APP/Controller/OrdersController.php, line 49]
Fatal error: Call to a member function save() on a non-object in /Users/aurelien/Sites/id_ordering_system/app/Controller/OrdersController.php on line 52
Je sais plus quoi faire, merci pour votre aide
Tu ne peux pas avoir un form dans un form.
Il faut plutot que tu fasse input('Item.name');
faut t'il que je mette plusieur save dans le controlleur ??
$this->Order->save($this->Order->data);
$this->Item->save($this->Item->data);
Car il me sort un message d'erreur :
Fatal error: Call to a member function save() on a non-object in /Users/aurelien/Sites/id_ordering_system/app/Controller/OrdersController.php on line 48
Dans ma vu j'ai modifié le formulaire comme suit :
<div class="orders form">
<?php echo $this->Form->create('');?>
<fieldset>
<legend><?php echo __('New Order'); ?></legend>
<?php
echo $this->Form->input('Order.number');
echo $this->Form->input('Item.name');
echo $this->Form->input('Item.reference');
echo $this->Form->input('Item.quantity');
echo $this->Form->input('Item.price_unit');
echo $this->Form->input('Item.sub_total');
echo $this->Form->input('Order.comment');
echo $this->Form->input('Order.user_id',array('type'=>'text'));
echo $this->Form->input('Item.order_id',array('type'=>'text'));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit'));?>
</div>
Que dois-je mettre dans <?php echo $this->Form->create('');?> ?? comme y'a plusieurs formulaire j'ai laissé vide
Merci
EDIT : quand je supprime la fonction save mon débug m'affiche bien les data :
Array
(
[Order] => Array
(
[number] => test
[comment] => fdfsd
[user_id] => 1
)
[Item] => Array
(
[name] => test
[reference] => sfdsdf
[quantity] => 9
[price_unit] => 6
[sub_total] => 54
[order_id] => 7
)
)
bonjour,
apres plusieurs essais je n'arrives toujours pas a enregister dans 2 tables.
Quelqu'un pourrait m'aider ??
Voila mon code mais ça ne sauvegarde pas dans la db malgré que le débug m'affiche bien des infos:
public function members_add() {
$user_id = $this->Auth->user('id');
$d = $this->request->data;
$d'Order']'user_id'] = $user_id;
$order_id = $this->Order->id;
$d'Item']'order_id'] = $order_id;
$this->Order->saveAll($d);
debug($d);
}
Cordialement,