我必须处理“测量链”,每个测量链由1个测量仪器和几个罐组成。链,仪器和坦克在一个位置。执行他人的控制器动作
显然,在一个位置A中的链不能由位于位置B或C的元件的
所以我有下列对象:
- CHAIN
- chain_id
- location_id
- instrument_id
- date_creation
- date_destruction
- INSTRUMENT
- INSTRUMENT_ID
- LOCATION_ID
- TANK
- tank_id
- LOCATION_ID
- TANK_IN_CHAIN
- tank_in_chain_id
- tank_id
- chain_id
- date_connection
- date_disconnection
- LOCATION
- LOCATION_ID
我想要做的是:
- 当我在一个新的位置移动的工具(在InstrumentController moveAction()),链应该detroyed
- 当我移动在TankController中移动一个坦克(moveAction()),链应该被销毁
- “销毁”一个链意味着:chain.date_destruction设置为now()和tank_in_chain.date_disconnection设置为now() 。这在ChainController的destroAction做(因为有时我也需要破坏,即使没有仪器或移动坦克链)
我的问题是:
如何调用ChainController :: destroyAction( )从InstrumentController :: moveAction()或TankController :: moveAction()?
我读了关于forward()函数,但从我的理解,这不是我所需要的。 我看到的另一种可能性是将ChainController设置为服务,但我不确定这是解决此问题的正确方法,即它可以工作,但这不是“良好实践”。
您认为如何?
坦克的任何帮助! 干杯。
谢谢。生命周期回调似乎对我来说太简单了(我给出的例子是为了更好的理解而被简化的),但是阅读文档似乎有些“正常”事件可以正确地完成这项工作。我会调查一下。 – Blacksad
是的,我更喜欢在这种情况下使用事件监听器。而且你甚至可以将它与服务相结合,以便于测试:) – passkey1510
我设法创建Event和Listener来在一件乐器或坦克移动时摧毁一条链子。现在,我试图在链条被上述提到的事件破坏时断开坦克。换句话说,我想从EventListener触发一个事件,但函数get()在:$ this-> get('event_dispatcher') - > dispatch(CoreEvents :: onChainDestruction,$ event);在控制器外部不被识别。我在网络上发现了很多类似的问题,但我仍然不清楚该怎么做。任何想法? – Blacksad