2009-12-17 4 views
1

Desc Modèle belongsTo Prod. Je veux que tous les Prod.Name apparaissent comme des cases à cocher lors de l'ajout d'un nouveau desc, de sorte que l'utilisateur cliquera simplement sur un Prod.Name lors de l'ajout d'une nouvelle description pour cela. Comme:Comment importer un modèle d'un autre modèle dans CakePHP

<?php 
echo $form->create('Desc'); 
echo $form->checkBox(Prod.Name); // assuming this is the correct code. 
echo $form->textArea('Desc.content'); 
echo $form->end('Save'); 
?> 

Je ne suis toujours pas familier avec ce cadre, tout en jouant avec elle.

Merci!

Jusqu'à présent, ce que je l'ai fait:

<select name='data[Desc][prod_id]' id='DescriptionProdId'> 
<?php echo $form->create('Desc'); ?> 
<?php foreach($opps as $opp): ?> 
<option value="<?php $opp["Prod"]["id"] ?>"> 
<?php echo $opp["Prod"]["name"]; ?> 
</option> 
<?php endforeach; ?> 
</select> 
+0

Ce que vous essayez de faire et ce que vous faites sont deux choses différentes. Si votre desc appartient à prod, assurez-vous de définir dans vos modèles avec var $ belongsTo et var $ hasOne, vous devriez lire le doc sur les associations. var $ uses ne doit pas être utilisé dans cette situation – Charles

+0

Oui, je l'ai déjà fait. Merci de me le rappeler :) –

Répondre

0

Au lieu de créer l'élément manuellement, vous devez utiliser le FormHelper.

À votre avis:

<?php 
echo $form->input('prod_id', array('options' => $opps)); 
?> 

CakePHP rend l'entrée de sélection, en utilisant les enregistrements opps $ comme les options. Vous pouvez également définir d'autres options que l'option 'options'. Départ:

http://book.cakephp.org/view/189/Automagic-Form-Elements

Si vous spécifiez la variable d'affichage comme aiguillons dans votre action de contrôleur, vous n'avez pas besoin de spécifier les options clé du tableau $ options. Dans l'action du contrôleur:

$this->set('prods', $this->find('all')); 
+0

affichera-t-il tout le nom de prod dans la base de données? –

+0

Oui. Vous ne devriez jamais écrire des éléments de formulaire personnalisés avec cakephp. Apprenez à utiliser le FormHelper. – adam

+0

Dans votre appel $ form-> checkbox(), l'argument ne contient pas les guillemets de chaîne qui l'entourent. En outre, vous devez toujours utiliser $ form-> input(), et cakephp affichera le type de formulaire approprié en fonction du schéma de la base de données. Si vous avez besoin d'un type d'entrée différent, utilisez cette option: $ form-> input ('Model.field', array ('type' => 'textarea')); – adam

Questions connexes