如何在单页中使用多个表单

时间:2013-01-10 17:36:36

标签: forms yii

我有一个模型(包含2个字段名称(pk)和文本的表)。我需要以这些形式显示数据并从页面更新它。 我可以使用此

来显示表单
<?php echo $this->renderPartial('_form', array('model'=>$model)); ?>

但是如何将表中的内容显示到每个部分以及如何更新数据。

index.php是这样的:

<p>some & Text</p>
    <p>
        <?php echo $this->renderPartial('_form', array('model'=>$model)); ?>
    </p>
    <p>Some more  Text</p>
    <p>
        <?php echo $this->renderPartial('_form', array('model'=>$model)); ?>
    </p>
    <p>Little More Text</p>
    <p>
        <?php echo $this->renderPartial('_form', array('model'=>$model)); ?>    
    </p>

我的_form.php是这样的:

<div class="form">

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

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

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

    <div class="row">
        <?php echo $form->labelEx($model,'name'); ?>
        <?php echo $form->textField($model,'name',array('size'=>60,'maxlength'=>255)); ?>
        <?php echo $form->error($model,'name'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'text'); ?>
        <?php echo $form->textArea($model,'text',array('rows'=>6, 'cols'=>50)); ?>
        <?php echo $form->error($model,'text'); ?>
    </div>

    <div class="row buttons">
        <?php echo CHtml::submitButton($model->isNewRecord ? 'Submit' : 'Save'); ?>
    </div>

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

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

为了显示表中的内容,我应该为index.php设置什么内容。(目前我正在使用localhost / webapp / controller ..并且显示表单3次。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

假设您的操作是“更新”,您需要使用id = 1更新记录, 因此,您可以将此ID传递给update?id=1更新操作,或通过post方法,然后您可以在update操作中获取此ID,然后获取此ID的数据: 假设您已通过post获取ID ..

$results = Modelname::model()->findAllByAttributes(array('id'=>$_POST['id']))

然后你可以在表单中传递这个结果,

<?php echo $this->renderPartial('_form', array('model'=>$model, 'results' => $results)); ?>

然后在你的_form: 您可以像这样更新表格数据:

<?php echo $form->textField($model,'mobile',array('value'=>$results['mobile'])) ; ?>

感谢。

答案 1 :(得分:0)

得到它..我已经使用收集表格输入解决了我自己 我能够实现我正在寻找的东西 收集表格输入 http://www.yiiframework.com/doc/guide/1.1/en/form.table

全部谢谢:)

我的控制员:

public function actionBatchUpdate()
    {
            $item = new Model;

            $items=Model::model()->findAll();





            if(isset($_POST['Model']))
            {

                    $valid=true;
                    foreach($items as $i=>$item)
                    {
                            if(isset($_POST['Model'][$i]))

                            $item->attributes=$_POST['Model'][$i];
                            $valid=$item->validate() && $valid;
                            if($valid)$item->save();
                    }


            }

            // displays the view to collect tabular input
            $this->render('batchUpdate',array(
                            'items'=>$items));

    }

我的观看文件:

我的视图文件batchupdate.php是:

<div class="form">
<?php echo CHtml::beginForm(); ?>
<table>

<?php foreach($items as $i=>$item): ?>
<tr style=" border-bottom: solid 1px black;">
<p><td><?php echo CHtml::activeTextField($item,"[$i]name",$htmlOptions=array('disabled'=>'disabled')); ?></td></p>
</tr>


<tr style=" border-bottom: solid 2px black;">
<p><td><?php echo CHtml::activeTextArea($item,"[$i]text",$htmlOptions=array ('rows'=>8,'cols'=>60));?></td></p></tr> 

 <tr style=" border-bottom: solid 1px black;">
<p><td><?php echo CHtml::submitButton('Save');?></td></p></tr>
<tr>
<td><hr size="10" width="100%" /></td>
</tr>

<?php endforeach; ?>
</table>


<?php echo CHtml::endForm(); ?>
</div><!-- form -->