简体   繁体   English

在胡子中的数组内渲染php数组

[英]Render php array within an array in mustache

My array "$groupData" looks like this: 我的数组“ $ groupData”看起来像这样:

 array(3) (
    0 => array(3) (
        "id" => string(1) "2"
        "name" => string(20) "Super Administrators"
        "permissions" => array(3) (
            "system" => integer 1
            "superuser" => string(1) "1"
            "admin" => string(1) "1"
        )
    )
    1 => array(3) (
        "id" => string(1) "3"
        "name" => string(10) "Publishers"
        "permissions" => array(4) (
            "system.pub.add" => integer 1
            "system.pub.delete" => integer 1
            "system.pub.edit" => integer 1
            "system.pub.publish" => integer 1
        )
    )
    2 => array(3) (
        "id" => string(1) "4"
        "name" => string(7) "Authors"
        "permissions" => array(3) (
            "system.pub.add" => integer 1
            "system.pub.delete" => integer 1
            "system.pub.edit" => integer 1
        )
    )
)

I am having trouble rendering the permissions part of my code. 我在呈现代码的permissions部分时遇到问题。 I have tried using {{#groupData}}{{#permissions}} {{.}} {{/permissions}}{{/groupData}} but it doesn't work. 我已经尝试使用{{#groupData}}{{#permissions}} {{.}} {{/permissions}}{{/groupData}}但是它不起作用。

Your problem is that {{ . }} 您的问题是{{ . }} {{ . }} ... You're trying to render an associative array as a string, and that just doesn't work in PHP: {{ . }} ...您正在尝试将关联数组呈现为字符串,但这在PHP中不起作用:

<?php
echo array('foo' => 1, 'bar' => 2); // no me gusta :)

Like most things Mustache, the answer here is to prepare your view. 像大多数胡子一样,这里的答案是准备您的视图。 What exactly would you expect it to render that array as? 您究竟希望它将该数组呈现为什么? JSON? JSON? If so, make it explicit: 如果是这样,请明确指出:

<?php
foreach ($data['groupData'] as $key => $group) {
    $data['groupData'][$key]['permissionsJSON'] = json_encode($group['permissions']);
}

$tpl = "{{# groupData }}{{ permissionsJSON }}{{/ groupData }}";

$m = new Mustache_Engine;
echo $m->render($tpl, $data);

If you want it available as pairs of key/value, do that explicitly: 如果希望将其作为键/值对使用,请明确地执行以下操作:

<?php
foreach ($data['groupData'] as $key => $group) {
    $permissions = array();
    foreach ($group['permissions'] as $key => $val) {
        $permissions[] = array('key' => $key, 'val' => $val);
    }
    $data['groupData'][$key]['permissions'] = $permissions;
}

$tpl = "{{# groupData }}{{# permissions }}{{ key }}: {{ val }}{{/ permissions }}{{/ groupData }}";

$m = new Mustache_Engine;
echo $m->render($tpl, $data);

Do you just want to iterate over a list of the keys? 您是否只想遍历键列表?

<?php
foreach ($data['groupData'] as $key => $group) {
    $data['groupData'][$key]['permissions'] = array_keys($group['permissions']);
}

$tpl = "{{# groupData }}{{# permissions }}{{ . }}{{/ permissions }}{{/ groupData }}";

$m = new Mustache_Engine;
echo $m->render($tpl, $data);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM