[Frage] Multiple Parameter für eine Selektierung [Gelöst] TYPO3-Version: 6.2.30

  • 0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    24. 01. 2017, 13:11

    Hallo,

    ich versuche seit einiger Zeit eine Art Such- / Selektierungsfunktion für meine Extension zu schreiben. Wenn ich nur einen Suchparameter habe, funktioniert das auch super. Aber wenn ich mehr Parameter (Suchfelder) nutzen möchte, bekomme ich immer nur eine T3-Fehlermeldung

    The argument type for parameter $firstname of method ....\...\Controller\DatamanagementController->findByResultAction() could not be detected.

    Controller Konfig.

    1. /**
    2.   * action findByResult
    3.   * @param string $firstname
    4.   * @param string $lastname
    5.   * @param string $city
    6.   * @return void
    7. */
    8.  
    9. public function findByResultAction($firstname, $lastname, $city) {
    10.  
    11. $firstname = $this->request->getArgument('firstname');
    12. $lastname = $this->request->getArgument('lastname');
    13. $city = $this->request->getArgument('city');
    14.  
    15. $findResult = $this->datamanagementRepository->findByCondition($firstname, $lastname, $city);
    16. $this->view->assign('datamanagement', $datamanagement);
    17.  
    18. }

    Repository Konfig. ...

    1. public function findByCondition($firstname, $lastname, $city) {
    2. $query = $this->createQuery();
    3.  
    4. $query->matching(
    5. $query->logicalAnd(
    6. $query->like('firstname', '%'. $firstname . '%'),
    7. $query->like('lastname', '%'. $lastname . '%'),
    8. $query->like('city', '%'. $city . '%'.)
    9. )
    10. );
    11.  
    12. $query->setOrderings(array('name' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING));
    13. return $query->execute();
    14.  
    15. }

    Hier noch das Formular dazu ...

    1. <f:form action="findByResultForm" additionalAttributes="{role:'form'}">
    2. <div class="form-inline search-view">
    3. <div class="form-group">
    4. Vorname: <f:form.textfield name="firstname" value="{firstname}" class="form-control" placeholder="Vorname eingeben" />
    5. Nachname: <f:form.textfield name="lastname" value="{lastname}" class="form-control" placeholder="Nachname eingeben" />
    6. Stadt: <f:form.textfield name="city" value="{city}" class="form-control" placeholder="Stadt eingeben" />
    7. <f:form.submit value="Suchen!" class="btn-xs btn-primary" />
    8. </div>
    9. </div>
    10. </f:form>

    Was mache ich denn nur falsch? Kann mir hier jemand einen Tipp geben?

    Herzlichen Dank und beste Grüße

  • toifel toifel
    Jedi-Ratsmitglied
    1 x
    831 Beiträge
    96 Hilfreiche Beiträge
    25. 01. 2017, 08:38 - Lösung

    Schmeiss die Parameter mal aus deiner Funktionsdeklaration raus, dann sollte es klappen. Wenn du ein Formular absendest, dann hast du im Controller nur über $this->request Zugriff auf die Formularwerte. Es werden aber keine Formular-Felder direkt an die Action übergeben, deshalb sind $firstname usw. immer leer.

    Das hier sollte im Controller ausreichen:

    1. /**
    2.   * action findByResult
    3.   * @return void
    4. */
    5.  
    6. public function findByResultAction() {
    7. ...
    8. }


  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    1 x
    831 Beiträge
    96 Hilfreiche Beiträge
    25. 01. 2017, 08:38

    Schmeiss die Parameter mal aus deiner Funktionsdeklaration raus, dann sollte es klappen. Wenn du ein Formular absendest, dann hast du im Controller nur über $this->request Zugriff auf die Formularwerte. Es werden aber keine Formular-Felder direkt an die Action übergeben, deshalb sind $firstname usw. immer leer.

    Das hier sollte im Controller ausreichen:

    1. /**
    2.   * action findByResult
    3.   * @return void
    4. */
    5.  
    6. public function findByResultAction() {
    7. ...
    8. }

  • 0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    27. 01. 2017, 20:55

    Jetzt funktioniert es, vielen Dank für deine Hilfe. :)

  • 1