Пример #1
0
 /**
  * @param \Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery $queryBuilder
  * @param $alias
  * @param $field
  * @param $data
  * @return bool
  */
 public function getByLocale($queryBuilder, $alias, $field, $data)
 {
     $active = true;
     if (!($locale = $data['value'])) {
         $locale = $this->getDefaultLocale();
         $active = false;
     }
     $queryBuilder->andWhere(sprintf('%s.locale = :locale', $alias));
     $queryBuilder->orderBy(sprintf('%s.translationKey', $alias), 'asc');
     $queryBuilder->setParameter(':locale', $locale);
     return $active;
 }
 public function testFilterClosure()
 {
     $builder = new ProxyQuery(new QueryBuilder());
     $filter = new CallbackFilter();
     $filter->initialize('field_name', array('callback' => function ($builder, $alias, $field, $value) {
         $builder->andWhere(sprintf('CUSTOM QUERY %s.%s', $alias, $field));
         $builder->setParameter('value', $value);
         return true;
     }));
     $filter->filter($builder, 'alias', 'field', 'myValue');
     $this->assertEquals(array('CUSTOM QUERY alias.field'), $builder->query);
     $this->assertEquals(array('value' => 'myValue'), $builder->parameters);
     $this->assertEquals(true, $filter->isActive());
 }
 public function testApplyMethod()
 {
     $builder = new ProxyQuery(new QueryBuilder());
     $filter = new CallbackFilter();
     $filter->initialize('field_name_test', array('callback' => function ($builder, $alias, $field, $value) {
         $builder->andWhere(sprintf('CUSTOM QUERY %s.%s', $alias, $field));
         $builder->setParameter('value', $value['value']);
         return true;
     }, 'field_name' => 'field_name_test'));
     $filter->apply($builder, array('value' => 'myValue'));
     $this->assertEquals(array('CUSTOM QUERY o.field_name_test'), $builder->query);
     $this->assertEquals(array('value' => 'myValue'), $builder->parameters);
     $this->assertEquals(true, $filter->isActive());
 }
Пример #4
0
 /**
  * @param $queryBuilder
  * @param $alias
  * @param $field
  * @param $value
  * @return bool
  */
 public function getByLocale(\Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery $queryBuilder, $alias, $field, $value)
 {
     if (!($locale = $value['value'])) {
         $locale = $this->getDefaultLocale();
     }
     $queryBuilder->where(sprintf('%s.locale = :locale', $alias));
     $queryBuilder->andWhere($queryBuilder->expr()->isNotNull(sprintf('%s.parent', $alias)));
     $queryBuilder->setParameter(':locale', $locale);
     return true;
 }