gpt4 book ai didi

javascript - 将 javascript 变量值发送到 Controller 操作

转载 作者:行者123 更新时间:2023-12-02 14:03:51 24 4
gpt4 key购买 nike

我只是尝试将值从 javascript 传递到 Controller 中的操作,然后返回该值:

这是我的 Controller :

<?php
namespace Black\Test\Controller;

/**
* CustomController
*/
class CustomController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{

/**
* action test
*
* @return void
*/
public function testAction()
{
$myVar = $this->request->getArgument('myVar');

echo "myVar = ". $myVar;
}
}

我该如何设置按钮才能使其正常工作?假设我尝试传递 sessionStorage 项目 test

这是我尝试过的:

<f:link.action controller="Custom" action="test" arguments="{myVar: sessionStorage.getItem('test')}" class="mbButton">Download</f:link.action>

我得到:参数“arguments”注册为“array”类型,但在 View 助手“TYPO3\CMS\Fluid\ViewHelpers\Link\ActionViewHelper”中的类型为“string”

如果我手动设置值,例如:

<f:link.action controller="Custom" action="test" arguments="{myVar: 1}" class="mbButton">Download</f:link.action>

然后我得到 1 作为响应。

最佳答案

生成带有占位符值的链接,然后更改该占位符值将破坏为该链接计算的 cHash 值。此外,它会导致此链接和其他使用相同占位符的链接发生 cHash 冲突(导致相同的链接)。

这是框架的一部分,出于安全原因,这是无法避免的。在模板中提供正确的 ID;如果您需要以某种方式分开存储,请创建一个 ViewHelper 来处理存储(但如果您混合使用缓存和未缓存的插件,请注意!)。但最重要的是,让您的链接构建遵循安全规则并包含该值,以便正确计算和验证 cHash。

此外,您的链接的 arguments 参数中存在语法错误:

arguments="{myVar: sessionStorage.getItem('test')}"

不会工作。如果您的 sessionStorage 是一个变量,并且其上的“item”实现了 ArrayAccess 或具有属性“test”的 getter,请使用:

arguments="{myVar: sessionStorage.item.test}"

关于javascript - 将 javascript 变量值发送到 Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40216558/

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