小编fer*_*fly的帖子

twig将字符串转换为它所代表的对象

成像我有一个对象,可以在这样的树枝模板中调用:

{{ object1.object2.object3.property3A }}
Run Code Online (Sandbox Code Playgroud)

好吧,它会告诉我如果我们使用php写的内容是:

$object1->getObject2()->getObject3()->getProperty3A();
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我有一个字符串,

$refString="object1.object2.object3.property3A";
Run Code Online (Sandbox Code Playgroud)

然后它被传递到树枝,我怎么能得到property3A?根据我的经验,我们可以在php中这样做:

$refString="object1->getObject2()->getObject3()->getProperty3A()";
echo $$refString;
Run Code Online (Sandbox Code Playgroud)

但我不知道如何让它在树枝上工作.

symfony twig

5
推荐指数
1
解决办法
3176
查看次数

Symfony2验证在twig模板中选中的表单复选框

我有一个问题,验证树枝模板中的复选框.在树枝上,我想这样做:

{% for activity in form.activity %}
    {% if (activity.isChecked) %}
    <div>
        {{ form_widget(activity) }}
        {{ form_label(activity) }}
    </div>
    {% endif  %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

活动是表单构建器中的实体字段:

->add('activity', 'entity', array(
            'class'         => 'AcmeProspectionBundle:Activity',        
            'expanded'      => true,
            'multiple'      => true,
            'property'      => 'name',
/*
            'query_builder' => function(EntityRepository $er) use($options) {
                return $er->createQueryBuilder('ac')
                ->leftJoin('ac.company','c')
                ->where('c = :id')
                ->orderBy('ac.name', 'ASC')
                ->setParameter('id', $options['company_id']);
            }
*/
))
Run Code Online (Sandbox Code Playgroud)

事实上,如果我不评论query_builder部分,它将只生成已检查的部分,但如果我这样做,Symfony将检查原始数组和提交数组的完整性.我无法添加任何新活动.事实上我通过这样的javascript生成选择:

 <div class="activity_checkbox" data-prototype='<div>
 <input type="checkbox" checked="checked" value="100" placeholder="" name="acme_prospection_company[activity][]">
 <label></label></div>'>
Run Code Online (Sandbox Code Playgroud)

因为我有超过3000的选择,我不能使用原始复选框或选择让用户这样做.所以现在所有的工作都完成了,只需要渲染已检查的活动.我不知道怎么做.

symfony

4
推荐指数
1
解决办法
9791
查看次数

必须管理传递到选择字段的实体

我从互联网上搜索答案,但我找不到理由:我有一个表公司,一个表公司类型,所以:

/**
 * Acme\UserBundle\Entity\Company
 *
 * @ORM\Table(name="company")
 * @ORM\Entity
 */
class Company
{
/**
 * @var integer $id
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;
/**
 * @var CompanyType
 *
 * @ORM\ManyToOne(targetEntity="CompanyType")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="company_type_id", referencedColumnName="id")
 * })
 */
private $companyType;
...
Run Code Online (Sandbox Code Playgroud)

}

/**
* Acme\UserBundle\Entity\CompanyType
*
* @ORM\Table(name="company_type")
* @ORM\Entity
*/
class CompanyType
{
 /**
 * @var integer $id
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;
/**
 * …
Run Code Online (Sandbox Code Playgroud)

symfony

3
推荐指数
1
解决办法
1万
查看次数

有没有办法包含模板并隐藏他的一些块

也许这个问题可以转化为两个问题:

如果我在 .html.twig 中包含了一个模板,我可以控制显示或隐藏包含的树枝中的某些块吗?

我可以从多个树枝布局中延伸一根树枝吗?

symfony

0
推荐指数
1
解决办法
9959
查看次数

标签 统计

symfony ×4

twig ×1