PHPActiveRecord/Twigで結合テーブルにアクセスできません。これが簡略化されたコードです。2つのモデル(コードとユーザー)があり、各コードは1人のユーザーに属しているので、コードの作成者の名前でコードをリストしたいと思います。
php
// model
class Code extends ActiveRecord\Model {
static $belongs_to = array(
array('user'),
);
}
class User extends ActiveRecord\Model {
static $has_many = array(
array('code'),
);
}
// controller
$codes = Code::all(array('include' => 'user'));
var_dump($codes); //-> successfully displayed codes list and their authors
$this->twig->display('codelist.twig', $codes);
template.twig
{% for code in codes %}
{{ code.name }} //-> successfully displayed code's name
{{ code.user.name }} //-> failed to output user's name with error
{% endfor %}
// error:
// An exception has been thrown during the rendering of a template ("Call to undefined method: user") in "inc/template.twig" at line **.
私はこのページを見ました:http: //twig.sensiolabs.org/doc/templates.html
実装
便宜上、foo.barはPHPレイヤーで次のことを行います。
fooが配列であるかどうかを確認し、有効な要素を禁止します。そうでない場合、およびfooがオブジェクトである場合は、barが有効なプロパティであることを確認してください。そうでない場合、およびfooがオブジェクトである場合は、barが有効なメソッドであることを確認してください(barがコンストラクターであっても、代わりに__construct()を使用してください)。そうでない場合、およびfooがオブジェクトである場合は、getBarが有効なメソッドであることを確認してください。そうでない場合、およびfooがオブジェクトである場合は、isBarが有効なメソッドであることを確認してください。そうでない場合は、null値を返します。一方、foo['bar']はPHP配列でのみ機能します。
fooが配列であるかどうかを確認し、有効な要素を禁止します。そうでない場合は、null値を返します。
$ codes [0]-> userを介してユーザー属性にアクセスできますが、twigテンプレートファイルのユーザー属性にアクセスできないのはなぜですか?