paginate behält die Suchanfrag nicht beim blättern!?

  • mimaxx mimaxx
    Jedi-Ritter
    0 x
    144 Beiträge
    1 Hilfreiche Beiträge
    02. 08. 2012, 11:40

    Hallo,

    habe es endlich geschafft eine kleine Suche zu bauen die funktioniert auch soweit. Nur nutze ich auch das paginate widget. Nach der Suchanfrage werden die Ergebnisse richtig angezeigt auch die Anzahl bei count sobald ich aber auf die nächste Seite klicke ist der Filter weg und beim count stehen wieder alle.

    Dies ist meine Suche

    1. public function findDemand(Tx_MyArtikel_Domain_Model_Demand $demand = NULL) {
    2. $query = $this->createQuery();
    3.  
    4. if($demand !== NULL){
    5. $search = $demand->getSearchWord();
    6. }
    7. else {$search = '';}
    8.  
    9. return $query->matching(
    10. $query->like('sorte', '%'.$search.'%')
    11. )
    12. ->execute();
    13. }

    und dies mein Template

    1. <!--...-->
    2.  
    3. <f:section name="main">
    4. <f:form method="post" action="list" name="demand" object="{demand}">
    5. <tr>
    6. <td valign="top" >Search:<f:form.textfield id="searchWord" property="searchWord" size="10" value="{demand.searchWord}"/></td>
    7. <td><f:form.submit value="Suche" /></td>
    8. </tr>
    9. </f:form>
    10. </table>
    11.  
    12. <f:flashMessages />
    13.  
    14.  
    15. <f:widget.paginate objects="{artikels}" as="paginateArtikels" configuration="{itemsPerPage: 20, forcedNumberOfLinks:0}">
    16. <f:for each="{paginateArtikels}" as="artikel" iteration="objIteration">
    17.  
    18. <!--...-->

    Dies ist der Controller der listAction

    1. public function listAction(Tx_MyArtikel_Domain_Model_Demand $demand = NULL) {
    2. $this->view->assign('artikels', $this->artikelRepository->findDemand($demand));
    3. }

    Gruss
    mimaxx

  • Hilfreichster Beitrag

  • hkuesters hkuesters
    TYPO3-Anwärter
    1 x
    5 Beiträge
    1 Hilfreiche Beiträge
    24. 09. 2012, 10:00 - Hilfreichster Beitrag

    Hallo zusammen!

    Hat leider länger keine Zeit, da noch mal ranzugehen.
    Besten Dank mimaxx für Deine detaillierte Darstellung. Ich will nun einen offenen Punkt aufgreifen und ergänzen. Nämlich:
    Wie integriere ich den Fluid-Paginator in die eigene Extension, damit er aus dem Core rauskommt und Anpassungen update-sicher sind?!

    Dazu kopiere ich die Original-Paginator-Dateien und baue die Kopien in meine Extension als eigenen ViewHelper ein, um sie dann dort ändern zu können.

    Folgende drei Dateien aus Fluid sind betroffen:
    1. ...sysext\fluid\Classes\ViewHelpers\Widget\PaginateViewHelper.php
    2. ...sysext\fluid\Classes\ViewHelpers\Widget\Controller\PaginateController.php
    3. ...sysext\fluid\Resources\Private\Template\ViewHelpers\Widget\Paginate\Index.html

    Um Verwechslungen zu vermeiden, habe ich den ViewHelper bei mir umbenannt in "Seitenzaehler"
    Neue Speicherorte sind dann:
    zu 1: ... ext\myextension\Classes\ViewHelpers\Widget\SeitenzaehlerViewHelper.php
    zu 2: ... ext\myextension\Classes\ViewHelpers\Widget\Controller\SeitenzaehlerController.php
    zu 3: ... ext\myextension\Resources\Private\Templates\ViewHelpers\Widget\Seitenzaehler\Index.html

    Im nächsten Schritt müssen die Dateien 1 und 2 angepasst werden:
    In Datei 1 "SeitenzaehlerViewHelper.php" sind folgende Änderungen erforderlich:
    Zu einen muss der Klassenname angepasst werden.
    Neu heißt er dann in Zeile 51:

    1. class Tx_MyExtension_ViewHelpers_Widget_SeitenzaehlerViewHelper extends Tx_Fluid_Core_Widget_AbstractWidgetViewHelper
    .
    Desweiteren muss der Bezug zum Controller angepasst werden in Zeile 64:
    Neu heißt er dann in Zeile 64:
    1. public function injectController(Tx_MyExtension_ViewHelpers_Widget_Controller_SeitenzaehlerController $controller) {

    Achtung: Auch in den Kommentaren Zeilen 56 und 61 ist diese Anpassung notwendig!

    In Datei 2 "SeitenzaehlerController.php" muss ebenfalls der Klassenname angepasst werden:
    Neu also:

    1. class Tx_MyExtension_ViewHelpers_Widget_Controller_SeitenzaehlerController extends Tx_Fluid_Core_Widget_AbstractWidgetController {...

    In Datei 3 sind zunächst keine Änderungen erforderlich!

    Im nächsten Schritt muss ich nun in meiner Extension den neuen ViewHelper einbinden:
    Dazu deklariere ich zunächst den Namespace durch: {namespace ns=Tx_MyExtension_ViewHelpers}

    Und dann kann ich die bisherige Art, den Paginator aufzurufen, austauschen. Aus dem bisherigen
    ALT: [b]f:widget.paginate [/b]
    wird nun
    NEU: [b]sk:widget.seitenzaehler[/b]

    Von da aus habe ich nun die Möglichkeit, den Paginator für meine Extension anzupassen, wie mimaxx das hier ja gut beschrieben hat!


  • mimaxx mimaxx
    Jedi-Ritter
    0 x
    144 Beiträge
    1 Hilfreiche Beiträge
    15. 08. 2012, 11:13

    Hier nochmal der ganze Code aus dem LinkViewHelper

    1. <?php
    2.  
    3. /* *
    4.  * This script is backported from the FLOW3 package "TYPO3.Fluid". *
    5.  * *
    6.  * It is free software; you can redistribute it and/or modify it under *
    7.  * the terms of the GNU Lesser General Public License, either version 3 *
    8.  * of the License, or (at your option) any later version. *
    9.  * *
    10.  * *
    11.  * This script is distributed in the hope that it will be useful, but *
    12.  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- *
    13.  * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser *
    14.  * General Public License for more details. *
    15.  * *
    16.  * You should have received a copy of the GNU Lesser General Public *
    17.  * License along with the script. *
    18.  * If not, see http://www.gnu.org/licenses/lgpl.html *
    19.  * *
    20.  * The TYPO3 project - inspiring people to share! *
    21.  * */
    22.  
    23. /**
    24.  * A view helper for creating Links to extbase actions within widets.
    25.  *
    26.  * = Examples =
    27.  *
    28.  * <code title="URI to the show-action of the current controller">
    29.  * <f:widget.link action="show">link</f:widget.link>
    30.  * </code>
    31.  * <output>
    32.  * <a href="index.php?id=123&tx_myextension_plugin[widgetIdentifier][action]=show&tx_myextension_plugin[widgetIdentifier][controller]=Standard&cHash=xyz">link</a>
    33.  * (depending on the current page, widget and your TS configuration)
    34.  * </output>
    35.  * @api
    36.  */
    37. class Tx_Fluid_ViewHelpers_Widget_LinkViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractTagBasedViewHelper {
    38.  
    39. /**
    40. * @var string
    41. */
    42. protected $tagName = 'a';
    43.  
    44. /**
    45. * Initialize arguments
    46. *
    47. * @return void
    48. * @api
    49. */
    50. public function initializeArguments() {
    51. $this->registerUniversalTagAttributes();
    52. $this->registerTagAttribute('name', 'string', 'Specifies the name of an anchor');
    53. $this->registerTagAttribute('rel', 'string', 'Specifies the relationship between the current document and the linked document');
    54. $this->registerTagAttribute('rev', 'string', 'Specifies the relationship between the linked document and the current document');
    55. $this->registerTagAttribute('target', 'string', 'Specifies where to open the linked document');
    56. $this->registerArgument('actionArguments', 'string', 'individueller Seitenfilter'); //mn
    57. }
    58.  
    59. /**
    60. * Render the link.
    61. *
    62. * @param string $action Target action
    63. * @param array $arguments Arguments
    64. * @param array $actionArguments Arguments
    65. * @param string $section The anchor to be added to the URI
    66. * @param string $format The requested format, e.g. ".html"
    67. * @param boolean $ajax TRUE if the URI should be to an AJAX widget, FALSE otherwise.
    68. * @return string The rendered link
    69. * @api
    70. */
    71. public function render($action = NULL, $arguments = array(), $section = '', $format = '', $ajax = FALSE) {
    72. if ($ajax === TRUE) {
    73. $uri = $this->getAjaxUri();
    74. } else {
    75. $uri = $this->getWidgetUri();
    76. }
    77. $this->tag->addAttribute('href', $uri);
    78. $this->tag->setContent($this->renderChildren());
    79.  
    80. return $this->tag->render();
    81. }
    82.  
    83. /**
    84. * Get the URI for an AJAX Request.
    85. *
    86. * @return string the AJAX URI
    87. */
    88. protected function getAjaxUri() {
    89. $action = $this->arguments['action'];
    90. $arguments = $this->arguments['arguments'];
    91.  
    92. if ($action === NULL) {
    93. $action = $this->controllerContext->getRequest()->getControllerActionName();
    94. }
    95. $arguments['id'] = $GLOBALS['TSFE']->id;
    96. // TODO page type should be configurable
    97. $arguments['type'] = 7076;
    98. $arguments['fluid-widget-id'] = $this->controllerContext->getRequest()->getWidgetContext()->getAjaxWidgetIdentifier();
    99. $arguments['action'] = $action;
    100.  
    101. return '?' . http_build_query($arguments, NULL, '&');
    102. }
    103.  
    104. /**
    105. * Get the URI for a non-AJAX Request.
    106. *
    107. * @return string the Widget URI
    108. */
    109. protected function getWidgetUri() {
    110. $uriBuilder = $this->controllerContext->getUriBuilder();
    111.  
    112. $argumentPrefix = $this->controllerContext->getRequest()->getArgumentPrefix();
    113. $arguments = $this->hasArgument('arguments') ? $this->arguments['arguments'] : array();
    114. if ($this->hasArgument('action')) {
    115. $arguments['action'] = $this->arguments['action'];
    116. }
    117. if ($this->hasArgument('format') && $this->arguments['format'] !== '') {
    118. $arguments['format'] = $this->arguments['format'];
    119. }
    120.  
    121. $myArguments['actionArguments'] = $this->arguments['actionArguments']; //mn
    122.  
    123. /**
    124. * Abfrage um bei previous wieder auf die erste Seite zu kommen mn
    125. */
    126.  
    127. if ($this->arguments['arguments']['currentPage'] == NULL) $myPrefix = '';
    128. else $myPrefix = 'tx_myExt_list';
    129.  
    130.  
    131.  
    132. // mn setArguments erweitert
    133. return $uriBuilder
    134. ->reset()
    135. ->setArguments(array($myPrefix => $myArguments['actionArguments'], $argumentPrefix => $arguments))
    136. ->setSection($this->arguments['section'])
    137. ->setAddQueryString(TRUE)
    138. ->setArgumentsToBeExcludedFromQueryString(array($argumentPrefix, 'cHash'))
    139. ->setFormat($this->arguments['format'])
    140. ->build();
    141. }
    142. }
    143.  
    144. ?>

  • mimaxx mimaxx
    Jedi-Ritter
    1 x
    144 Beiträge
    1 Hilfreiche Beiträge
    15. 08. 2012, 13:42

    Hier sind nochmal alle Änderungen die ich vorgenommen habe für mich läuft es erstmal soweit. Aber ich bin immer offen für Verbesserungsvorschläge gibt sicher vieles eleganter zu lösen.

    Diese beiden Probleme stören noch am meisten

    ToDo
    [B]-> $myPrefix = 'tx_myExt_list' nicht dynamisch in der LinkViewHelper.php
    -> Paginate und LinkViewHelper wie bei news in die Extension einbinden damit der Core nicht verändert wird
    [/B]

    Dateien:
    fluid\Classes\ViewHelpers\Widget\LinkViewHelper.php
    fluid\Classes\ViewHelpers\Widget\PaginateViewHelper.php
    fluid\Classes\ViewHelpers\Widget\Controller\PaginateController.php
    fluid\Resources\Private\Templates\ViewHelpers\Widget\Paginate\index.html

    Eigene Extension
    my_ext\Classes\Controller\MyController.php
    my_ext\Resources\Private\Templates\My\List.html

    fluid\Classes\ViewHelpers\Widget\LinkViewHelper.php
    -> registerArgument('actionAgruments...
    -> setArguments Erweitern
    ----------------------------------------------------

    1. public function initializeArguments() {
    2. ...
    3. $this->registerArgument('actionArguments', 'string', 'individueller Seitenfilter'); //mn
    4. }
    5.  
    6. ...
    7.  
    8. protected function getWidgetUri() {
    9.  
    10. ...
    11.  
    12. $myArguments['actionArguments'] = $this->arguments['actionArguments']; //mn
    13.  
    14. /**
    15. * Abfrage um bei previous wieder auf die erste Seite zu kommen mn
    16. */
    17.  
    18. if ($this->arguments['arguments']['currentPage'] == NULL) $myPrefix = '';
    19. else $myPrefix = 'tx_myext_list';
    20.  
    21.  
    22.  
    23. // mn setArguments erweitert
    24. return $uriBuilder
    25. ->reset()
    26. ->setArguments(array($myPrefix => $myArguments['actionArguments'], $argumentPrefix => $arguments))
    27. ->setSection($this->arguments['section'])
    28. ->setAddQueryString(TRUE)
    29. ->setArgumentsToBeExcludedFromQueryString(array($argumentPrefix, 'cHash'))
    30. ->setFormat($this->arguments['format'])
    31. ->build();
    32.  
    33. }

    -------------------------------------------------------



    fluid\Classes\ViewHelpers\Widget\Controller\PaginateController.php
    -------------------------------------------------------
    1. public function indexAction($currentPage = 1) {
    2.  
    3. ...
    4.  
    5. $this->view->assign('filter', $this->widgetConfiguration['filter']); //mn
    6. }

    -------------------------------------------------------




    fluid\Classes\ViewHelpers\Widget\PaginateViewHelper.php
    -------------------------------------------------------
    1. ...
    2. /**
    3. * Arguments Initialization
    4. * mn
    5. */
    6. public function initializeArguments() {
    7. $this->registerArgument('filter', 'string', 'Seitenfilter', FALSE);
    8. }
    9. ...

    -------------------------------------------------------

    fluid\Resources\Private\Templates\ViewHelpers\Widget\Paginate\index.html
    -------------------------------------------------------

    1. <f:if condition="{configuration.insertAbove}">
    2. <f:render section="paginator" arguments="{pagination: pagination, filter: filter}" />
    3. </f:if>
    4.  
    5. <f:renderChildren arguments="{contentArguments}" />
    6.  
    7. <f:if condition="{configuration.insertBelow}">
    8. <f:render section="paginator" arguments="{pagination: pagination, filter: filter}" />
    9. </f:if>
    10.  
    11. ...
    12.  
    13. <f:widget.link arguments="{currentPage: pagination.previousPage}" actionArguments="{filter}">previous</f:widget.link>
    14. ...
    15. <f:widget.link arguments="{currentPage: pagination.nextPage}" actionArguments="{filter}" >next</f:widget.link>
    16. ...

    -------------------------------------------------------

    my_ext\Resources\Private\Templates\My\List.html
    -------------------------------------------------------

    1. ...
    2. <f:widget.paginate objects="{artikels}" as="paginateArtikels" filter="{searchFilter: searchFilter}" configuration="{itemsPerPage: 20, forcedNumberOfLinks:0}" >
    3. ...

    -------------------------------------------------------

    my_ext\Classes\Controller\MyController.php
    -------------------------------------------------------

    1. public function listAction($demand = NULL, $demandurl = NULL) {
    2. if($this->request->hasArgument('searchFilter')) {
    3. $demandurl = $this->request->getArguments();
    4. $searchFilter['sArtikelnr'] = $demandurl['searchFilter']['sArtikelnr'];
    5. ...
    6. }
    7. if($demand !== NULL) {
    8. $searchFilter['sArtikelnr'] = $demand->getSearchArtikelnr();
    9. ...
    10. }
    11.  
    12. $this->view->assign('artikels', $this->artikelRepository->findDemand($demand, $demandurl));
    13. $this->view->assign('searchFilter', $searchFilter);
    14. }

    -------------------------------------------------------

  • hkuesters hkuesters
    TYPO3-Anwärter
    1 x
    5 Beiträge
    1 Hilfreiche Beiträge
    24. 09. 2012, 10:00

    Hallo zusammen!

    Hat leider länger keine Zeit, da noch mal ranzugehen.
    Besten Dank mimaxx für Deine detaillierte Darstellung. Ich will nun einen offenen Punkt aufgreifen und ergänzen. Nämlich:
    Wie integriere ich den Fluid-Paginator in die eigene Extension, damit er aus dem Core rauskommt und Anpassungen update-sicher sind?!

    Dazu kopiere ich die Original-Paginator-Dateien und baue die Kopien in meine Extension als eigenen ViewHelper ein, um sie dann dort ändern zu können.

    Folgende drei Dateien aus Fluid sind betroffen:
    1. ...sysext\fluid\Classes\ViewHelpers\Widget\PaginateViewHelper.php
    2. ...sysext\fluid\Classes\ViewHelpers\Widget\Controller\PaginateController.php
    3. ...sysext\fluid\Resources\Private\Template\ViewHelpers\Widget\Paginate\Index.html

    Um Verwechslungen zu vermeiden, habe ich den ViewHelper bei mir umbenannt in "Seitenzaehler"
    Neue Speicherorte sind dann:
    zu 1: ... ext\myextension\Classes\ViewHelpers\Widget\SeitenzaehlerViewHelper.php
    zu 2: ... ext\myextension\Classes\ViewHelpers\Widget\Controller\SeitenzaehlerController.php
    zu 3: ... ext\myextension\Resources\Private\Templates\ViewHelpers\Widget\Seitenzaehler\Index.html

    Im nächsten Schritt müssen die Dateien 1 und 2 angepasst werden:
    In Datei 1 "SeitenzaehlerViewHelper.php" sind folgende Änderungen erforderlich:
    Zu einen muss der Klassenname angepasst werden.
    Neu heißt er dann in Zeile 51:

    1. class Tx_MyExtension_ViewHelpers_Widget_SeitenzaehlerViewHelper extends Tx_Fluid_Core_Widget_AbstractWidgetViewHelper
    .
    Desweiteren muss der Bezug zum Controller angepasst werden in Zeile 64:
    Neu heißt er dann in Zeile 64:
    1. public function injectController(Tx_MyExtension_ViewHelpers_Widget_Controller_SeitenzaehlerController $controller) {

    Achtung: Auch in den Kommentaren Zeilen 56 und 61 ist diese Anpassung notwendig!

    In Datei 2 "SeitenzaehlerController.php" muss ebenfalls der Klassenname angepasst werden:
    Neu also:

    1. class Tx_MyExtension_ViewHelpers_Widget_Controller_SeitenzaehlerController extends Tx_Fluid_Core_Widget_AbstractWidgetController {...

    In Datei 3 sind zunächst keine Änderungen erforderlich!

    Im nächsten Schritt muss ich nun in meiner Extension den neuen ViewHelper einbinden:
    Dazu deklariere ich zunächst den Namespace durch: {namespace ns=Tx_MyExtension_ViewHelpers}

    Und dann kann ich die bisherige Art, den Paginator aufzurufen, austauschen. Aus dem bisherigen
    ALT: [b]f:widget.paginate [/b]
    wird nun
    NEU: [b]sk:widget.seitenzaehler[/b]

    Von da aus habe ich nun die Möglichkeit, den Paginator für meine Extension anzupassen, wie mimaxx das hier ja gut beschrieben hat!

  • mimaxx mimaxx
    Jedi-Ritter
    0 x
    144 Beiträge
    1 Hilfreiche Beiträge
    26. 09. 2012, 15:48

    Hi,

    danke für das kleine Tutorial, werde ich die Tage mal testen!

    Gruß
    mimaxx

  • SabineW SabineW
    T3PO
    0 x
    25 Beiträge
    0 Hilfreiche Beiträge
    15. 08. 2013, 11:35

    Ganz herzlichen Dank an mimaxx und hkuesters! Der Thread hat mir ungemein weitergeholfen,

    Sabine

  • bennof bennof
    TYPO3-Anwärter
    1 x
    5 Beiträge
    1 Hilfreiche Beiträge
    24. 04. 2014, 14:58

    Hallo ihr,
    ich hatte eben dasselbe Problem und es gelöst, ohne das paginate widget umzubauen:
    Ich speichere die Suchanfrage ($demand) im Controller einfach in die aktuelle Session und lade sie beim nächsten Aufruf wieder (also z.B. beim Blättern mit dem paginate widget oder beim Sortieren).

    Einen Session-Handler für Typo3 gibts z.B. auf http://stackoverflow.com/questions/17440847/typo3-extbase-set-and-get-values-from-session oder auf http://www.benny-vs-web.de/typo3/extbase-session-handler-selbstgebastelt/

    Für das Demand-Objekt (welches alle relevanten Felder des Suchformulars enthält, z.B. keyword, topic, date...) erstellte ich ein Repository mit Session-Handling:

    1. class DemandRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
    2.  
    3. /**
    4. * The session handler
    5. * @var \Vendor\MyExtension\Service\SessionHandler
    6. * @inject
    7. */
    8. protected $sessionHandler;
    9.  
    10. /**
    11. * Returns the object stored in the user´s PHP session
    12. * @return \Vendor\MyExtension\Domain\Model\Demand the stored Object
    13. */
    14. public function findBySession() {
    15. return $this->sessionHandler->restoreFromSession('demand');
    16. }
    17.  
    18. /**
    19. * Writes the object into the PHP session
    20. * @var \Vendor\MyExtension\Domain\Model\Demand $demand
    21. * @return \Vendor\MyExtension\Domain\Model\Demand $this
    22. */
    23. public function writeToSession(\Vendor\MyExtension\Domain\Model\Demand $demand) {
    24. $this->sessionHandler->writeToSession($demand, 'demand');
    25. return $this;
    26. }
    27.  
    28. /**
    29. * Cleans up the session: removes the stored object from the PHP session
    30. * @return \Vendor\MyExtension\Domain\Model\Demand $this
    31. */
    32. public function cleanUpSession() {
    33. $this->sessionHandler->cleanUpSession();
    34. return $this;
    35. }
    36.  
    37. }

    Im Controller dann die Session-Daten laden und wieder speichern:

    1. class MyController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
    2.  
    3. /**
    4. * myObjectRepository
    5. *
    6. * @var \Vendor\MyExtension\Domain\Repository\MyObjectRepository
    7. * @inject
    8. */
    9. protected $myObjectRepository;
    10.  
    11. /**
    12. * demandRepository
    13. *
    14. * @var \Vendor\MyExtension\Domain\Repository\DemandRepository
    15. * @inject
    16. */
    17. protected $demandRepository;
    18.  
    19. /**
    20. * action list
    21. *
    22. * @param \Vendor\MyExtension\Domain\Model\Demand $demand (optional)
    23. * @return void
    24. */
    25. public function listAction(\Vendor\MyExtension\Domain\Model\Demand $demand = NULL) {
    26.  
    27. //-- Get demand for filtering results
    28. if(!$demand) {
    29. // If filters should not be reset: find last demand stored in session
    30. if (!$this->request->hasArgument('resetFilters')) {
    31. $demand = $this->demandRepository->findBySession();
    32. }
    33. // If no demand is set yet, create new one
    34. if (!$demand) {
    35. $demand = new \Vendor\MyExtension\Domain\Model\Demand;
    36. // or $demand = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('\\Vendor\\MyExtension\\Domain\\Model\\Demand');
    37. }
    38. }
    39. //-- Perform validation of demand, set defaults, etc.
    40. // ...
    41.  
    42. //-- Get data from repository
    43. if ($demand) {
    44. // Store current demand in session
    45. $this->demandRepository->writeToSession($demand);
    46. // Get demanded objects from repository
    47. $myObjects = $this->myObjectRepository->findDemanded($demand, $currentSorting);
    48. }
    49. else {
    50. // No filters set: get all objects
    51. $myObjects = $this->myObjectRepository->findAll();
    52. }
    53.  
    54. //-- Assign data to view
    55. $this->view->assign('demand', $demand);
    56. $this->view->assign('myObjects', $myObjects);
    57. }
    58. }

    Die Zeile "if (!$this->request->hasArgument('resetFilters')) {" ermöglicht dabei ein parameter gesteuertes reset aller Suchfilter, falls gewünscht. In Fluid sieht das dann so aus:

    1. <f:link.page additionalParams="{tx_vendor_myextension: {resetFilters: 1}}"> New search </f:link.page>

    Gruss,
    Benno

  • ToBe ToBe
    Padawan
    0 x
    60 Beiträge
    0 Hilfreiche Beiträge
    11. 06. 2014, 12:13

    Hallo zusammen :-)

    also entweder über die Session wie bennof vorgeschlagen hat oder einen eigenen View-Helper schreiben.
    Im Core würde ich nicht rumfummeln.

    Oder Fluid Updaten - ab Version 6.1 (glaub ich) gibt es das Attribut "additionalParams" für das Paginator-Widget.

    UPDATE: oder wer eine ältere Version (wie ich gerade mit 1.4) der kann auch das Attribut "actionArguments" verwenden.

    Grüße
    Tobi

  • WebBe WebBe
    TYPO3-Anwärter
    0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    03. 06. 2015, 10:59

    Hallo Leute

    Gibt einen ganz einfachen Weg dieses Problem zu lösen (löst auch gleich das Problem mit Detailanischt übergabe des Filters in die Listansicht).

    Einfach eine schöne Initalize Action einbauen udn das Objekt nachbauen

    1. /**
    2.   * initialize list action
    3.   *
    4.   * @return void
    5.   */
    6. public function initializeListAction() {
    7. if ($this->arguments->hasArgument('filter')) {
    8. $this->arguments->getArgument('filter')->getPropertyMappingConfiguration()->allowProperties('property1','property2','property3','property4');
    9. $this->arguments->getArgument('filter')->getPropertyMappingConfiguration()->setTypeConverterOption('TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter', \TYPO3\CMS\Extbase\Property\TypeConverter\PersistentObjectConverter::CONFIGURATION_CREATION_ALLOWED, TRUE);
    10. }
    11. }

    property 4 ist bei mir ein String Input.

    LG