---
title: "Duplikate <f:for each… ViewHelper"
url: "https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper"
source: "typo3.net"
tags: ["Extensions","Extbase","Fluid","Frage","ViewHelper"]
created: "2012-10-02"
last_reply: "2012-10-22"
replies: 10
solved: false
page: 1
pages: 1
lang: "de"
---

# Duplikate <f:for each… ViewHelper

Extensions › Extbase · 10 Antworten · gestartet 2012-10-02

## Eröffnungsbeitrag

**raphdurrer** · 2012-10-02 · [Beitrag #1](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/1)

Hallo Zusammen,

Ich bin auf der Suche nach einer Möglichkeit dem «for Viewhelper» beizubringen das er gleiche Titel nur einmal ausspucken soll.

Beipiel:

```html
<f:for each="{relateds}" as="related">
 {title}
</f:for>
```

Nu habe ich folgendes Problem wenn ein Artikel zwei verwandte Artikel hat und beide zum Beispiel mit «Print» getagt wurden.

Wird natürlich wie oben Beschrieben:

Print
Print

ausgegeben.

Gibt es eine Möglichkeit eine Abfrage «f:if Viewhelper» die sagt wenn der Titel schon vorhanden dann gib ihn nur einmal aus.

Danke vielmal für alle Denk anstösse, Hinweise und alles.

Viele Grüsse
Raphi

## Antworten

### [#2](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/2) · Avalarion · 2012-10-04

Moin Rapha,

Schreib deinen eigenen ViewHelper, erbe von dem For - ViewHelper und schau dir an wie der das macht. Und dann speicher dir einfach, was du schon hattest.

Gruß,

Bastian

> **raphdurrer schrieb:**
>
> Hallo Zusammen,
>
> Ich bin auf der Suche nach einer Möglichkeit dem «for Viewhelper» beizubringen das er gleiche Titel nur einmal ausspucken soll.
>
> Beipiel:
>
> ```html
> <f:for each="{relateds}" as="related">
>  {title}
> </f:for>
> ```
>
> Nu habe ich folgendes Problem wenn ein Artikel zwei verwandte Artikel hat und beide zum Beispiel mit «Print» getagt wurden.
>
> Wird natürlich wie oben Beschrieben:
>
> Print
> Print
>
> ausgegeben.
>
> Gibt es eine Möglichkeit eine Abfrage «f:if Viewhelper» die sagt wenn der Titel schon vorhanden dann gib ihn nur einmal aus.
>
> Danke vielmal für alle Denk anstösse, Hinweise und alles.
>
> Viele Grüsse
> Raphi

### [#3](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/3) · einpraegsam.​net · 2012-10-07

Hi Raphi,

alternativ musst du die Properties zuvor filtern.

Grüße aus Rosenheim

### [#4](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/4) · raphdurrer · 2012-10-17

Hallo Zusammen,

Danke vielmal für die Hilfe. Sorry für die Späte Antwort ich durfte noch in die Ferien.

Da ich noch nie einen eigenen Viewhelper geschrieben hab wäre es super wenn ich hier einen kurzen Anhaltspunkt bekäme. Link oder sowas wäre Super. :o
Mit der Filterung der Properties verhält es sich gleich. Könnte ich das direkt im Template machen? Wie müsste das ungefähr aussehen.

Danke für euer «auf die Sprünge» helfen!

Grüsse

### [#5](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/5) · Avalarion · 2012-10-17

Moin Rapha,

Warum das Rad neu erfinden? Schau dir mal diesen Artikel an, den fand ich ganz gut, als ich meinen ersten geschrieben habe. Wenn Probleme sind hier einfach posten oder mich mal eben anrufen oder in Skype anschreiben.

<http://t3seo.de/eigene-fluid-viewhelper-schreiben-i/>

Die Filterung, die Alex vorschlug, machst du in deinem Controller mit einem einfachen durch iterieren durch deine Objekte und überprüfst da. Quasi "einfaches" PHP.

Wünsche dir nen schönen Abend,

Bastian

### [#6](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/6) · raphdurrer · 2012-10-18

Hi Bastian,

Ich habs doch Tatsächlich fertig gebracht einen ViewHelper zu machen der funktioniert. :D
Danke für den super Link.

Der Viewhelper funktioniert soweit auch super und nun habe ich versucht via:

```php
return implode('<br>',array_unique(explode(',', $string)));
```

die Duplikate aus dem String zu entfernen.

Wenn ich im Template unter:

```html
<n:duplicates string="Erscheinungbild, Print, Onlinekommunikation, Onlinekommunikation," />
```

funktioniert es. Wenn ich jedoch:

```html
<n:reverse string="{tag.title}," />
```

verwende. Funktioniert es nicht mehr obwohl der String selber identisch aussieht wie wenn ich es fix rein schreibe.

Könnte das damit zusammen hängen das

```html
<f:for each="{related.tags}" as="tag">
<n:reverse string="{tag.title}," />
</f:for>
```

in einer «for each» schlaufe liegt? Noch eine Idee dazu?
Danke nochmal für das coole Tutorial.

Grüsse, Raphi

### [#7](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/7) · Avalarion · 2012-10-18

Holla Raphi,

was bekommste denn in deinem ViewHelper? Und welchen Fehler bekommst du?

Gruß

Bastian

### [#8](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/8) · raphdurrer · 2012-10-19

Hi Bastian,

Wenn ich im ViewHelper selber einen direkten string

```php
return($string);
```

ohne das unique_array mache. Bekomme ich folgende Ausgabe auf Seite:

```html
Erscheinungbild, Print, Onlinekommunikation, Onlinekommunikation,
```

und das wäre ja eigentlich auch super so. Nur funktioniert das unique_array nicht.

Mein viewHelper Code:

```php
public function render($string) {
  return implode('<br>',array_unique(explode(',', $string)));  
}
```

Template Code:

```html
<f:for each="{newsItem.relatedSorted}" as="related">
	<f:for each="{related.tags}" as="tag">
		<n:noduplicates string="{tag.title}," />
	</f:for>
</f:for>
```

Danke und Viele Grüsse
raph

### [#9](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/9) · Avalarion · 2012-10-19

Holla Muchacho,

```php
<?php
$var = array('1','2','1');
$var2 = array_unique($var);
var_dump($var, $var2);

$string = "Hallo,Thomas,Hallo,Test";
$array1 = explode(',', $string);
$array2 = array_unique($array1);

var_dump($string, $array1, $array2);
echo implode(',', $array2);
echo PHP_EOL;
echo implode('<br>',array_unique(explode(',', $string)));
echo PHP_EOL;
```

Grade mal in der Konsole ausgeführt, bei mir klappt das. Schreib mal nen paar Testausgaben mit var_dump mit rein!

### [#10](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/10) · raphdurrer · 2012-10-22

Hey Bastian,

Danke für den Tip! Jetzt hab ich herausgefunden, dass das gar nicht funktionieren kann! #angry# :o

Meine Eingabe vom Template ist ja die for each schleife:

```html
<f:for each="{newsItem.relatedSorted}" as="related">
	<f:for each="{related.tags}" as="tag">
		<n:noduplicates string="{tag.title}," />
	</f:for>
</f:for>
```

Da das «relatedSorted» sucht quasi zu jedem Artikel die Tag's von verwandten Artikeln. D.h.

```php
echo ($string)
```

gibt folgende Ausgabe:

```html
App, App, App, App, Erscheinungsbild, Print, Onlinekommunikation, Onlinekommunikation, Erscheinungsbild, Onlinekommunikation, Onlinekommunikation, …
```

Alle Tag's zusammen von jeglichem Artikel mit verwandten Artikeln die getagt wurden.

```php
var_dump($string)
```

gibt dem zu folge:

```html
string(4) "App," string(4) "App," string(4) "App," string(4) "App," string(17) "Erscheinungsbild," string(6) "Print," string(20) "Onlinekommunikation," string(20) "Onlinekommunikation," string(17) "Erscheinungsbild," string(20) "Onlinekommunikation," string(20) "Onlinekommunikation," string(6) "Print," string(17) "Erscheinungsbild," string(6) "Print," …
```

```php
return $string
```

wird es ja wieder zurückgegeben und quasi pro Artikel gesplitet:

```html
Artikel 1: App, 
Artikel 2: App, 
Artikel 3: App, App (zwei verwandte Artikel mit App als Tag), 
Artikel 4: Erscheinungsbild, Print, Onlinekommunikation, Onlinekommunikation (Zwei verwandte Artikel mit Onlinekommunikation als Tag)
…
```

Siehst du das auch, dass es so nicht funktionieren kann? Oder hab ich mich da zu fest verhackt…

### [#11](https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper/11) · Avalarion · 2012-10-22

Das KANN durchaus so funktionieren, allerdings musst du ein globales Array haben, dass du zum Filtern benutzt. Ich gebe zu, dass das nicht ganz trivial ist, grade da das array ja auch wieder zurück gesetzt werden musst, wenn du das nächste mal den ViewHelper verwendest..

---

Quelle: „Duplikate <f:for each… ViewHelper“, typo3.net, https://www.typo3.net/d/112319-duplikate-ffor-each-viewhelper
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
