-3

是否有一些解决方案如何使用 Symfony Event Dispatcher 过滤值/值,例如 wordpress 和 add_filter 返回过滤值?也许将属性存储在事件中并与订阅者一起编辑它们?

4

1 回答 1

0

你提出的解决方案是我能想到的最好的。没有像 WordPress 过滤器或 Joomla 插件那样用于对值进行后处理的“本机”机制。

如果您调度一个自定义事件并填充您想要“过滤”的对象,您可以轻松地添加一个订阅者来完成您的意思。由于对象总是通过引用传递,因此对对象的任何更改都将在控制器中传播。

例如

控制器:

$product = $this->productRepository->get($someId);
$this->eventDispacther->dispatch(
    BeforeDisplayEvent::class,
    new BeforeDisplayEvent($product)
)

return $this->render('product.html.twig', ['product' => $product]);

订户:

public function alterProduct(BeforeDisplayEvent $event)
{
    $product->setSomething($this->yourFilter($product));
}
于 2020-11-09T10:39:53.603 回答