我有一個提交按鈕保存,保存和關閉,保存和查看,並保存和添加,像往常一樣在TYPO3的形式。每個按鈕都是<input type='image'>
項目,唯一的區別是input
的name
參數。在我的控制器中,如何確定點擊了哪個提交按鈕,以便重定向到正確的操作?TYPO3:在extbase中提交按鈕的名稱
0
A
回答
0
我遇到的第一個問題是<input>
的名稱不對。爲了得到正確的名字,我必須使用派生自AbstractFormFieldViewHelper
的ViewHelper來構建標籤。
既然<input>
標記呈現正確的方式,我可以看到點擊<input>
的名稱爲$this->request->arguments
。
爲了完整起見,這裏是我使用的視圖助手的代碼:
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');
}
}
0
您不應該重定向到控制器的操作。單擊某個按鈕時最好調用正確的操作。爲了保持邏輯清晰,您可以使用f:link.action
視圖幫助器。這裏有一個關於視圖的好文檔:ViewHelper Reference。您可以將操作和控制器屬性設置爲此視圖幫助器。所以不需要決定控制器中哪個按鈕被點擊。要保留並傳遞表單數據,您應該使用 ViewHelpers並將表單數據寫入對象。
相關問題
- 1. 在表單中提交不同名稱的提交按鈕
- 2. 表單提交按鈕不會提交按鈕時的名稱是「提交」
- 3. 從提交按鈕獲取名稱php
- 4. 一個按鈕名稱的XPath查詢提交併提交
- 5. Typo3 extbase include html2pdf
- 6. TYPO3 Extbase switchableControllerActions
- 7. TYPO3 Extbase JsonView FAL
- 8. TYPO3,Extbase,Paginate
- 9. Typo3 TCA itemsProcFunc extbase
- 10. TYPO3 - Extbase SEO Url
- 11. TYPO3 Extbase storagePid
- 12. Typo3(7.6.4)Extbase提交後新的Action參數爲空
- 13. 如何獲取/提取提交按鈕的名稱值?
- 14. NodeJs/Express獲取ID //按下提交按鈕的名稱
- 15. 獲取PHP中提交按鈕的名稱
- 16. TYPO3中的Rand()Extbase查詢
- 17. jQuery Mobile的 - 形式不提交的提交按鈕的名稱和值
- 18. 如何將提供一個名稱s2ui提交按鈕
- 19. JQuery:如何提交具有名稱爲「submit」的提交按鈕的表單
- 20. 帶回車鍵的郵政表單不會提交提交按鈕名稱
- 21. 按鈕名稱提交停止觸發表單的提交事件?
- 22. TYPO3 6.1:Extbase映射
- 23. Typo3 Extbase插件Schelduler
- 24. TYPO3 extbase news ajax pagebrowser
- 25. TYPO3 Extbase:訪問$ BE_USER
- 26. 提交按鈕名稱,如同一個表格內的其他輸入名稱
- 27. 檢查用戶名按提交按鈕
- 28. 通過表格提交特定按鈕的名稱
- 29. 獲取表單提交按鈕的名稱Django
- 30. 通過點擊IE6上的回車鍵提交按鈕名稱
我的表單提交'創建'或'更新'動作。從那個動作中,我需要重定向到'列表'或'新'動作,具體取決於哪個提交按鈕被點擊。 –