TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

IRRE und Sortierung


Autor Nachricht
Verfasst am: 23. 09. 2011 [12:30]
Typo3Cuckoo
Themenersteller
Dabei seit: 18.05.2011
Beiträge: 184
Hi,

Ich nutze in meiner Extbase Extension die IRRE Funktionalität. Tut soweit alles sehr gut!

Jedoch hab ich ein Problem mit der Sortierung:

Wie kann man die Child-Elemente automatisch nach einem bestimmten Feld sortieren?
Konkreter Fall: die Child-Element haben ein Feld date_start nach dem die Einträge absteigend sortiert werden sollen.

Im TCA der Child-Elemente hab ich hierfür folgendes eingetragen:
PHP
<?php
$TCA['tx_myext_domain_model_child'] = array(
	'ctrl' => array(
		[...]
		'default_sortby' => 'ORDER BY date_start ASC',
		[...]
	)
);
?>

Z.B. trage ich drei Child-Elemente in folgender Reihenfolge über die IRRE-Funktion ein:

1. Child: date_start => 23.09.2011
2. Child: date_start => 01.01.2011
3. Child: date_start => 09.10.2011

Schau ich mir die Child-Elemente im Backend in der Listenansicht an, sind sie korrekt sortiert (d.h: 2.Child, 1.Child, 3.Child). Im Bearbeitungsformular des Parent-Elements stimmt die Sortierung jedoch nicht. Hier bleiben sie genau in der Reihenfolge stehen wie ich sie eingetragen habe.

Die IRRE Einbindung im Parent-Element sieht wie folgt aus (TCA):
PHP
<?php
$TCA['tx_myext_domain_model_parent']['columns']['children']['config'] = array(
	'type' => 'inline',
	'foreign_table' => 'tx_myext_domain_model_child',
	'MM' => 'tx_myext_parent_child_mm',
	'maxitems' => 9999,
	'foreign_selector' => 'uid_foreign',
	'appearance' => array(
		'useSortable' => 1,
		'useCombination' => 1,
		'newRecordLinkPosition' => 'top'
	)
);
?>


Mir ist klar, dass ich mit useSortable = 1 die Sortierung auf "manuell" geschalten habe. Aber selbst wenn ich das auf "0" setze stimmt die Sortierung immer noch nicht. Im Frontend werden die Child-Elemente nach der IRRE-Sortierung ausgegeben (also genau so, wie sie im Bearbeitungsformular des Parent-Elements sortiert sind).

Gibt es eine Möglichkeit, die manuelle Sortierung komplett zu deaktivieren die Child-Elemente über ein vorgegebenes Feld zu sortieren?

Danke schon mal für eure Hilfe icon_smile.gif

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 23.09.2011 um 12:30.]
Profil
Verfasst am: 23. 09. 2011 [15:32]
Julian.Hofmann
Dabei seit: 18.05.2007
Beiträge: 2073
Hallo.

Für inline gibt es die Konfigurationsmöglichkeit eines foreign_default_sortby:
TYPO3 Core API schrieb:
If a fieldname for foreign_sortby is defined, then this is ignored.
Otherwise this is used as the “ORDER BY” statement to sort the records in the
table when listed.


Viele Grüße
Julian
Profil
Verfasst am: 23. 09. 2011 [16:07]
Typo3Cuckoo
Themenersteller
Dabei seit: 18.05.2011
Beiträge: 184
Hi,

danke für den Hinweis icon_smile.gif aber was fange ich damit an? Wo muss ich das einbauen?

Hab folgendes versucht:

PHP
<?php
$TCA['tx_myext_domain_model_parent']['columns']['children']['config'] = array(
	'type' => 'inline',
	'foreign_table' => 'tx_myext_domain_model_child',
	'MM' => 'tx_myext_parent_child_mm',
	'maxitems' => 9999,
	'foreign_selector' => 'uid_foreign',
	'foreign_default_sortby' => 'ORDER BY date_start ASC', // <--- HIER EINGEFÜGT
	'appearance' => array(
		'useSortable' => 1,
		'useCombination' => 1,
		'newRecordLinkPosition' => 'top'
	)
);
?>


Hat leider nichts gebracht icon_frown.gif

In der MM-Tabelle sind die Felder sorting und sorting_foreign vorhanden. Müssen die vielleicht entfernt werden?

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 23.09.2011 um 16:07.]
Profil
Verfasst am: 05. 12. 2011 [17:49]
bikila
Dabei seit: 05.12.2011
Beiträge: 1
Vielen Dank, genau das hab ich gesucht.
Jetzt werden bei mir die Childs in der Extbase Extension in der richtigen Reihenfolge ausgegeben.

@ Typo3Cuckoo - du hast einen kleinen fehler in deinem code...

PHP
<?php
...
	'foreign_default_sortby' => 'ORDER BY date_start ASC', // hier muss ein feld angegeben werden, kein sql statement
...
 
/* bei mir siehts jetzt so aus */
 
        'foreign_sortby' => 'sorting',
	'foreign_default_sortby' => 'sorting',				
 
 
?>



LG
ben
ProfilWWW
Verfasst am: 06. 06. 2012 [09:13]
ToBe
Dabei seit: 22.06.2011
Beiträge: 30
bei mir geht es leider noch immer nicht...

hier mal ein Auszug meiner TCA:

PHP
'addresses' => array(
            'exclude' => 0,
            'label' => 'LLL:EXT:extkey/Resources/Private/Language/locallang_db.xml:tx_extkey_domain_model_coursesupplier.addresses',
            'config' => array(
                'type' => 'select',
                'foreign_table' => 'tx_extkey_domain_model_address',
                'MM' => 'tx_extkey_coursesupplier_address_mm',
                'foreign_sortby' => 'a_name',
                'foreign_default_sortby' => 'a_name',
                'size' => 10,
                'autoSizeMax' => 30,
                'maxitems' => 9999,
                'wizards' => array(
                    '_PADDING' => 1,
                    '_VERTICAL' => 1,
                    'edit' => array(
                        'type' => 'popup',
                        'title' => 'Edit',
                        'script' => 'wizard_edit.php',
                        'icon' => 'edit2.gif',
                        'popup_onlyOpenIfSelected' => 1,
                        'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1',
                    ),
                    'add' => Array(
                        'type' => 'script',
                        'title' => 'Create new',
                        'icon' => 'add.gif',
                        'params' => array(
                            'table' => 'tx_extkey_domain_model_address',
                            'pid' => '###CURRENT_PID###',
                            'setValue' => 'prepend'
                        ),
                        'script' => 'wizard_add.php',
                    ),
                ),
            ),
        ),


ich hoffe ihr könnt mir weiterhelfen.

LG Tobi
ProfilWWWICQ
Verfasst am: 16. 07. 2012 [13:58]
daniz78
Dabei seit: 20.09.2006
Beiträge: 224
Nimm mal die folgende Zeile raus, sonst wird das Feld im Formular nicht mehr angezeigt:

PHP
'foreign_sortby' => 'a_name',


Damit sollte die Sortierung klappen!

Ciao Daniz

daniz online marketing
http://www.daniz.de
Profil
Verfasst am: 19. 07. 2012 [16:22]
ToBe
Dabei seit: 22.06.2011
Beiträge: 30
Danke für die Antwort!

...hatte es mittlerweile anders gelöst, aber werde mir das mal merken falls ich wieder mal auf das Problem stoße.

LG Tobi
ProfilWWWICQ