Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TYPO3:extbase中提交按钮的名称_Typo3_Extbase - Fatal编程技术网

TYPO3:extbase中提交按钮的名称

TYPO3:extbase中提交按钮的名称,typo3,extbase,Typo3,Extbase,我有一个表单,表单上有“提交”按钮“保存”、“保存和关闭”、“保存和查看”以及“保存和添加”,与TYPO3中的常规按钮一样。每个按钮都是一个项,唯一的区别是输入的名称参数。在我的控制器中,如何确定单击了哪个提交按钮以重定向到正确的操作?您不应该重定向到控制器中的操作。单击某个按钮时,最好调用正确的操作。为了保持逻辑清晰,例如可以使用f:link.actionviewhelper。以下是有关viewhelpers的良好文档:。可以为此viewhelper设置操作和控制器属性。因此,无需决定在控制器

我有一个表单,表单上有“提交”按钮“保存”、“保存和关闭”、“保存和查看”以及“保存和添加”,与TYPO3中的常规按钮一样。每个按钮都是一个
项,唯一的区别是
输入的
名称
参数。在我的控制器中,如何确定单击了哪个提交按钮以重定向到正确的操作?

您不应该重定向到控制器中的操作。单击某个按钮时,最好调用正确的操作。为了保持逻辑清晰,例如可以使用
f:link.action
viewhelper。以下是有关viewhelpers的良好文档:。可以为此viewhelper设置操作和控制器属性。因此,无需决定在控制器中单击了哪个按钮。要保存和传递表单数据,您应该使用
f:form
查看帮助程序,并将表单数据写入对象。

我遇到的第一个问题是
的名称不正确。为了获得正确的名称,我必须使用源自
AbstractFormFieldViewHelper
的ViewHelper构建标记

既然
标记的呈现方式正确,我可以在
$this->request->arguments
中看到单击的
的名称

为了完整起见,以下是我使用的ViewHelper的代码:

class IconSubmitViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Form\AbstractFormFieldViewHelper {

    /**
     * @var string
     */
    protected $tagName = 'input';

    /**
     * Initialize the arguments.
     *
     * @return void
     * @api
     */
    public function initializeArguments() {
        parent::initializeArguments();
        $this->registerArgument('icon', 'string', 'Icon name', true, 'actions-document-close');
        $this->registerTagAttribute('src', 'string', 'Image source', false, 'clear.gif');
        $this->registerUniversalTagAttributes();
    }

    /**
     * Renders an icon link as known from the TYPO3 backend
     *
     * @return string the rendered icon link
     */
    public function render() {
        $name = $this->getName();
        $this->registerFieldNameForFormTokenGeneration($name);

        $this->tag->addAttribute('type', 'image');
        $this->tag->addAttribute('name', $name);
        $this->tag->addAttribute('class', 'c-inputButton');

        return \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon($this->arguments['icon'], array('title' => $this->arguments['title'], 'html' => $this->tag->render()));
    }
}
以下是控制器中重定向到右侧页面的代码:

private function submitRedirect($myobject) {
    if ($this->request->hasArgument('_savedok')) {
        $this->redirect('edit', NULL, NULL, array('myobject'=>$myobject));
    }
    if ($this->request->hasArgument('_savedokclose')) {
        $this->redirect('list');
    }
    if ($this->request->hasArgument('_savedoknew')) {
        $this->redirect('new');
    }
}

我的表单已提交到“创建”或“更新”操作。从该操作中,我需要重定向到“列表”或“新建”操作,具体取决于单击了哪个提交按钮。