0

こんにちは私はyiiにかなり慣れていません。練習用のアプリケーション(RPGのキャラクタージェネレーター)を作成していて、フォームの問題を更新するときに問題が発生しました。複合PKを持つテーブルを更新する必要があります。これまでのところ、フォームを使用して両方のテーブルに作成できます。しかし、updateCodeをロードできません。私のコードは次のようなものです:

public function actionUpdate($id) {
    $model = $this->loadModel($id);
    $magicDiffModel = array();
    $m = Difficulty::getDifficultyListByType(Difficulty::magicDifficulty);
    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);
    if(!isset($_POST['MagicDifficulty']) && $id != ''){
        foreach ($m as $diff => $v) {
            $magicDiffModel[$diff] = MagicDifficulty::model()->findAllByPk(array('magic_id' => $id,'difficulty'=>$diff));
        }
    }else{

    }
    if (isset($_POST['Magic'])) {
        $model->attributes = $_POST['Magic'];
        if ($model->save())
            $this->redirect(array('view', 'id' => $model->id));
    }

    $this->render('update', array(
        'model' => $model,
        'magicDiffModel' => $magicDiffModel,
        'm' => $m,
    ));
}

<tr>
    <td>Zeon</td>
    <?php foreach ($m as $id => $name) { ?>
    <td><?php echo CHtml::activeTextField($magicDiffModel, '['.$id.']zeon'); ?></td>
    <?php } ?>
</tr>
<tr>
    <td>Int B.</td>
    <?php foreach ($m as $id => $name) { ?>
    <td><?php echo CHtml::activeTextField($magicDiffModel, '['.$id.']base_int'); ?></td>
    <?php } ?>
</tr>
<tr>
    <td>Mantenimiento</td>
    <?php foreach ($m as $id => $name) { ?>
    <td><?php echo CHtml::activeTextField($magicDiffModel, '['.$id.']manteinance'); ?></td>
    <?php } ?>
</tr>
<tr>
    <td>Descripción</td>
    <?php foreach ($m as $id => $name) { ?>
    <td><?php echo CHtml::activeTextField($magicDiffModel, '['.$id.']description'); ?></td>
    <?php } ?>
</tr>

これは最初のスタックアイテムの例外です

get_class() expects parameter 1 to be object, array given

/srv/http/animaGen/framework/web/helpers/CHtml.php(2117): get_class(array(1 => array(MagicDifficulty), 2 => array(MagicDifficulty), 3 => array(MagicDifficulty), 4 => array(MagicDifficulty)))              
return get_class($model).$sub.'['.$attribute.']';

この天国は可能ですか。注:エラーは理解できますが、解決策を考えることはできません。

4

1 に答える 1

2

activeTextFieldCModelcollection(array )を渡す最初のparamインスタンスとして受け入れます。したがって、正しいコードは次のようになります。

<tr>
    <td>Zeon</td>
    <?php foreach ($m as $id => $name) { ?>
    <td><?php echo CHtml::activeTextField($magicDiffModel[$id], 'zeon'); ?></td>
    <?php } ?>
</tr>
<tr>
    <td>Int B.</td>
    <?php foreach ($m as $id => $name) { ?>
    <td><?php echo CHtml::activeTextField($magicDiffModel[$id], 'base_int'); ?></td>
    <?php } ?>
</tr>
<tr>
    <td>Mantenimiento</td>
    <?php foreach ($m as $id => $name) { ?>
    <td><?php echo CHtml::activeTextField($magicDiffModel[$id], 'manteinance'); ?></td>
    <?php } ?>
</tr>
<tr>
    <td>Descripción</td>
    <?php foreach ($m as $id => $name) { ?>
    <td><?php echo CHtml::activeTextField($magicDiffModel[$id], 'description'); ?></td>
    <?php } ?>
</tr>
于 2012-08-18T11:25:56.257 に答える