如何使用Twig模板自动检查复选框?

Mar*_*tyn 5 php twig

我想自动检查HTML中的复选框.我设法让这个工作,但它在模板中有点混乱:

<ul>
    {% for tag in tags %}
        {% set selected = false %}
        {% for article_tag in article.tags %}
            {% if article_tag.id == tag.id %}
                {% set selected = true %}
            {% endif %}
        {% endfor %}
        <li><input type="checkbox" name="tags[]" value="{{ tag.id }}" {% if selected %}checked{% endif %}> {{ tag.name }}</li>
    {% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)

所以我加载的数据是这样的(采用JSON格式):

[
    'tags' => [
        {'id'=> 1, 'name'=>'Travel'},
        {'id'=> 2, 'name'=>'Cooking'},
    ],
    'article' => {
        'tags' => [
            {'id'=> 1, 'name'=>'Travel'},
        ],
    }
]
Run Code Online (Sandbox Code Playgroud)

另外,我没有使用Symfony(我正在使用Slim的Twig库)所以不确定Symfony是否在其框架中使用Twig做了一些东西.如果是这样,它对我不起作用:(

Mat*_*teo 2

问题是文章是一个数组,因此您需要对包含第一个元素的每个标签数组进行循环,或者您只需访问第一个元素,如下所示:

    {% for article_tag in article[0].tags %}
Run Code Online (Sandbox Code Playgroud)

代替:

    {% for article_tag in article.tags %}
Run Code Online (Sandbox Code Playgroud)

查看此工作 twigfiddle 的结果

希望这有帮助