@VitaliyKaliuzhyn

Вывести определенную часть массива?

есть объект который я получаю так:

$model->getAttribute('help');
он выводит
string '{
    "user": {
        "type": "class",
        "methodTitle": "modelTitle",
        "class": "\\gm\\models\\users\\tables\\Users",
        "fields": {
            "username" : "attribute",
            "first_name": "attribute",
            "last_name": "attribute",
            "second_name": "attribute"
        }
    }
}'


Как мне вывести "username"
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 3
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Я так понимаю, что у Вас есть связь в модели getFields()
Чтобы получить данные через связь пишите так:
$model->fields->username
Подробней здесь(работа со связными данными)
И дополните свой вопрос содержимым getAttribute('help'), что внутри, как работает?
Ответ написан
Комментировать
В symfony есть PropertyAccess Component
use Symfony\Component\PropertyAccess\PropertyAccess;
$accessor = PropertyAccess::createPropertyAccessor();
echo $accessor->getValue(json_decode($model->getAttribute('help')), 'user.fields.username'));


Этот компонент можно использовать независимо в любом проекте на php
composer require "symfony/property-access"
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
$str = $model->getAttribute('help');
$array = json_decode($str);
echo $array['user']['fields']['username'];

подробнее о php можно почитать тут:
php.net/json_decode

В yii2 кстати есть хелпер для этого: www.yiiframework.com/doc-2.0/yii-helpers-json.html
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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