0

モデル(名前(pk)とテキストの2つのフィールドを持つテーブル)があります。これらのフォームにデータを表示し、ページから更新する必要があります。これを使用してフォームを表示できます

<?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 はどうすればよいですか。

4

2 に答える 2

2

次のように達成できます。

あなたのアクションが「更新」であり、 でレコードを更新する必要があると仮定するとid = 1、この ID を のような更新アクションに渡すことができます。メソッドをupdate?id=1介して、アクションでこの ID を取得し、この ID のデータを取得できます。..経由でIDを取得していますpostupdatepost

$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

わかった.. Collecting Tabular Input 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 に答える