Comment soumettre le formulaire pour un modèle d'un autre contrôleur?
Disons que j'ai une table Posts et Commentaires de la table. Je veux que mon /posts/view/page pour avoir un formulaire sur la même page pour soumettre un commentaire, à l'instar de n'importe quel blog. Je ne sais pas où je vais mal ici, mais c'est ce que j'ai essayé:
class PostsController extends AppController {
var $name = 'Posts';
var $uses = array('Post', 'Cmt');
function view($id = null) {
...
if (!empty($this->data)) {
$this->Cmt->create();
if ($this->Cmt->save($this->data)) {
$this->Session->setFlash(__('The cmt has been saved', true));
}
}
$this->set('post', $this->Post->read(null, $id));
}
et dans la vue
<?php echo $this->Form->create('Cmt');?>
<fieldset>
<?php
echo $this->Form->input('name');
echo $this->Form->input('email');
echo $this->Form->input('title');
echo $this->Form->input('content');
?>
<div class="input select required"><label for="CmtStpageId">Post</label>
<select id="CmtPostId" name="data[Cmt][post_id]">
<option value="1">postname</option>
</select>
</div>
</fieldset>
<?php echo $this->Form->end(__('Submit', true));?>
Quel est le problème ici, qui ne permettent pas à un enregistrement pour être affecté à la cmts table?
Aussi, j'ai l'id de la poste codé en dur dans cette forme, comme vous pouvez le voir, parce que la zone de sélection n'est pas remplir avec des post id pour quelque raison que ce soit. Toute aide à ce que serait apprécié aussi.
OriginalL'auteur CDelaney | 2011-05-14
Vous devez vous connecter pour publier un commentaire.
Lorsque vous créez un formulaire, vous pouvez définir explicitement ce que l'action du formulaire est en utilisant le paramètre de l'url:
Que pour l'ID de la Poste, je suppose que vous avez un 1 à Plusieurs relations entre les messages et les commentaires. Si c'est le cas, vous devez simplement être en mesure de faire ce qui suit dans votre point de vue:
echo $this->Form->input('post_id', array('type'=>'hidden'));
Puis, dans votre vue de la fonction, définie$this->data['Cmt']['post_id'] = $post['Post']['id'];
de l'obtenir pour remplir automatiquement.OriginalL'auteur Tyler
Je pense que c'est mieux de faire comme ça...
l'option['url'] déjà poignées de tableaux avec le contrôleur et l'action.
Vous le trouverez ici: http://book.cakephp.org/view/1384/Creating-Forms#options-url-1387
OriginalL'auteur netusco
Pouvez également utiliser
que ce serait vous prendre pour cmts contrôleur et l'action ajouter sera appelée.
OriginalL'auteur code_rum
Si vous souhaitez soumettre des données pour les Commentaires, c'est mieux à gérer que dans le CmtsController.
Votre fichier de vue en PostsController est ok
va générer l'action du formulaire "/autogenerated_cake_base_url/cmt/view" et, vous gérer sur votre CmtsController, pas dans votre controller posts.
OriginalL'auteur Esteban Cacavelos