2017-04-12 10 views
1

ページを識別するためにgetパラメータをuserFuncに送信しようとしていますが、動作していないようです。typoscriptパラメータをuserFuncに送信

########## CATEGORY CONTENT ########## 
lib.categoryContent = COA 
lib.categoryContent { 
    10 < styles.content.get 
    10 { 
     select { 
      pidInList.cObject = USER 
      pidInList.cObject { 
       userFunc = Vendor\Provider\UserFunc\PageIdByAlias->getPageIdByAlias 
       alias = TEXT 
       alias.data = GP:category 
      } 
     } 
    } 

    wrap = <categoryContent><![CDATA[|]]></categoryContent> 
} 

そしてPHPで:

/** 
* Returns page ID by alias 
* 
* @return int 
*/ 
public function getPageIdByAlias($content, $conf) 
{ 
    $pageId = $this->pageRepository->getPageIdByAlias($conf["alias"]); 
    return $pageId; 
} 

私も試してみました:

alias.cObject = TEXT 
alias.cObject.data = GP:category 

をしかし、まだ、私はPHPで文字列GP:categoryを得るこれは私が持っているものです。 私はTYPO3 7.6.11を使用しています

+0

のTypoScriptで[TYPO3 USERFUNCは、PHPファイルにパラメータをGET与える](HTTPの可能性複製これを使用した後、ユーザー機能に

$pageId = $this->cObj->stdWrap($conf['page_id'], $conf['page_id.']); 

これを使用しよう:/を/stackoverflow.com/questions/43276482/typo3-userfunc-give-get-parameter-to-php-file) – nbar

答えて

1

あなたのTypoScriptが正しいです。ただし、レンダリングはユーザー関数に委任されているため、ネストされたTypoScriptプロパティは実行されません。これは、カスタムユーザー関数で発生する必要があります。 ContentObjectRendererのインスタンスは、カスタムクラスに自動的にプロパティPageIdByAlias::$cObjとして挿入されます。

<?php 
namespace Vendor\Provider\UserFunc; 

class PageIdByAlias 
{ 
    /** 
    * @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer 
    */ 
    public $cObj; 

    protected $pageRepository; 

    /** 
    * Returns page ID by alias 
    * 
    * @var string $content 
    * @var array $configuration 
    * @return int|string 
    **/ 
    public function getPageIdByAlias($content, array $configuration = null) 
    { 
    $pageId = 0; 
    // apply stdWrap() rendering for property 'alias' 
    // 3rd argument defines a custom default value if property is not set 
    $alias = $this->cObj->stdWrapValue('alias', $configuration, null); 
    if ($alias !== null) { 
     $pageId = $this->pageRepository->getPageIdByAlias($alias); 
    } 
    return $pageId; 
    } 
} 
1

userFuncで$ _GETを使用できますか?

+0

はい、私はより多くのパラメータを渡すので、私はTypoScriptから渡すことをお勧めします。 – cili

-1

私のために働く解決策はここにあります。 htmlからcObjectで引数を渡します(流体または任意の場所から)。

<f:cObject typoscriptObjectPath="lib.categoryContent" >{category.uid}</f:cObject> 

それとも

<f:cObject typoscriptObjectPath="lib.categoryContent" data="{category.uid}" /> 

のTypoScript:

# Set argument to the current. 
lib.category = TEXT 
lib.category{ 
    current = 1 
} 

lib.categoryContent = USER 
lib.categoryContent{ 

    10 < styles.content.get 
    10 { 
     select { 
      pidInList.cObject = USER 
      pidInList.cObject { 
       userFunc = Vendor\Provider\UserFunc\PageIdByAlias->getPageIdByAlias 

       # Pass category id as argument 
       alias = TEXT 
       alias.value < lib.category 
      } 
     } 
    } 

    wrap = <categoryContent><![CDATA[|]]></categoryContent> 
} 
+0

質問は流体テンプレートに関するものではありませんでした。それ以外にも、「別名」セクションは、Fluid ViewHelperが使用されていても自動的には解釈されません。 –

1

page_id.cObject = TEXT 
page_id.cObject.data = GP:category 
関連する問題