如果我有一个名称空间
的控制器 Src/ApiMap/ApiMapBundle/controller/Getapicontroller
class GetApiController extends Controller {
fitch data on the bases of entities define in entites classes and then save that data in in table
and save it in database
}
现在我将此定义为
中的服务 App/config/service.yml
services:
app.get_controller:
class: ApiMaps\ApiMapBundle\Controller\GetApiController
3我在位置上定义了一个服务类
app/container/getApi.php
现在我想在这个类中访问这个控制器服务我在这个服务中意味着我如何访问,因为如果我使用
this->get function
在简单的课程中我需要什么。
关键是我无法将我的逻辑移动到服务bcz它正在使用控制器中的实体和其他东西我想将此逻辑移动到某些第三类服务... 它的位置现在是
src/container
getapi.php
现在它的定义......
<?php
namespace dino_container\GetApi;
class GetApi {
public function __construct() {
i want to incorport this controller service in this class...
}
答案 0 :(得分:1)
好像我们之前有过这样的对话。
尝试从命令调用控制器方法是没有意义的。控制器方法的工作是将请求转换为响应。命令没有请求对象,也不知道如何处理Response对象。
相反,您希望通过将功能提取到其自身的服务中来共享控制器和命令之间的功能。然后,您可以从命令和控制器访问该服务。
# services.yml
my_service:
class: MyService
arguments: ['@doctrine.orm.default_entity_manager']
# Controller
public function myAction(Request $request)
{
$myService = $this->container->get('my_service');
$myService->doSomethingShared();
# Command
public function execute()
{
$myService = $this->container->get('my_service');
$myService->doSomethingShared();