[TYPO3-german] Select Box Markierung merken

Birgit lists at berlin-typo3.de
Thu Feb 21 19:43:30 CET 2019


Hallo Cigdem,

hier ein Bsp. aus einer meiner Extensions - war in TYPO3 7.x:

Ist allerdings nicht multiple Select.
Habe das bisher nicht gebraucht. Aber in dem Fall könnte es mit einem Array statt Integer für demand.categories funktionieren.

<f:form.select> braucht dann zusätzlich die Option multiple=„true"

Für den Filter habe ich ein eigenes Objekt/ Domain (= Demand) mit den benötigten Properties gebaut.
Das braucht weder TCA noch Repository.
Du benutzt es nur, um die Werte aus dem Filter im Controller entgegenzunehmen und wieder an das Fluid Template zurückzugeben.

<f:form class="powermail_form powermail_form_1 calendar-filterform" method="get" action="filter" name="demand" object="{demand}" enctype="multipart/form-data" absolute="1" noCacheHash="1" >

<f:form.select
                        property="categories"
                        value="{demand.categories}"
                        options="{categories}"
                        optionValueField="uid"
                        optionLabelField="title"
                        sortByOptionLabel="true"
                        prependOptionValue="0"
                        prependOptionLabel="{f:translate(id: 'filter.categories.option.all')}"
                        class="powermail_field powermail_select"
                        id="select-categories" />



Domain/Model/Demand:

class Demand extends \TYPO3\CMS\Extbase\DomainObject\AbstractValueObject {

	/** * category 	
	* * @var integer
	 */ 
	protected $categories;

	/** * Returns the categories 
	* * @return integer $categories 
	*/ 
	public function getCategories() { 
		return $this->categories;
	 } 

	/* * Sets the categories
	  * @param integer $categories
	 * @return void 
	*/ 
	public function setCategories($categories) { 
		$this->categories = $categories; 
	}

}

Demand im DateController:

/**
     * action list
     *
     * @param \BR\BrCalendar2\Domain\Model\Demand $demand
     * @ignorevalidation $demand

     * @return void
     */
    public function listAction(\BR\BrCalendar2\Domain\Model\Demand $demand = NULL) {

	…
	$args = $this->request->getArguments();
	if($demand === NULL) {
         	 $demand = new \BR\BrCalendar2\Domain\Model\Demand();
		...
	}
	if($demand != NULL) {
          	$this->view->assign('demand', $demand);
	}
	…
	
	$categories = $this->categoryRepository->findByPid($this->settings['categoriesPid']);
        $this->view->assign('categories', $categories);

}


Vielleicht hilft das.

Viele Grüße
Birgit


> Am 21.02.2019 um 16:00 schrieb M. Cigdem Klengel <m.c.klengel at ifw-dresden.de>:
> 
> Hallo in die Runde,
> 
> ich habe in meinem Fluid-Template eine Multiple-Select-Box für eine Suche.
> Nachdem die Suchergebnisse angezeigt werden (also Inserts einmal zum Controller und Ergebnisse wieder rein ins Template) würde ich die ausgewählten Felder aus der Select-Box gerne wieder als selected anzeigen. Ich bekomme es aber nicht so richtig hin.
> 
> Die Select-Box wird aus einem Array generiert und nach der Suche könnte ich das Array mit den ausgewählten Werten in das Template zurück geben. Wenn ich aber mit for each und if die zwei Arrays zu vergleichen versuche, überschreibe ich die bereits als selected markierten aus dem Durchlauf davor - ist das schlüssig erklärt was ich meine?
> 
> Hat jemand eine Idee wie ich das elegant lösen könnte?
> 
> Vielen Dank und schöne Grüße,
> Cigdem
> 
> 
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list