[TYPO3-german] Extbase 6 Ext mit FE user als select list
conPassione gmbh
info at conpassione.ch
Fri Jul 12 14:08:56 CEST 2013
Hallo Robert
ist es ein Fehler des mappings in der setup.txt?
Lass da mal den Record-Type einfach weg. Dann nimmt er normale fe_user
vom Standardtyp.
Gruss Renzo
________________________________________________________________________
Renzo Bauen
conPassione gmbh
T +41 33 345 00 92
M +41 79 330 10 11
http://www.conpassione.ch
TYPO3 Bronce Associate
Am Freitag, den 12.07.2013, 12:18 +0200 schrieb Robert Wildling:
> Hi,
>
> Ich stehe vor einem mir unverständlichen Problem:
>
> Eine kleine Extensions soll Termine sammeln, die in zwei von 6 Feldern
> auf die Usergruppenmitglieder (einmal "Vortragende", einmal
> "Zielgruppe") zugreifen soll, und zwar mit Mehrfachauswahl:
>
> 1. Feld: Termin (Datumsfeld)
> 2. Startzeit (HH:MM)
> 3. Endzeit (HH:MM)
> 4. Themenbereich (Selectliste aus der Tabelle "Themenbereiche")
> 5. Feld: Vortragende(r) (Selectlist aus FE-User der Gruppe 3)
> 6. Feld: Zielgruppe(n) (Selectlist aus FE-User der Gruppe 1)
>
> Dass im TCA die Mitglieder der Gruppe 3 bzw 1 angezeigt werden, ist
> derzeit hardgecoded mittels:
> [...]
> 'vortragsperson' => array(
> 'exclude' => 0,
> 'label' =>
> 'LLL:EXT:lsbtermine/Resources/Private/Language/locallang_db.xlf:tx_lsbtermine_domain_model_termin.vortragsperson',
> 'config' => array(
> 'type' => 'select',
> 'foreign_table' => 'fe_users',
> 'foreign_table_where' => 'AND fe_users.usergroup=3',
> 'size' => 3,
> 'autoMaxSize' => 10,
> 'maxitems' => 9999,
> 'multiple' => 0,
> ),
> ),
> )
> [...]
> )
>
> Im TypoScript ist auch folgendes ergänzt:
> plugin.tx_lsbtermine {
> [...]
> persistence {
> storagePid = ...
> classes {
> Tx_Lsbtermine_Domain_Model_Vortragsperson {
> mapping {
> tableName = fe_users
> recordType = Tx_Extbase_Domain_Model_FrontendUser
> }
> }
> }
> }
> [...]
> }
>
> Die Verknüpfung zur FE-User-Tabelle wurde im ExtBuilder als m:n-Relation
> angelegt mit \TYPO3\CMS\Extbase\Domain\Model\FrontendUser unter "Extend
> existing Model Class".
>
> Nachdem ich im FE die Daten als Terminliste abfrage, steht diese hierim
> TerminController, wobei der SourceFolder in einer FlexForm den SysFolder
> speichert, wo alle Termine angelegt wurden:
>
> /**
> * @package lsbtermine
> * @license http://www.gnu.org/licenses/gpl.html GNU General Public
> License, version 3 or later
> */
> class TerminController extends
> \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
> /**
> * terminRepository
> *
> * @var \rowild\Lsbtermine\Domain\Repository\TerminRepository
> * @inject
> */
> protected $terminRepository;
>
> /**
> * action list
> *
> * @return void
> */
> public function listAction() {
> // check flexform (just a test)
> if (!isset($this->settings['sourceFolderPid'])) {
> $this->view->assign('sourceFolderPid', "The sourceFolderPid must be
> set in TypoScript or Flexform");
> return;
> } else {
> $sourceFolderPid = intval($this->settings['sourceFolderPid']);
> $this->view->assign('sourceFolderPid', $sourceFolderPid );
> }
>
> // output the data
> $termine = $this->terminRepository->findAll();
> $this->view->assign('termine', $termine);
> }
> }
>
> Wenn ich nun im Fluid Template ein <f:debug>{termine}</f:debug>
> eintrage, werden auch alle (derzeit 4) Einträge erkannt. Stellvertretend
> für einen Termin wird folgendes ausgegeben:
>
> TYPO3\CMS\Extbase\Persistence\Generic\QueryResultprototypeobject (4 items)
> 0 => rowild\Lsbtermine\Domain\Model\Terminprototypepersistent entity
> (uid=1, pid=52)
> date => DateTimeprototypeobject (2013-09-10T00:00:00+02:00,
> 1378764000)
> anmerkung => '' (0 chars)
> zielgruppe =>
> TYPO3\CMS\Extbase\Persistence\ObjectStorageprototypeobject (empty)
> vortragsperson =>
> TYPO3\CMS\Extbase\Persistence\ObjectStorageprototypeobject (empty)
> themenbereiche =>
> TYPO3\CMS\Extbase\Persistence\ObjectStorageprototypeobject (2 items)
> 000000000c8d22020000000038fe4cfd =>
> rowild\Lsbtermine\Domain\Model\Themenbereichprototypepersistent entity
> (uid=4, pid=52)
> 000000000c8d221d0000000038fe4cfd =>
> rowild\Lsbtermine\Domain\Model\Themenbereichprototypepersistent entity
> (uid=3, pid=52)
> uid => 1 (integer)
> _localizedUid => 1 (integer)modified
> _languageUid => 0 (integer)modified
> pid => 52 (integer)
>
>
> "zielgruppe" und "vortragsperson" ist EMPTY, während Themenbereich die
> jeweils zugeordneten Einträge findet.
>
>
>
> WICHTIGSTE FRAGE:
> Was muss ich bei den FE-Usern in welchen Files machen, damit auch da
> eine Ergebnisanzahl gefunden wird? (Und eventuell auch, wie ich diese
> dann im fluid template anzeigen kann...)
>
> Muss ich im TerminController noch ein weiteres Repository anlegen? Oder
> muss im VortragspersonenRepository eine andere Abfrage als findAll()
> definiert werden? Falls letzteres, wie kann ich diese dann com
> TerminController aus abrufen?
>
>
>
> WEITERES:
> Was ich wirklich gar nicht verstehe ist, dass der Ext-Builder im
> ext_tables.php file so etwas anlegt:
>
> t3lib_extMgm::addTCAcolumns('fe_users',$tmp_lsbtermine_columns);
>
> $TCA['fe_users']['columns'][$TCA['fe_users']['ctrl']['type']]['config']['items'][]
> =
> array('LLL:EXT:lsbtermine/Resources/Private/Language/locallang_db.xlf:fe_users.tx_extbase_type.Tx_Lsbtermine_Vortragsperson','Tx_Lsbtermine_Vortragsperson');
>
> $TCA['fe_users']['types']['Tx_Lsbtermine_Vortragsperson']['showitem'] =
> $TCA['fe_users']['types']['1']['showitem'];
> $TCA['fe_users']['types']['Tx_Lsbtermine_Vortragsperson']['showitem'] .=
> ',--div--;LLL:EXT:lsbtermine/Resources/Private/Language/locallang_db.xlf:tx_lsbtermine_domain_model_vortragsperson,';
> $TCA['fe_users']['types']['Tx_Lsbtermine_Vortragsperson']['showitem'] .= '';
>
> ...und dabei einen neuen Objekttyp für FE-User definiert, der im BE beim
> Anlegen neues FE-User auch auswählbar ist, nur mit dem Effekt, dass das
> Eingabeformular verschwindet, wenn nicht der reguläre Typ
> "Tx_Extbase_Domain_Model_FrontendUser" gesetzt wird.
>
> Wozu dieser neue Typ? Wie setzt man ihn ein?
>
>
> FAZIT:
> Mir fehlt ganz offensichtlich ein grundlegendes Verständnis zum Thema
> "Objekttyp", und das, obwohl ich S. Kurfürsts Buch und vieles anderes
> gelesen habe. Allerdings muss man wohl auch sagen, dass die
> Dokumentation zu Extbase 6 mehr als dürftig ist und vieles von früher
> einfach veraltert ist (debugging zB). Also leicht wird es einem ja auch
> nicht gerade gemacht... deswegen hoffe ich, dass ihr mir helfen könnt!
>
> Hab mir Mühe gegeben, so ausführlich wie möglich zu sein!
>
> Danke!
> Beste Grüße, Robert
> _______________________________________________
> 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