After updating from Symfony 3.4 to 4.0 and verifying the operation, the following error occurred.
Do you have any idea?
I added the tride code to routes.yaml by referring to the post below, but it didn’t change.
Override a controller Symfony 3.4/4.0
Error
JavaScript
x
An exception has been thrown during the rendering of a template
("Controller not found: service "@AhiSpAdminBundle/Hq/Image/manager" does not exist.").
Resources/views/Hq/Staff/input.html.twig
JavaScript
{# Image management dialog #}
<div id="imageDialog" title="Image management">
{{ render(controller("@AhiSpAdminBundle/Hq/Image/manager", {"modal": true})) }}
</div>
routes.yaml
JavaScript
ahi_sp_admin:
resource: "../src/Ahi/Sp/AdminBundle/Controller/"
type: annotation
prefix: /admin/
schemes: "%secure_scheme%"
#Tried code
ahi_sp_admin_hq_image_manager:
path: /admin/hq/image/manager/
defaults: { _controller: "@AhiSpAdminBundle/Hq/Image/manager" }
ImageController.php
JavaScript
/**
* Image management panel
*
* @Method("GET")
* @Route("/manager")
*
* @Template("@AhiSpAdminBundle/Hq/Image/manager.html.twig")
*/
public function managerAction(Request $request)
{
$routeParams = $request->get('_route_params');
$uploadUrl = $this->generateUrl("ahi_sp_admin_hq_image_save");
return array(
'modal' => isset($routeParams["modal"]) ? $routeParams["modal"] : false,
'form' => $this->createUploadForm($uploadUrl)->createView(),
);
}
Advertisement
Answer
That’s not how you render a controller.
JavaScript
{{ render(controller(
'App\Controller\ArticleController::recentArticles',
{ 'max': 3 }
)) }}
It’s clear from the doc
To include the controller, you’ll need to refer to it using the standard string syntax for controllers (i.e. controllerNamespace::action):
https://symfony.com/doc/4.0/templating/embedding_controllers.html