sanek_os9
@sanek_os9
Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux

Как в twig показать свойство объекта?

Ситуация такая, до использования twig класс имел такой вид
class User
{
    public $data = [];

    public function __construct($id)
    {
        $this->id = $id;
        $this->data = $this->getData();
    }
    private function getData()
    {
        return [];
    }
    public function __get($name)
    {
        if (isset($this->data[$name])) {
            return $this->data[$name];
        }
    }
}

И данные я получал к примеру так
$user = new User(1);
echo $user->first_name;

В twig так не работает если прописать
{{user.first_name}}
ему нужно что то вроде этого
class User
{
    public $data = [];
    public $first_name;

    public function __construct($id)
    {
        $this->id = $id;
        $this->data = $this->getData();
        $this->first_name = $this->data['first_name'];
    }
    private function getData()
    {
        return ['first_name' => 'Йаволь'];
    }
    public function __get($name)
    {
        if (isset($this->data[$name])) {
            return $this->data[$name];
        }
    }
}

мне теперь все свойства вот так прописывать?
  • Вопрос задан
  • 1076 просмотров
Решения вопроса 1
DevMan
@DevMan
1. коль играешь в магию, то $data нужно делать приватным, а не публичным.
2. коль играешь в магию, то играй до конца - где метод __isset()?
3. use manual luke - https://twig.sensiolabs.org/doc/2.x/recipes.html#u...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы