lo tanto, aquí es un controlador que acabo de construcción:Tratar de definir mis reguladores como el servicio en Symfony2 - los argumentos que nunca se pasan al constructor
namespace MDP\API\ImageBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
class RetrieverController {
private $jsonResponse;
private $request;
public function __construct(JsonResponse $jsonResponse, Request $request) {
$this->jsonResponse = $jsonResponse;
$this->request = $request;
}
/**
* @Route("/image/{amount}")
* @Template("MDPAPIImageBundle:Retriever:index.json.twig")
*/
public function retrieve($amount)
{
}
}
Quiero hacer este trabajo como un servicio de controlador , para usar DependencyInjection. Por lo tanto, aquí está mi services.xml
archivo:
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<service id="mdpapi_image.json_response" class="Symfony\Component\HttpFoundation\JsonResponse" />
<service id="mdpapi_image.request" class="Symfony\Component\HttpFoundation\Request" />
<service id="mdpapi_image.controller.retriever" class="MDP\API\ImageBundle\Controller\RetrieverController">
<argument type="service" id="mdpapi_image.json_response" />
<argument type="service" id="mdpapi_image.request" />
</service>
</services>
</container>
Sin embargo, cuando intento ejecutar mi controlador, siempre me esta excepción:
capturable error fatal: Argumento 1 pasó a MDP \ API \ ImageBundle \ Controller \ RetrieverController :: __ construct() debe ser una instancia de Symfony \ Component \ HttpFoundation \ JsonResponse, none given, llamado en /home/steve/projects/APIs/app/cache/dev/jms_diextra/controller_injectors/MDPAPIImageBundleControllerRetrieverController.php on line 13 y definido en /home/steve/projects/ImageAPAP/ImageBundle/Controller/RetrieverController.php línea 13
Cuando estoy en el modo de desarrollador, veo que Symfony genera este archivo en los archivos almacenados en caché ...
class RetrieverController__JMSInjector
{
public static function inject($container) {
$instance = new \MDP\API\ImageBundle\Controller\RetrieverController();
return $instance;
}
}
¿Cómo puedo hacerlo de modo que los argumentos se añaden correctamente al controlador, como se especifica en mi archivo services.xml
?
Sí, tengo este código de extensión también. Todavía no funciona ... – iRESTful