Zum Inhalt springen

RealUrl für die eigene CD-Verwaltung

Erstellt am 19. Februar 2012 · 1 Antwort · letzte Antwort am 5. März 2012

Tags: RealURL, Frage

FritzM ·

Guten Abend,
ich versuche gerade über RealUrl die Links meiner Erweiterung zu verbessern.

Vorher: http://localhost/cd-list/?tx_mycds_cdlist[cd]=10
Nachher: http://localhost/cd-list/cd/californication
noch wäre besser: http://localhost/cd-list/californication

Dazu Habe ich folgendes in die "ext_localconf.php" geschrieben:

<?php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT']['postVarSets']['_DEFAULT']['cd'] = array (
array(
	'GETvar' => 'tx_mycds_cdlist[cd]',
	'lookUpTable' => array (
		'table' => 'tx_mycds_domain_model_cd',
		'id_field' => 'uid',
		'alias_field' => 'link_title',
		'addWhereClause' => ' AND NOT deleted AND NOT hidden',
		'useUniqueCache' => 1,
		'useUniqueCache_conf' => array (
			'strtolower' => 1,
			'spaceCharacter' => '-',
		),
	),
),
);
?>

Damit kann ich über .../cd-list/cd/10 zur CD springen.
Wenn ich jetz aber .../cd-list/cd/californication eingebe bekomme ich den Fehler:

An error occurred while trying to call Tx_mycds_Controller_CdController->listAction(). Error: Validation errors for argument "cd"

Meine listAction sieht so aus:

<?php
/**
 * Displays Cds
 *
 * @param integer $cd
 *
 * @return void
 */
public function listAction($cd = 0) {
	...
	if ($cd != 0) {
	$values = array(
		'cd' => $this->cdRepository->findByUid(cd)
	);
	} else {...}
	
	$this->view->assignMultiple($values);
}
?>

Kann mir jemand bei diesem Problem helfen - ich kriegs einfach nicht hin?

Viele Grüße
Fritz M.

rlp_immigrant ·

Hi,

1. Hier fehlt ein "$"

FritzM schrieb

'cd' => $this->cdRepository->findByUid(cd)

2. Die Annotation und die Methoden-Signatur ist falsch. Hier müsste jeweils tx_mycds_domain_model_cd mit rein.

3. Wenn es dann noch nicht geht, stimmt irgendwas an deinem alias_field in der realurl config nicht.

Grüße
Alex