亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

你如何訪問 TYPO3Fluid AbstractViewHelper 中的 THEN 和 ELSE

你如何訪問 TYPO3Fluid AbstractViewHelper 中的 THEN 和 ELSE

PHP
溫溫醬 2023-04-21 15:45:52
TYPO3 (TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper) 中有一個新的 AbstractViewHelper,我嘗試用它為我的項目實現一個非常簡單的 InArrayViewHelper。問題是,如果您想根據https://docs.typo3.org/m/typo3/book-extbasefluid/master/en-us/8-Fluid/8-developing-a-render()訪問then或子標簽,您應該使用custom-viewhelper.html#renderstatic-methodelse所以我做了類似的事情<?phpnamespace Vendor\Project\ViewHelpers;use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;class InArrayViewHelper extends AbstractViewHelper {    //use CompileWithRenderStatic;    public function initializeArguments() {        $this->registerArgument('haystack', 'mixed', 'View helper haystack ', TRUE);        $this->registerArgument('needle', 'string', 'View helper needle', TRUE);    }    public function render() {          $needle = $this->arguments['needle'];        $haystack = $this->arguments['haystack'];        if(!is_array($haystack)) {             return $this->renderElseChild();        }        if(in_array($needle, $haystack)) {            return $this->renderThenChild();        } else {            return $this->renderElseChild();        }      }}好吧,但他們搬走了renderThenChild并renderElseChild在那里。這樣做的正確方法是什么。我可以不用 \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper 嗎?
查看完整描述

1 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

首先:如果你想讓你的 ViewHelper 成為一個條件 ViewHelper 你應該子類化TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper,而不是TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper。前者包含輔助方法的集合,例如renderThenChild(呈現節點f:then或返回then參數,以存在者為準)。

第二:訪問標簽(與呈現標簽或編譯執行的閉包相反)只能在模板尚未編譯時發生,并且可以通過覆蓋public static function postParseEventwhich receives whichViewHelperNode允許您讀取子節點來實現通過.withgetChildNodes和/或添加額外的子節點addChildNode。

基于TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper和使用手動注冊thenelse參數的實現也可以工作,但不支持子節點,例如f:then不復制幾乎所有來自TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper.

所以答案是:是的,你可以不用AbstractConditionViewHelper- 但你不應該這樣做。


查看完整回答
反對 回復 2023-04-21
  • 1 回答
  • 0 關注
  • 128 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號