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@lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an