过滤器如何将另一个过滤器的结果与逻辑与相结合?
How can a filter combine the result of another filter with Logical AND?
我有 2 个过滤器。一个过滤器获取另一个过滤器的结果:
<example:widget.myfilter objects="{blogs}" as="filteredblogs" property="features.uid">
<example:widget.anotherfilter objects="{filteredblogs}" as="filteredmoreblogs" property="test.name">
过滤器 1 有一个“喜欢”的查询。
过滤器 2 有一个“在”查询。
过滤器 1 控制器
public function indexAction(string $filterfeatures = ""): void
{
$feature = $this->featureRepository->getFeatureByName($filterfeatures);
$query = $this->objects->getQuery();
if(count($feature) > 0) {
$query->matching($query->in($this->property, $feature));
}
$modifiedObjects = $query->execute();
$this->view->assign('contentArguments', [
$this->as => $modifiedObjects
]);
过滤器 2 控制器:
public function indexAction(string $filtertest = ""): void
{
$query = $this->objects->getQuery();
$query->matching($query->like($this->property, $filtertest));
$modifiedObjects = $query->execute();
$this->view->assign('contentArguments', [
$this->as => $modifiedObjects
]);
我的问题是两者都进行了查询,但彼此忽略了。第二个过滤器覆盖第一个过滤器。
这两个过滤器之间需要逻辑与。
有什么想法吗?
尽管这可能不是您想要的答案,但是:不要使用小部件!
在 TYPO3 11 中,所有小部件都已从 TYPO3 中删除,请查看有关此重要更改的文档:https://docs.typo3.org/c/typo3/cms-core/master/en-us/Changelog/master/Breaking-92529-AllFluidWidgetFunctionalityRemoved.html
作为解决方案,我建议您将逻辑移回主控制器并在此处解决。我更喜欢使用简单的 PHP 对象来配置此类过滤器。你可以看看https://github.com/FriendsOfTYPO3/tt_address/blob/master/Classes/Controller/AddressController.php#L67-L78
我有 2 个过滤器。一个过滤器获取另一个过滤器的结果:
<example:widget.myfilter objects="{blogs}" as="filteredblogs" property="features.uid">
<example:widget.anotherfilter objects="{filteredblogs}" as="filteredmoreblogs" property="test.name">
过滤器 1 有一个“喜欢”的查询。 过滤器 2 有一个“在”查询。
过滤器 1 控制器
public function indexAction(string $filterfeatures = ""): void
{
$feature = $this->featureRepository->getFeatureByName($filterfeatures);
$query = $this->objects->getQuery();
if(count($feature) > 0) {
$query->matching($query->in($this->property, $feature));
}
$modifiedObjects = $query->execute();
$this->view->assign('contentArguments', [
$this->as => $modifiedObjects
]);
过滤器 2 控制器:
public function indexAction(string $filtertest = ""): void
{
$query = $this->objects->getQuery();
$query->matching($query->like($this->property, $filtertest));
$modifiedObjects = $query->execute();
$this->view->assign('contentArguments', [
$this->as => $modifiedObjects
]);
我的问题是两者都进行了查询,但彼此忽略了。第二个过滤器覆盖第一个过滤器。
这两个过滤器之间需要逻辑与。
有什么想法吗?
尽管这可能不是您想要的答案,但是:不要使用小部件!
在 TYPO3 11 中,所有小部件都已从 TYPO3 中删除,请查看有关此重要更改的文档:https://docs.typo3.org/c/typo3/cms-core/master/en-us/Changelog/master/Breaking-92529-AllFluidWidgetFunctionalityRemoved.html
作为解决方案,我建议您将逻辑移回主控制器并在此处解决。我更喜欢使用简单的 PHP 对象来配置此类过滤器。你可以看看https://github.com/FriendsOfTYPO3/tt_address/blob/master/Classes/Controller/AddressController.php#L67-L78