У меня есть поле типаSymfony Учение Visible в Twig
/**
* @var array
*
* @ORM\Column(name="raw", type="json_array", nullable=true)
*/
private $raw;
и я поставил в этой сфере формат данных JSON
$jsonRaw = array(
'repository_language' => $repository['language'],
'used_languages' => $languages,
'commits' => $commits,
'scooped_branch' => $sha,
'first_commit' => empty($this->committer[0]['author']) ? null : $this->committer[0],
'last_commit' => empty($this->committer[1]['author']) ? null : $this->committer[1]
);
и установить в сущности
$entity->setRaw(json_encode($jsonRaw));
, а затем у меня есть данные в этом поле field_data и я, отображая это поле в шаблоне, но имеют ошибку
{% for languages in project.raw.used_languages|json_decode %}
<div class="row col-sm-2" style="position: relative; text-align: center; margin: 0; padding: 0;">
<small style="color: #00312f;">
<strong>{{ languages.lang }}</strong>:<br>
{{ languages.percent|round(1, 'floor') }}%<br>
</small>
</div>
{% endfor %}
Impossible to access an attribute ("used_languages") on a string variable ("{"repository_language":"PHP","used_languages":[{"lang":"PHP","percent.....
Почему? Я это, может быть, прут не друг с JSON и создать собственный прут фильтр
class VarsExtension extends Twig_Extension
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function getName()
{
return 'some.extension';
}
public function getFilters() {
return array(
'json_decode' => new \Twig_Filter_Method($this, 'jsonDecode'),
);
}
public function jsonDecode($str) {
return json_decode($str);
}
}
и попытаться использовать
{% for languages in project.raw.used_languages|json_decode %}
<div class="row col-sm-2" style="position: relative; text-align: center; margin: 0; padding: 0;">
<small style="color: #00312f;">
<strong>{{ languages.lang }}</strong>:<br>
{{ languages.percent|round(1, 'floor') }}%<br>
</small>
</div>
{% endfor %}
и до сих пор ошибка
Impossible to access an attribute ("used_languages") on a string variable ("{"repository_language":"PHP","used_languages":[{"lang":"PHP","percent":75.976812123425},{"lang":"JavaScript","percent":13.194136518949},{"lang":"CSS","percent":10.829051357625}],
помощь, пожалуйста, я не имею понятия (
применить фильтр json_decode перед доступом к элементу по ключу – Matteo
{% set raw = project.raw | json_decode%} {{raw.used_languages}} – Snoozer
Snoozer: thtks very match –