gpt4 book ai didi

php - Controller 属性不能包含非标量\/非空值

转载 作者:搜寻专家 更新时间:2023-10-31 21:24:10 24 4
gpt4 key购买 nike

我想像这样用 hinclude.js 提供我的 Controller 对象:

{{ render_hinclude(controller("AppBundle:Default:Test"), { 'object': my_object }) }}

不幸的是我得到了这个错误:

"An exception has been thrown during the rendering of a template (\"Controller attributes cannot contain non-scalar/non-null values (value for key \"my_object\" is not a scalar or null).\")

你能帮帮我吗?

提前致谢!

最佳答案

异常(exception)是正确的,当使用 render_hiinclude() 时,只允许为 Controller 属性传递标量/空值,因为需要从它们生成有效的片段 URI。


为什么?

假设您尝试传递具有私有(private)属性的实体,当为该参数生成 URI 时会发生以下情况:

var_dump(http_build_query(array('object' => $my_object)))

// output:
// string(0) ""

http://php.net/manual/en/function.http-build-query.php#refsect1-function.http-build-query-parameters

If query_data is an object, then only public properties will be incorporated into the result.


顺便说一句,您提供的声明无效,您应该将此属性传递给 controller(...) 函数,如下所示:

{{ render_hinclude(controller("AppBundle:Default:test", {'id': my_object.id })) }}

然后,您的 Controller 应具有标量值 id 并获取相应的对象。但是,使用参数解析器功能可以避免此步骤:

public function testAction(Object $object) {...}

下一步:

{{ render_hinclude(controller("AppBundle:Default:test", {'object': my_object.id })) }}

关于php - Controller 属性不能包含非标量\/非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39875227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com