2017-04-12 6 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

가능한 중복이 사용 후 사용자 기능

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

이를 사용하는 방법 (HTTP ://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

질문은 유체 템플릿과 관련이 없습니다. 그 외에도, 'alias' 섹션은 Fluid ViewHelper가 사용되는 경우에도 자동으로 해석되지 않습니다. –

1

시도가 [TYPO3 userFunc는 PHP 파일에 매개 변수를 GET 줄]의 typoscript

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