簡體   English   中英

覆蓋Symfony2驗證的默認行為(使用QueryBuilder)

[英]Overriding default behaviour of Symfony2 validation (with QueryBuilder)

我必須在數據庫中插入實體數據時遇到問題。

實體與Symfony2的實體字段一起顯示,並且我正在使用查詢生成器來僅顯示“活動”數據。 (見下文)

可以通過Ajax將數據添加到Symfony生成的“選擇”(無效的新“教授”(is_active = 0))中。 但是,當我選擇通過Ajax添加的數據並且該數據未激活時,我將遇到此錯誤:“此值無效。” =>這是因為Symfony2由於使用de querybuilder“ where”語句而添加了自動驗證。

是否可以覆蓋默認的Symfony2行為,以便可以驗證通過Ajax元素添加的非活動元素(is_active = 0(布爾值))(與下面的查詢生成器“ where”語句不匹配的項目)?

$builder->add('professionA', 'genemu_jquerychosen_entity', array(
    'class' => 'SportUserBundle:Profession',
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('prof')
            ->where('prof.is_active = :active')
            ->setParameters(array('active' => '1'))
            ->orderBy('prof.name', 'ASC');
    },
));

謝謝!

最簡單的方法是首先在該字段中注冊所有可能的元素。 也就是說,從文檔中獲取所有專業數據,然后在文檔准備好並且活動狀態更改時使用ajax重新創建或限制字段內容。

'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('prof')->orderBy('prof.name', 'ASC');
}

我猜這不是一個很好的解決方案,但它確實有效。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM