Benutzer-Werkzeuge

Webseiten-Werkzeuge


edv:typo3_extbase_mehrfachauswahl

typo3 ExtBase Mehrfachauswahl

Ziel

Auswahlfeld mit Optionenwerten aus fremder Tabelle und der Möglichkeit, mehrere Werte auszulesen. Die Werte sollen aus der eigenen Tabelle übernommen werden, falls welche vorhanden sind. Bei neuen Datensätzen einen voreingestellten Wert einsetzen1). Am Anfang soll der Wert 2 als Standard angeboten werden.

<select name="myExtension[auswahlfeld]" multiple="5">
  <option value="2"> Standard </option>
  <option value="1"> Option eins </option>
  <option value="2"> Option zwei </option>
  <option selected="selected" value="3"> Option drei </option>
  <option selected="selected" value="4"> Option vier </option>
  <option value="5"> Option fünf </option>
</select>

Controller

/**
 * ExerciseController
 */
class ExerciseController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

	/**
	 * exerciseRepository
	 *
	 * @var \Xx\XxMyExtension\Domain\Repository\ExerciseRepository
	 * @inject
	 */
	protected $exerciseRepository = NULL;

+	/**
+	 * categoryRepository
+	 *
+	 * @var \Xx\XxMyExtension\Domain\Repository\CategoryRepository
+	 * @inject
+	 */
+	protected $categoryRepository = NULL;
...
	/**
	 * action edit
	 *
	 * @param \Xx\XxMyExtension\Domain\Model\Exercise $exercise
	 * @ignorevalidation $exercise
	 * @return void
	 */
	public function editAction(\Xx\XxMyExtension\Domain\Model\Exercise $exercise) {
		$this->view->assign('exercise', $exercise);
		
+		$categories = $this->categoryRepository->findAll();
+		// der Variable 'categories' die Werte aus dem Repository mitgeben
+		$this->view->assign('categories', $categories);            
	}

	/**
	 * action new
	 *
	 * @param \Dr\DrEducalc\Domain\Model\Exercise $newExercise
	 * @ignorevalidation $newExercise
	 * @return void
	 */
	public function newAction(\Dr\DrEducalc\Domain\Model\Exercise $newExercise = NULL) {
		$this->view->assign('newExercise', $newExercise);

+		$categories = $this->categoryRepository->findAll();
+		// der Variable 'categories' die Werte aus dem Repository mitgeben
+		$this->view->assign('categories', $categories);            
	}
}

Template

im Template Edit.html (/typo3conf/ext/xx_myExtension/Resources/Private/Templates/Exercise/)

<f:section name="main">
<f:form action="update" name="exercise" object="{exercise}" >
...
	<label for="ex_cat">
	        <f:translate key="xx_myExtension_domain_model_exercise.ex_cat" />
	</label><br />
	<f:form.select property="exCat" 
		multiple="5" 
		prependOptionValue="3" 
		prependOptionLabel="standard" 
		options="{categories}" 
		optionValueField="uid" 
		optionLabelField="category" 
  	/><br />
...
</f:form>
</f:section>

im Template New.html (/typo3conf/ext/xx_myExtension/Resources/Private/Templates/Exercise/)

<f:section name="main">
<f:form action="create"  name="newExercise" object="{newExercise}">
...
	<label for="ex_cat">
	        <f:translate key="xx_myExtension_domain_model_exercise.ex_cat" />
	</label><br />
	<f:form.select property="exCat" 
		value="{3:3,4:4}" 
		multiple="5" 
		prependOptionValue="3" 
		prependOptionLabel="standard" 
		options="{categories}"
		optionValueField="uid"
		optionLabelField="category"
	/><br />
...
</f:form>
</f:section>

anm: funktioniert nicht in einem Partial (?)

1)
Für newAction fehlt noch das Template

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
 
edv/typo3_extbase_mehrfachauswahl.txt · Zuletzt geändert: 26.01.2018 20:39 (Externe Bearbeitung)