如何解决Symfony4:渲染不能传递参数
从Symfony 2.X更新到Symfony 4.4并验证运行后,我发现Twig无法识别modal。
由于不识别modal,即使if语句中没有显示在modal中的代码显示在modal中,也会显示出来。
当我尝试“if modal is empty”时,显示了if语句中的代码,所以好像没有通过modal。
传递模态的代码随着 Symfony 更新而改变。这可能会产生影响。
你有什么想法吗?
旧代码
<div id="imageDialog" title="Image management">
{{ render(controller("AppBundle:Shop/Image:manager",{"modal": true})) }}
</div>
Changed_code
<div id="imageDialog" title="Image management">
{{ render(controller("AppBundle\\Controller\\Shop\\ImageController::managerAction",{"modal": true})) }}
</div>
有问题的代码
<div class="tabpanel selected" id="imageFolder" >
<div class="tabcontent">
<div class="operations">
{% if not modal %}
<div class="pull-right">
<form method="post" action="{{ path('app_shop_image_delete') }}">
<input type="hidden" name="methods" value="delete">
<input type="hidden" name="_csrf_token" value="{{ csrf_token("authenticate") }}">
<input type="hidden" name="ids" value="[]">
<button type="submit" class="delete btn btn-danger"><i class="icon-trash"></i> Delete</button>
</form>
</div>
{% endif %}
</div>
</div>
</div>
图像控制器
*
* @Method("GET")
* @Route("/manager")
*
* @Template("@AppBundle/Shop/Image/manager.html.twig")
*/
public function managerAction(Request $request)
{
$routeParams = $request->get('_route_params');
$uploadUrl = $this->generateUrl("app_shop_image_save");
return array(
'modal' => isset($routeParams["modal"]) ? $routeParams["modal"] : false,'form' => $this->createUploadForm($uploadUrl)->createView(),);
}
解决方法
使用以下方法效果很好。
我无法获取 $routeParams["modal"]
,但请告诉我是否有获取它的方法。
public function managerAction(Request $request)
{
$routeParams = $request->query->get('modal');
$uploadUrl = $this->generateUrl("app_hq_image_save");
return array(
'modal' => isset($routeParams) ? $routeParams : false,'form' => $this->createUploadForm($uploadUrl)->createView(),);
}
<div id="imageDialog" title="Image management">
{{ render(controller("AppBundle\\Controller\\Shop\\ImageController::managerAction",{},{"modal": true})) }}
</div>
,
public function managerAction(Request $request)
{
$isModal = $request->query->get('modal') != null ? $request->query->get('modal') : false;
$uploadUrl = $this->generateUrl("app_hq_image_save");
return array(
'modal' => $isModal,);
}
但我想知道您是否不应该将 modal 作为具有默认值 false
的真实路由参数。
https://symfony.com/doc/4.4/routing.html#optional-parameters
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。