Yii-Formular Senden, in der Seite Ansicht

Ich begann mit yii und stieß ich auf ein problem.
Ich habe eine Tabelle namens "Benutzer" und eine Tabelle namens "Nachrichten".
Ich im Grunde möchten Sie eine Seite haben, wo ich einsehen kann ein Benutzer die details, aber auch ihm eine Nachricht schicken, dass würde gespeichert werden in der message-Tabelle.

Ich habe eine Ansicht mit der Bezeichnung "user/view.php" die besteht aus:

<h1>View User #<?php echo $model->id; ?></h1>

<?php $this->widget('zii.widgets.CDetailView', array(
    'data'=>$model,
    'attributes'=>array(
        'id',
        'username',
        'first_name',
        'last_name',
    ),
)); ?>

<?php $message=new Message;
echo $this->renderPartial('_messagesend', array('model'=>$message)); ?>

den _messagesend Formular (erstellt mit gii) sieht wie folgt aus:

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'message-_messagesend-form',
    'enableAjaxValidation'=>false,
)); ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->errorSummary($model); ?>

    //for the sake of simplicity lets just insert the id's manually for now
    <div class="row">
        <?php echo $form->labelEx($model,'idFrom'); ?>
        <?php echo $form->textField($model,'idFrom'); ?>
        <?php echo $form->error($model,'idFrom'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'idTo'); ?>
        <?php echo $form->textField($model,'idTo'); ?>
        <?php echo $form->error($model,'idTo'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'msg'); ?>
        <?php echo $form->textField($model,'msg'); ?>
        <?php echo $form->error($model,'msg'); ?>
    </div>


    <div class="row buttons">
        <?php echo CHtml::submitButton('Send'); ?>
    </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

Habe ich eine einfache Ansicht in meinem UserController, um die Anzeige der details info:

public function actionView($id)
    {
        $this->render('view',array(
            'model'=>$this->loadModel($id)
        ));
    }

Und jetzt will ich herausfinden, wie ich hinzufügen kann, den controller, um die Mitteilung zu speichern. Nach gii Schaffung bekomme ich einen code, ich habe versucht, zu verwenden, und ändern Sie ein wenig:

public function actionMessagesend()
    {
        $model=new Message;

        if(isset($_POST['Message']))
        {
            $model->attributes=$_POST['Message'];
            if($model->save()){
                $this->redirect(array('admin'));
                }
        }
        $this->render('_messagesend',array('model'=>$model));
    }

Ich versuchte, fügen Sie diese controller-Funktion in der UserController.php aber es scheint nicht zu funktionieren, ich versucht, um die gleiche Funktion zu MessageController.php aber es scheint auch nicht zu funktionieren. Ich versuchte, entfernen Sie den code und fügen Sie nur eine Umleitung zu zeigen, wenn der controllercode tatsächlich trifft es aber nicht umleiten (ich habe versucht, es sowohl im usercontroller und messagecontroller). So habe ich das Gefühl, mein code ist nicht erreicht. Habt Ihr eine Idee, was fehlt mir hier?

Vielleicht eine kleine extra-Frage: gibt es einen besseren Vorschlag, das zu tun, was ich tun will?

Vielen Dank!

Beste Grüße,

WtFudgE

  • In diesem Szenario, das ich in der Regel zeigen Sie die Seite Quelle und sehen, was die action-URL ist. Dann weiß ich, was yii versucht zu erreichen und mit Ihr arbeiten. Beachten Sie auch, dass in extremen Fällen, können Sie eine chance, das action-URL, wenn Sie Sie initialisieren CActiveForm
  • Nur ein Tipp - in der Regel yii Namenskonventionen werden feststellen, dass die Ansichten, die mit einem Unterstrich beginnen sollen teilweise gerendert. Es hilft, wenn man 10s, 100s oder 1000s der Ansichten, zwischen beiden zu unterscheiden.
InformationsquelleAutor WtFudgE | 2013-04-30
Schreibe einen Kommentar