Comments (10)
Hi :) I never get this this kind of error by embedding filters, but mainly because I never use any data_class in form types dedicated to filter I guess ^^. I will try to reproduce it if I find a bit of free time tomorrow.
from lexikformfilterbundle.
Ok, thanks. If you can't reproduce it you can ask me for an example.
from lexikformfilterbundle.
Can you show me an example where setXxxx
is called ? I my case the addXxxx()
method is called, so maybe I have made something a bit diferrent than you.
from lexikformfilterbundle.
Was on holiday, sorry. I'll try to provide you with a small example next week, ping me if I don't.
from lexikformfilterbundle.
I create a project with the issue here. You need a pg database for it to work. Tell me if you face any issues with it. The homepage should display a filter form with one field, and submitting it should give you the error message.
from lexikformfilterbundle.
I just created a filter_collection branch in which I added a new CollectionAdapterFilterType
. This type is used to "simulate" a collection with always one element to keep value to filter.
So the code would looks like:
In FilmType
the identifiers field is now a filter_collection_adapter
type. The addShared method previously defined in LmcCodeFilterType
is now passed as an option of filter_collection_adapter
.
class FilmType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('identifiers', 'filter_collection_adapter', array(
'type' => new LmcCodeFilterType(),
'default_data' => new ArrayCollection(), // just to initialize the collection with a valid value
'add_shared' => function (FilterBuilderExecuterInterface $qbe) {
$closure = function(QueryBuilder $filterBuilder, $alias, $joinAlias, Expr $expr) {
$filterBuilder->innerJoin($alias . '.identifiers', 'i')
->innerJoin('i.type', 't')
->andWhere("t.name = 'LMC'");
};
$qbe->addOnce($qbe->getAlias().'.identifiers', 'i', $closure);
},
)) ;
}
public function getName()
{
return 'uc_legalbundle_filter_filmtype';
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Uc\LegalBundle\Entity\Film',
'csrf_protection' => false,
'validation_groups' => array('filtering')
));
}
}
And in the LmcCodeFilterType
you do'nt need anymore to implements FilterTypeSharedableInterface
.
class LmcCodeFilterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('identifier', 'filter_text', array(
'condition_pattern' => FilterOperands::STRING_STARTS,
'label' => false,
'required' => false))
;
}
public function getName()
{
return 'uc_legalbundle_filter_lmc_code_type';
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Uc\LegalBundle\Entity\FilmIdentifier',
'csrf_protection' => false,
'validation_groups' => array('filtering')
));
}
}
What do you think about this implementation of managing collection ? does it work fine in your case ?
from lexikformfilterbundle.
I'll test that and will have a more thorough look later (probably this evening), but this looks good, thanks!
from lexikformfilterbundle.
I tested it, it works fine : there is no error and the produced SQL is fine (at least for the count query)
SELECT
COUNT(*) AS dctrn_count
FROM
(
SELECT
DISTINCT id0
FROM
(
SELECT
f0_.id AS id0
FROM
film f0_
INNER JOIN filmidentifier f1_ ON f0_.id = f1_.film_id
INNER JOIN filmidentifiertype f2_ ON f1_.type_id = f2_.id
WHERE
f2_.name = 'LMC'
AND LOWER(f1_.identifier) LIKE '12%'
) dctrn_result
) dctrn_table
I think this implementation might be better, because one probably wants to get different closures when filtering from different relations : they'll probably use a different join.
from lexikformfilterbundle.
I don't know if you still use the filter_collection
branch but I will remove it, this feature is in the master branch since the version 2.1.
from lexikformfilterbundle.
Ok, go ahead, I'm apparently not using it.
from lexikformfilterbundle.
Related Issues (20)
- Mongo as separate packages? HOT 2
- v5.0.9 Broken with symfony 3.4 HOT 2
- Service "lexik_form_filter.query_builder_updater" not found HOT 4
- doctrine/orm v2.6.4 has issues with using ChoiceFilterType with objects
- NumberRangeFilterType can not set attribute " type:'number' '' , and 'label' is not work as well HOT 3
- CollectionAdapterFilterType display an unwanted "level" with a label : "0" HOT 2
- Store Entity in session HOT 1
- Not a issue, change repo description HOT 1
- How to have more user/search engines friendly urls
- Works in symfony 5.1 ? HOT 1
- How to add a field to set maxresults HOT 1
- Options 'data' does not work for EntityFilterType
- Hi HOT 3
- Undefined class constant 'INTEGER' when filtering EntityFilterType HOT 2
- doctrine/orm to specific HOT 1
- Using ChoiceFilterType generate: Undefined constant Doctrine\DBAL\Types\Type::STRING HOT 1
- Ltrim issue in LexikFormFilterBundle/Event/Subscriber/DoctrineORMSubscriber.php
- Filter by entity with string id HOT 3
- Feature Request: Allow using array based $parameters with IN() expressions HOT 2
- Bundle abandonned...and moved on new organization!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lexikformfilterbundle.