我有一个应用程序,我希望事件记录到第三方(通过自定义模块利用Gabba混入我的模型)。事件在模型中生成,但生成事件的服务器端代码需要访问当前请求的cookie。
这是模型需要控制器包含的数据的问题的专门化。坚持MVC,模型不应该访问控制器。我见过的答案是将所需的值作为参数传递给模型。 虽然我在大多数情况下同意这种方法,但我认为这不是最佳解决方案,因为一般情况下它是未知的,如果模型要生成事件,则不是控制器的关注。
想象一下,'用户'模型有一个名为'create'的静态方法。 UsersController使用用户哈希调用create方法。 create方法想要向Gabba发布“用户创建”事件,但是需要解析当前请求的Google Analytics分析Cookie。 向用户#create 发送Cookie似乎不对。