是否有一些解决方案可以使用Symfony Event Dispatcher(如wordpress(过滤一个或多个值,并使用add_filter返回过滤后的值?也许可以将属性存储在Event中并与订阅者一起编辑它们?
你提出的解决方案是我能想到的最好的。不存在";"本地";该机制旨在像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));
}