0

这是先前提出和回答的问题的延续,该问题再次出现并且需要不同的解决方案(不同的问题但相同的错误消息)。

再次未呈现 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>

当调试并期望发现地址变量为 NULL 但我发现它不是,但是它被 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|)
4

2 回答 2

0

该错误与类的类型无关。TYPO3 Flow为每个类创建代理类。这意味着它会为您的每个类生成新代码和一个新类。

该错误与模板检测算法中的循环有关。你以某种方式设法欺骗 Flow 进入一个无限循环。

于 2015-05-06T08:22:38.040 回答
0

正如 Philipp 已经说过的,这两个问题可能不相关(在这种情况下,它是Doctrine,尽管它创建了代理,而不是 Flow)。

如果搜索异常代码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 次迭代后无法解析唯一段,则会引发异常。

有关“对象路由部分”的更多详细信息,请参阅流程文档

于 2015-05-19T07:48:12.703 回答