我只是嘗試從JavaScript中的價值傳遞給從我的控制器操作,並返回值回:發送JavaScript變量值的控制器動作
這是我的控制器:
<?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>
我得到:The argument "arguments" was registered with type "array", but is of type "string" in view helper "TYPO3\CMS\Fluid\ViewHelpers\Link\ActionViewHelper
如果我手動e.g設定值:
<f:link.action controller="Custom" action="test" arguments="{myVar: 1}" class="mbButton">Download</f:link.action>
然後我得到1
作爲響應。
的問題是,而不是'test'我必須要通過一個javascript變量值。例如'arguments =「{myVar:sessionStorage.getItem('myItem')}}」'。 這是sessionStorage:https://developer.mozilla.org/de/docs/Web/API/Window/sessionStorage – Black
然後,你必須使用一個佔位符作爲參數,並用javascript'arguments =「{myVar:'替換它__PLACEHOLDER __'}「'。 'onclick =「this.href = this.href.replace(/ __ PLACEHOLDER __/g,sessionStorage.getItem('myItem'))」' –
我已經嘗試過,但後來我重定向到404頁面。它似乎只有在它被硬編碼爲流體按鈕時才起作用:( – Black