0

我有一个模型(具有 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 的 url 应该是什么。(目前我正在使用 localhost/webapp/controller.. 并且它以表单显示 3 次。

4

2 回答 2

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'])) ; ?>

谢谢。

于 2013-01-11T05:36:26.277 回答
0

明白了.. 我已经使用收集表格输入解决了我的问题 我能够通过收集表格输入http://www.yiiframework.com/doc/guide/1.1/en/form来实现我正在寻找的东西 。桌子

谢谢大家:)

我的控制器:

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 -->
于 2013-01-11T15:06:59.753 回答