流体模板:传递javascript变量作为参数值?
对于流体列表模板中的f:link show操作,我想向参数传递一个javascript变量,基本上是将特定对象传递给showAction的uid,但它没有按照我想要的方式工作。对于这个特殊的问题有解决方法吗 裸模板如下所示:流体模板:传递javascript变量作为参数值?,javascript,typo3,fluid,Javascript,Typo3,Fluid,对于流体列表模板中的f:link show操作,我想向参数传递一个javascript变量,基本上是将特定对象传递给showAction的uid,但它没有按照我想要的方式工作。对于这个特殊的问题有解决方法吗 裸模板如下所示: <f:for each="{termins}" as="termin"> <tr> <td><f:link.action action="show" arguments="{termin : termin}
<f:for each="{termins}" as="termin">
<tr>
<td><f:link.action action="show" arguments="{termin : termin}"> {termin.mitarbeiter}</f:link.action></td>
<td><f:link.action action="show" arguments="{termin : termin}"> {termin.kunde}</f:link.action></td>
</tr>
</f:for>
</table>
JS是在流体模板之后工作的东西。正确的顺序是,将流体模板解析为HTML,然后浏览器将HTML/JS/CSS呈现给您。因此,您不能期望在流体模板中使用JS值。您不能-您也不能读取:永远不应该从JS生成指向控制器操作的链接,因为它需要生成安全校验和。修改您创建的URL将生成安全错误。校验和的存在是为了防止DDOS,因此它有很好的理由 有两种选择: 您可以提前生成所有链接 您可以创建一个使用XHR调用的链接生成服务,以从JS生成必要的链接。
只有第一个适合您的用例。尤其是,由于您希望传递始终引用数据库中对象的UID值,这意味着您可以轻松生成指向所有可能详细视图的链接列表,然后从JS中读取/传递该链接列表以选择正确的链接。有两种可能: 1使用表单而不是链接,并通过POST传输。使用JavaScript动态设置表单字段。这样,您的变量就不会包含在cHash校验和中
2创建一个接受变量作为参数的AJAX操作。让它生成一个有效的链接。使用POST调用变量数据。用JavaScript显示页面上的链接。因为我的扩展将不能为公众访问,是否有可能停用安全校验和?甚至在考虑到这一点之前,你应该非常仔细地阅读这两个链接。你会打开一个真正安全的问题,它已经被固定了很多年,并且很可能被用作攻击向量。和既然您已经阅读了这些链接上的警告,并且知道了为什么不应该这样做,那么您可以在文档中查找cHashExcludedParameters,如果必须的话,还可以使用TYPO3安装工具。