-
-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Configurable Rest Collection Filters #3
Comments
There is, but not the way you're doing it! First off, all filters are configured via the // This line:
$this->getServiceLocator()->get(PasswordCollectionFilter::class)
// becomes:
$this->getServiceLocator()->get('FilterManager')->get(PasswordCollectionFilter::class) However, I don't recommend that! We have deprecated the usage of the Instead, update your resource class to instead accept the filter(s) you want via its constructor, and then update the factory for your resource class to inject it. This allows you then to use any configuration scheme you want. As an example, based on your examples above: <?php
// Your resource class would accept a filter to the constructor:
use Zend\Filter\FilterInterface;
class SomeResource extends AbstractResource
{
private $filter;
public function __construct(FilterInterface $filter)
{
$this->filter = $filter;
}
/* ... */
public function fetchAll($criteria = [])
{
/** @var Paginator $paginator */
$paginator = parent::fetchAll($criteria);
$paginator->setFilter($this->filter);
return $paginator;
}
/* ... */
}
// Your factory would inject the filter:
use Zend\Filter\FilterChain;
class SomeResourceFactory
{
public function __invoke(ContainerInterface $container)
{
$config = $container->get('config');
$filters = $config['zf-rest'][Some\\Controller::class]['collection_filters'];
$chain = new FilterChain();
$chain->setPluginManager($container->get('FilterManager'));
array_walk($filters, function ($filter) use ($chain) {
$chain->attachByName($filter);
});
return new SomeResource($chain);
}
} Originally posted by @weierophinney at zfcampus/zf-apigility#192 (comment) |
Is that means that currently Apigility haven't native support for filters injection into the resource-collection based on zf-rest configs? I dont want to overwrite the method "fetchAll" every time , Originally posted by @karborator at zfcampus/zf-apigility#192 (comment) |
Yes; this has never been supported, other than via the zf-doctrine-querybuilder-filter, which only works for Doctrine-connected services, and is highly specific to how the ORM supports querying data. Additionally, your code My point is: you are talking about application-specific features. Apigility can accommodate these features, but you need to write such functionality yourself. One way you can accomplish it is to write your own base Originally posted by @weierophinney at zfcampus/zf-apigility#192 (comment) |
https://github.com/zendframework/zend-paginator/blob/master/src/Paginator.php (486) getItemsByPage ( 608 ) is using filters to filter the items Originally posted by @karborator at zfcampus/zf-apigility#192 (comment) |
Hi ,
I wonder, in apigility is there a way to configure filters that to be injected
into your rest collection based on configuration ?
At the moment I'm doing it programmatically like
This filter injection can be done by configuration , smth like :
Originally posted by @karborator at zfcampus/zf-apigility#192
The text was updated successfully, but these errors were encountered: