在树枝视图中访问 Symfony 断言

Posted

技术标签:

【中文标题】在树枝视图中访问 Symfony 断言【英文标题】:Access Symfony Assert in twig view 【发布时间】:2018-03-27 01:44:57 【问题描述】:

尝试获取视图中实体中定义的断言值。

使用: Symfony 2.8 奏鸣曲管理员:3.1

我在模型中定义了这样的断言:

 /**
 * @var string
 * @Assert\Length(
 *      min = 8,
 *      max = 60,
 *      minMessage = "Longer than  limit ",
 *      maxMessage = "Shorter than  limit "
 * )
 * @ORM\Column(name="title", type="string", length=60)
 */
private $title;

管理表单使用自定义表单类型来加载自定义视图:

    <?php    
namespace CustomBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class TextCountType extends AbstractType


    public function getParent()
    
        return TextType::class;
    



还有观点:

   % block text_count_widget %
    % spaceless %
         block('form_widget_simple') 
        <script>
         // some custom live validation
         // HERE i need access to the Asserts
     </script>

    % endspaceless %
% endblock %

我的问题是: 有没有办法访问树枝代码中的断言? 我不想在每个实体的管理类中重新定义它。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

如果你不附加form builder,很难说它到底是什么样子,但获取这些变量(如果它们存在)的最佳方法是转储表单对象并观察所有变量。

 dump(form) 

无论如何你不应该遵循这种方法。最好的选择是编写一个类 formBuilder 并在 attrs 添加验证约束。取决于类型,它们可能是您可以从there 获得的不同类型的完整列表,并且在类型文档中应该有可用于所选类型的完整属性列表。

【讨论】:

以上是关于在树枝视图中访问 Symfony 断言的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 树枝 - 第三方

Symfony - 在 myClass 中渲染树枝文件

使用 localhost 从主机访问 Vagrant 机器上的 symfony Web 服务器

使用 Symfony 2 本地化树枝中的日期

使用无Symfony的树枝[关闭]

如何从 symfony 中删除树枝? [关闭]