我刚开始使用 yii,我偶然发现了一个问题。我有一个名为“users”的表和一个名为“messages”的表。我基本上希望有一个页面,我可以在其中查看用户的详细信息,但也可以向他发送一条消息,该消息将保存在消息表中。
我有一个名为“user/view.php”的视图,其中包括:
<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)); ?>
_messagesend 表单(使用 gii 创建)如下所示:
<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 -->
我的 UserController 中有一个简单的视图来显示详细信息:
public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id)
));
}
现在我想弄清楚如何添加控制器来保存消息。在 gii 创建之后,我得到了一个我尝试使用并稍微修改的代码:
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));
}
我试图在 UserController.php 中添加这个控制器函数,但它似乎不起作用,我试图将相同的函数添加到 MessageController.php 但它似乎也不起作用。我试图删除所有代码,只添加一个重定向以显示控制器代码是否实际命中但它没有重定向(我在 usercontroller 和 messagecontroller 中都尝试过)。所以我觉得我的代码没有到达。你们知道我在这里缺少什么吗?
也许还有一点额外的问题:有没有更好的建议来做我想做的事?
非常感谢!
此致,
软糖