2016-07-27 3 views
2

NEOS 템플릿 중 하나에서 임의의 숫자 (지정된 범위 내)를 생성하고 나중에 사용하기 위해 변수에 저장하는 간단한 작업을 해결하려고합니다.다른보기 도우미의 결과가있는 Fluid-Alias-View-Helper

기본보기 도우미가 그러한 기능을 제공하지 않으므로 최소 및 최대 값을 예상하는 자체보기 도우미를 개발했습니다. 내부적으로보기 도우미는 PHP의 rand($min, $max)을 사용합니다.

다음의 예는 내 템플릿에 노력하고 있습니다 :

site:RandomNumber(0, 17) 

이 임의의 숫자를 출력 예상대로. 그러나 이제는 한 번 이상 사용해야하므로 결과를 변수에 저장해야합니다.

<f:alias map="{number: 33}"> 
    The number is {number} 
</f:alias> 
이 결과

:

The number is 33 

지금은 숫자가 33로하지 싶지만, 내 RandomNumber의 결과

나는 유체 별칭에 걸쳐 -보기 - 도우미왔다 -view-helper. 이것은 그러나 말에서 예외가 발생

<f:alias map="{number: {site:RandomNumber(0, 17)}}"> 
    The number is {number} 
</f:alias> 

:

내가 좋아하는 일을 시도하지 않는 f:alias보기 헬퍼의

The argument "map" was registered with type "array", but is of type "string" 
in view helper "TYPO3\Fluid\ViewHelpers\AliasViewHelper" 

워드 프로세서 허용 값이 다른 뷰 헬퍼 말하는, 그러나 결코 그것에 대한 모든 예를 든다.

나는이 접근법에 완전히 잘못 되었습니까? 유체 템플릿 내에 간단한 변수를 할당하는 것이 불가능합니까?

추가 정보 : 나는 거의 모든 페이지로드시 다른 슬라이드로 시작해야하는 슬라이더가 웹 사이트에 있습니다. 그래서 슬라이더 마크 업에서 여러 번 참조해야하는 임의의 슬라이드 번호를 가져와야합니다.

답변

2

내가 다시 그것으로 팠 먼저 출력에 시도 :

{site:randomNumber(0,17)} <- was output as the string, not the expected result 
<site:randomNumber min="0" max="17" /> <- this was the expected output 

첫 번째, 내가 별칭 헬퍼 오른쪽 그것을 사용하는 일을 얻기 위해 필요한 일이다?

그래서 먼저이 첫 번째 작품을 보장해야했습니다!

저는 임의로 인수 이름을 지정해야한다고 추측했습니다.그래서 나는 이것을 시도했다 :

{site:randomNumber({min: 0, max: 17})} 

PHP에서 나는 인수로 배열을주는 것이 해결책이라고 생각했다. 그러나 나는 틀렸다. "유체 인라인 표기법"에 대한 인터넷 검색을

이 자원에 나를 인도 :

https://wiki.typo3.org/Fluid_Inline_Notation이 나는 ​​매우 가까운 것을 보았다. 인수는 자신의 이름으로 부여 할 필요가 있지만 배열 표기법, 그래서 는 예상 출력 제작 :

{site:randomNumber(min: 0, max: 17)} 

그래서 내가 솔루션에 한 단계 더 가지고 있습니다. 그래서 나는이 조각을 가져다가이 같은 별칭 헬퍼로 붙여 넣은 :

<f:alias map="{number: {site:randomNumber(min: 0, max: 17)}}"> 
    The number is {number} 
</f:alias> 

이 그러나 이전과 같은 예외로 이어집니다. 내가 가까이서 느꼈던 표현을 다음과 같이 작은 따옴표로 묶었다고 생각했습니다.

<f:alias map="{number: '{site:randomNumber(min: 0, max: 17)}'}"> 
    The number is {number} 
</f:alias> 

그게 전부입니다. 문서화가 정말 좋지 않기 때문에 2 일 내에 파악해야한다고 생각하기가 어렵습니다.

+0

방금 ​​비슷한 문제가 있었고 여기에 답을 얻었 기 때문에 하나의 식에 추가 작은 따옴표를 넣지 않았기 때문에 광산도 작동하지 않는 것으로 나타났습니다! 감사! :) 제 경우와 같이 중괄호가 전체 표현식 주위에 있지 않더라도 전체 표현식을 둘러 쌀 필요가 있습니다 :'arguments = { "property : 'additionalInfos. {i.index} .infoValue'"}' –

1

{site:randomNumber(min: 1, max:10)}이어야합니다. 케이스에주의하십시오. 이것은 당신이 템플릿의 시작 부분에이 같은 네임 스페이스 site를 등록, 가정한다 :

{namespace site=Vendor\ExtName\ViewHelpers} 

편집 : 인수가 ViewHelper의 매개 변수 이름이 기능을 렌더링 일치해야합니다.

+0

물론 네임 스페이스가 설정되어 있습니다. 그렇지 않으면 도우미는 정상 출력 ''에서 작업하지 않았을 것입니다. 하지만 케이싱을 확인했습니다. 분명히 케이스는 아무런 차이를 만들지 않습니다 :'는 같은 결과를 가져옵니다. 그러나 이것을 확인해 주셔서 감사합니다! –