0

私のモデルの中に私はこのコードを持っています、これは部分的なコードです

protected function afterFind ()
{
    $car= Car::model()->findAll("car_id = '{$this->model_id}'");
    foreach($car as $cars) {
        $val['car_name'][] = $cars->car_name;
        $val['car_value'][] = $cars->car_value;
    }
    $this->car_arr = $val;

    parent::afterFind();
}

ビューに配列を渡すにはどうすればよいですか? 私がこのようなことをすると、YIIによるエラー出力がありました htmlspecialchars() expects parameter 1 to be string, array given

4

1 に答える 1

1

Yiiメソッドは後処理AR属性afterfind()にオーバーライドされます。

ドキュメントから:

このメソッドは、各レコードがfindメソッドによってインスタンス化された後に呼び出されます。デフォルトの実装では、onAfterFindイベントが発生します。このメソッドをオーバーライドして、新しく検出された各レコードがインスタンス化された後に後処理を実行できます。イベントが適切に発生するように、必ず親実装を呼び出してください。

したがって、通常は次のように機能します。

protected function afterFind()
{

  $this->attribute_a = customize($this->attribute_a); //return customized attribute_a
  $this->attribute_b = customize($this->attribute_b); //return customized attribute_b
  ....
  parent::afterFind(); //To raise the event
}

何をしようとしているのかわかりませんか?しかし、各検索後にいくつかのタスク(いくつかの配列の入力)を自動化したい場合があります!!

その場合、モデルでパブリック配列を定義できます。

$public car_arr = array();

次に、それをに入力するとafterFind()、ビューからアクセスできるようになります。

于 2012-08-18T10:53:12.643 に答える