Argument „slide“ has already been defined, thus it should not be defined again.

Nach einem Update der vhs Extension kommt es im Frontend unter bestimmten Umständen zum folgenden Fehler:

Argument "slide" has already been defined, thus it should not be defined again.

Dieser Fehler entsteht, weil das slide Argument später von vhs ebenfalls implementiert wurde und die Definition somit doppelt vorkommt.

Sie können den Fehler folgendermaßen beheben:

Der Code in der Datei ws_t3bootstrap/Classes/ViewHelpers/Page/Resources/FalViewHelper muss nun lauten:

<?php
namespace WapplerSystems\WsT3bootstrap\ViewHelpers\Page\Resources;

/*
 * This file is part of the FluidTYPO3/Vhs project under GPLv2 or later.
 *
 * For the full copyright and license information, please read the
 * LICENSE.md file that was distributed with this source code.
 */

use FluidTYPO3\Vhs\ViewHelpers\Resource\Record\FalViewHelper as ResourcesFalViewHelper;

/**
 * @author Sven Wappler <typo3YYYY@wappler.systems>, WapplerSystems
 * @package T3Bootstrap
 * @subpackage ViewHelpers\Page\Resources
 */
class FalViewHelper extends \FluidTYPO3\Vhs\ViewHelpers\Page\Resources\FalViewHelper {


 /**
 * @return boolean
 */
 protected function isDefaultLanguage() {
 return (boolean) ($this->getCurrentLanguageUid() === 0);
 }


 /**
 * @param integer $pageUid
 * @param integer $limit
 * @return array
 */
 protected function getSlideRecordsFromPage($pageUid, $limit) {
 $pageRecord = $this->getRecord($pageUid);

 $resources = $this->getResources($pageRecord);
 if (NULL !== $limit && count($resources) > $limit) {
 $resources = array_slice($resources, 0, $limit);
 }
 return $resources;
 }

 /**
 * @return mixed
 * @throws \Exception
 */
 public function render() {
 $record = $this->arguments['record'];
 $uid = $this->arguments['uid'];
 if (NULL === $uid) {
 if (NULL === $record) {
 $record = $this->getActiveRecord();
 }
 $uid = $record['uid'];

 }
 if (NULL === $uid) {
 throw new \Exception('No record was found. The "record" or "uid" argument must be specified.', 1384611413);
 }
 $resources = $this->getSlideRecords($uid);

 return $this->renderChildrenWithVariableOrReturnInput($resources);
 }

}

Aufruf des ViewHelpers im Hero.html Partial im demotemplate muss dann die folgende Form besitzen.

{ws:page.resources.fal(slide: '-1') -> v:variable.set(name: 'media')}

In der Templates/Page/Startpage.html im demotemplate kann das slide-Argument auch entfernt werden, weil es dort nicht benötigt wird:

{ws:page.resources.fal() -> v:variable.set(name: 'media')}

Sven Wappler

Webentwickler, Programmierer, TYPO3 Experte

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.