是否有一些解决方案如何使用 Symfony Event Dispatcher 过滤值/值,例如 wordpress 和 add_filter 返回过滤值?也许将属性存储在事件中并与订阅者一起编辑它们?
问问题
104 次
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 回答