1

を使用しているときにこのエラー メッセージが表示されましたCHtml::resolveName: 参照によってパラメーター 2 を渡すことはできません。ここに私の簡単なテストコードがあります:

<?php 
class TestController extends CController {
    public function test() {
      var_dump(CHtml::resolveName($myModels, 'someAttribute');
      exit;
    }
}

このアクションにルーティングすると、常にエラーがスローされます。ただし、このようにコードを変更すると

<?php 
class TestController extends CController {
    public function valid($model, $attribute) {
        return CHtml::resolveName($model, $attribute);
    }

    public function test() {
        var_dump($this->valid);
        exit;
    }
}

できます!CHtml::resoveName()Yii フレームワークのメソッドのドキュメントを読みましたが、引数参照を使用しています。しかし、最初のコードを使用するとエラーが発生する理由はわかりません。実際には、2 番目のコードと同じです。この状況を理解するのを手伝ってもらえますか? ありがとうございました!

4

2 に答える 2

2

var_dump 関数の閉じ括弧が 1 つ不足していると思います。

<?php 
class TestController extends CController {
    public function test() {
      var_dump(CHtml::resolveName($myModels, 'someAttribute'));
      exit;
    }
}
?>

CHtml::resolveNameもう1つ、機能を正しく使用していませんでした。変数名を渡すのではなく、その参照を渡します。 ここをチェック

<?php 
    class TestController extends CController {
        public function test() {
          $attribute = 'someAttribute';
          var_dump(CHtml::resolveName($myModels, &$attribute));
          exit;
        }
    }
    ?>
于 2012-09-14T05:41:04.640 に答える
1

次のように書き換えるだけです。

CHtml::resolveName($myModels, $dummy='someAttribute')

これは、属性名が変数参照として関数呼び出しに渡されるためです。$dummy='someAttribute' は一時変数 $dummy を作成してそれを渡します。

于 2013-11-13T02:54:43.030 に答える