我正在努力使用奏鸣曲管理员和依赖注入。我定义了一个Admin类,并使用自己的控制器为它扩展CRUDController。
在此Controller中,我必须执行HTTP请求,因此我想注入Zend HTTP Client实例。
news.controller:
class: MyBundle\Controller\NewsController
arguments: ['@zend.httpclient']
news.admin
class: MyBundle\Admin\NewsAdmin
...
arguments:
- null
- MyBundle\Entity\News
- MyBundle:News
来自新闻控制器的论据从未被注入..我认为这是因为管理员不关心我的自定义控制器作为服务。
所以我认为我必须将直接类名作为管理服务的第3个参数替换为来自控制器容器服务的id我定义为" news.controller"。现在看起来像
news.admin
class: MyBundle\Admin\NewsAdmin
...
arguments:
- null
- MyBundle\Entity\News
- news.controller
现在我
Call to a member function has() on null
我认为,必定会有一些缺失的配置......什么是错的?
有人知道如何将东西注入自定义CRUDController并将其与sonata admin一起使用吗?或者我怎么能以另一种方式做到这一点?我需要CRUDController,因为我为自定义模板中的几个AJAX调用定义了一个API ...所以还需要一个在CRUDController中定义的entitymanager ...
我还读到将控制器定义为服务并不是最好的方法......但是如果我确实需要它,那么如何使用zend客户端等外部客户端进行http调用的正确方法呢?
答案 0 :(得分:1)
has()错误表示当您的控制器现在已正确连接为服务时,尚未注入容器。此注入通常由控制器解析器在创建新控制器类后完成。但是,从容器中拉出控制器时不执行此步骤。
解决方案是通过服务定义注入容器:
gulp.task('task one', () => {
return gulp.src([Dir + "**/*.css"])
.pipe(concat(outFilename + ".css"))
.pipe(gulp.dest(destDir));
});
很多括号但很好。