从命令总线返回值


returning value from command bus

我在命令总线上读过很多在几个项目中使用的内容,非常棒。但我一直在读,命令不应该向控制器返回任何内容;然而,在某些时候,我觉得我必须绝对返回一个值,例如:

$product = $this->dispatch(AddProductCommand::class);
return redirect()->route('route', $attributes = ['product_slug' => $product->slug]);

我需要获取新创建的产品的段塞,因为对于重定向,路由需要段塞。这是一种糟糕的做法吗?如果是,还有什么更干净的方法呢?

由于您使用的是设计同步的web框架,因此不可能以完全异步的风格实现它。

如果您使用允许异步请求的框架,或者(甚至更好)将UI问题(如重定向)与后端分离,则可以通过触发重定向的回调订阅ProductAdded事件。