这是之前询问和回答的question的延续,它再次出现,需要不同的解决方案(不同的问题,但相同的错误消息)。
同样,指向shippingAddress操作的链接也不会呈现:
<f:link.action action="shippingAddress" controller="Order" arguments="{address: shippingAddress, changeAddress: 1}"><f:translate id="seethroughweb.shop.change-address">Change</f:translate></f:link.action>当调试并期望发现address变量为空时,我发现它不是空的,然而它被var_dump报告为错误的类型-它显示为:TYPO3\Flow\Persistence\Doctrine\Proxies\__CG__\SeeThroughWeb\Shop\Domain\Model\Address persistable proxy
但应该是:
SeeThroughWeb\Shop\Domain\Model\Address prototype persistable proxy所以现在的问题是-为什么报告了错误的类型?为什么变量是错误的类型?看一下代码,似乎所有东西都引用了@param \SeeThroughWeb\Shop\Domain\Model\Address $address
异常日志中产生的异常与以前一样:
Uncaught exception #1316441798: No unique path segment could be found after 100 iterations.
80 TYPO3\Fluid\ViewHelpers\Link\ActionViewHelper_Original::render("shippingAddress", array|2|, "Order", NULL, NULL, "", "", array|0|, FALSE, array|0|, FALSE)
79 call_user_func_array(array|2|, array|11|)发布于 2015-05-06 16:22:38
该错误与类的类型无关。TYPO3 Flow为每个类创建代理类。这意味着它会为您的每个类生成新代码和新类。
该错误与模板的检测算法中的循环有关。不知何故,你成功地欺骗了流程,让它进入了一个无尽的循环。
发布于 2015-05-19 15:48:13
正如Philipp已经指出的,这两个问题可能并不相关(在这种情况下,是Doctrine创建了代理,而不是流)。
如果搜索异常代码1316441798,可以看到在IdentityRoutePart中抛出了此异常。您可能有如下所示的路由:
-
uriPattern: 'some/path/{address}'
defaults:
'@package': 'SeeThroughWeb.Shop'
'@controller': 'Order'
'@action': 'shippingAddress'
routeParts:
'address':
objectType: 'SeeThroughWeb\Shop\Domain\Model\Address'使用objectType选项,您可以告诉Flow使用数据库表将"{address}“映射到SeeThroughWeb\Shop\Domain\Model\Address的一个实例。这样做是为了即使实体改变也保持URL有效。
如果两个实体解析到相同的URL段,Flow将附加一个计数器(例如"address-1“、"address-2”等)。如果在100次迭代后没有唯一的段可以解决,就会抛出异常。
有关“对象路由部件”的更多详细信息,请参阅Flow documentation。
https://stackoverflow.com/questions/30061506
复制相似问题