symfony - Sonata Admin 列表自定义查询 ListMapper sonata_type_model 字段

标签 symfony sonata-admin

我尝试获取一些与我的所有步骤对象匹配的条目,但它们之间没有直接关系,因此我需要使用自定义查询。

我在我的管理类(class)中尝试过:

    protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('texteEtape', null, array('label' => $this->getTranslator()->trans('label.step.text')));

    $this->addCountryListMap($listMapper);

    $listMapper
        ->addIdentifier('id')
        ->add('temperature')
        ->add('rincage', null, array('label' => $this->getTranslator()->trans('label.rinsing')))
        ->add('concentration')
        ->add('temps', null, array('label' => $this->getTranslator()->trans('label.time')))
        ->add('produit', null, array('label' => $this->getTranslator()->trans('label.product')))
        ->add('enabled', null, array('editable' => true))
        ->add('_action', 'actions', array(
            'actions' => array(
                'edit' => array(),
                'delete' => array()
            )
        ))
        ->add('updatedAt')
        ->add('Protocols','sonata_type_model', array('required' => true,
            'class'=> 'HypredMainBundle:Protocole','property'=> 'name',
            'query_builder' => $this->getProtocoles($listMapper->get('id'))));

getProtocoles 函数:

    private function getProtocoles($id) {
    $querybuilder = $this->getManager()->getRepository('HypredMainBundle:Etape')->getStepProtocoles($id);

    var_dump($querybuilder->getQuery()->getResult());
    die();

    return $querybuilder;
}

我想知道如何传递当前实体 ID(标识符返回 FieldDescription 对象)。

也许我错过了一些东西,我希望我的帖子是全面的。

预先感谢您的宝贵时间。

最佳答案

我认为您尝试的方法不会起作用。

我会尝试为协议(protocol)属性定义自定义模板

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('id')
        ->add('Protocols','string', array('template' => 'HypredMainBundle:Protocole:list_protocole.html.twig'))
    ;
}

里面有对象及其 ID

{{ object.id | protocols() }}

我会写一个 Twig 扩展

class AppExtension extends \Twig_Extension
{
    protected $container;

    public function __constructor($container)
    {
        // remember to pass @service_container defining a twig extension service
        $this->container = $container;
    }

    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('protocols', array($this, 'protocolsFilter')),
        );
    }

    public function ProtocolsFilter($id)
    {
        // content of getProtocoles() function from question

        $querybuilder = $this->container->get('doctrine')->getManager()->getRepository('HypredMainBundle:Etape')->getStepProtocoles($id);
        var_dump($querybuilder->getQuery()->getResult());
        die();

        return $querybuilder;
    }

    public function getName()
    {
        return 'app_extension';
    }
}

关于symfony - Sonata Admin 列表自定义查询 ListMapper sonata_type_model 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530757/

相关文章:

php - Doctrine 获取所有具有关联的字段名称

Symfony2 : SonataAdminBundle - How can i get the object representing the current user inside an admin class?

symfony - sonata_type_collection 字段仅适用于现有的父对象

php - 在 Sonata Admin 的实体中包含媒体类型

symfony - Sonata Admin - 如何更改默认/管理员前缀

php - 如何使用多个数据库模式管理 Doctrine 查询

php - 从 php、twig 中的 for 循环迭代中提取整数

php - 在 Apache 服务器上配置 Symfony 5 应用程序

php - iPhone 6 无法正确加载 css

symfony - 未生成子管理路由 - Sonata Admin Bundle