[Form] addFormContentBeforeMarker

Das Forum ist für das Melden von Bugs gedacht. // This forum is intended to report bugs with the APF.
Gesperrt
Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

[Form] addFormContentBeforeMarker

Beitrag von Coach83 » 20.01.2012, 09:07:19

Guten Morgen,

ich hab ein Problem. Mein Formular - stark gekürzt:

Code: Alles auswählen

<core:addtaglib namespace="tools::form::taglib" prefix="html" class="form" />
<html:form name="TeilnehmenFormular">
     <form:marker name="AnswerList" />
</html:form>
und mein Controller:

Code: Alles auswählen

$formAdd = &$this->getForm('TeilnehmenFormular');
$formAdd->addFormContentBeforeMarker('AnswerList','Liste');
Ich erhalte so folgenden Fehler:
Only variable references should be returned by reference
Number: 8
File: /var/www/vhosts/suelzparty.com/httpdocs/apps/tools/form/taglib/html_taglib_form.php
Line: 477
Kann mir jemand sagen wo der Fehler liegt?

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: [Form] addFormContentBeforeMarker

Beitrag von MrNiceGuy » 20.01.2012, 09:49:13

Das klingt fast so, als wolle das Script eine Variable als zweiten Parameter haben. Wenn dem so ist kann man natürlich keinen string direkt übergeben. Versuch mal den Text in eine Variable zu packen und die dann zu übergeben. Habe gerade. Keinen blick auf die Sources vom APF, aber das musste passen.
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Re: [Form] addFormContentBeforeMarker

Beitrag von Coach83 » 20.01.2012, 10:01:05

Also so?

Code: Alles auswählen

$test = 'AnswerList';
$formAdd->addFormContentBeforeMarker('AnswerList', $test);
bringt aber auch nix ...
die ObjectId des Formulars kann ich via "echo $formAdd->getObjectId();" ausgeben ...

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: [Form] addFormContentBeforeMarker

Beitrag von MrNiceGuy » 20.01.2012, 12:00:15

So, jetzt kann ich auch wieder in die Quellcodes schauen. Offensichtlich liegt der Fehler in der Methode html_taglib_form::getMarker(), da hier zwar angedeutet wird, dass eine Referenz zurückgegeben werden soll jedoch keine Rückgabe (return) erfolgt. Ich vermute daher, dass hier der Hase im Pfeffer liegt!?

Versuch mal in der Datei tools::form::taglib::html_taglib_form.php in Zeile 470 (+-) vor das $this->getChildNode() ein return zu setzen und versuche es dann nochmal. Sollte das klappen ist das ein Bug, der gefixed werden muss.
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Re: [Form] addFormContentBeforeMarker

Beitrag von Coach83 » 20.01.2012, 15:35:34

Code: Alles auswählen

protected function &getMarker($markerName) {
      try {
         return $this->getChildNode('name', $markerName, 'form_taglib_marker');
      }
hat auch keinen Erfolg gebracht :?

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: [Form] addFormContentBeforeMarker

Beitrag von Screeze » 20.01.2012, 15:47:14

Nimm mal

Code: Alles auswählen


         return $tmp = $this->getChildNode('name', $markerName, 'form_taglib_marker');
Oder entferne das & vor dem Funktionsname, sollte aufs gleiche raus kommen bei PHP5 oder?

Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Re: [Form] addFormContentBeforeMarker

Beitrag von Coach83 » 20.01.2012, 15:58:41

Ich musste 2x das & entfernen:
Zeile +-267 $marker = $this->getMarker($markerName);
Zeile +-470 return $this->getChildNode('name', $markerName, 'form_taglib_marker');

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: [Form] addFormContentBeforeMarker

Beitrag von MrNiceGuy » 20.01.2012, 16:49:58

Hmm... Kann ich gerade nicht nachvollziehen, warum das so ist, denn getChildNode() sollte bereits eine korrekte Referenz zurückgeben, weshalb das "Durchreichen" im Grunde auch klappen sollte... CHRISTIAN? Wir stehen auf dem Schlauch :D
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: [Form] addFormContentBeforeMarker

Beitrag von MrNiceGuy » 20.01.2012, 17:29:05

Habs gerade bei mir mal getestet mit einem Formular mit Marker und es ging, als ich dann die Sources angeschaut hatte stelle ich fest, dass ich offensichtlich noch eine ältere Version des 1.15er Branches habe, denn die Methode bei mir sieht noch so aus:

Code: Alles auswählen

   protected function &getMarker($markerName) {

      // check, weather the form has children
      if (count($this->__Children) > 0) {

         // have a look at the children
         foreach ($this->__Children as $objectId => $DUMMY) {

            // check, if current children is a marker
            if (get_class($this->__Children[$objectId]) == 'form_taglib_marker') {

               // check, if the name fits the method's argument
               if ($this->__Children[$objectId]->getAttribute('name') == $markerName) {
                  return $this->__Children[$objectId];
               }
            }
         }
      }

      // return null, if no child was found (with a quick hack)
      $null = null;
      return $null;
   }
 
und funktioniert!

Da der Code aber in etwa dem Neuen entspricht verstehe ich es umso weniger. Aber: Warum wird denn das Array als Referenz geladen anstatt wie vorher direkt auf dem Array zu arbeiten (also mit $this->__Children statt $children)?
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: [Form] addFormContentBeforeMarker

Beitrag von dr.e. » 20.01.2012, 22:48:44

Hallo zusammen,

ich habe die Methode refactored, da die neue Methode getChildNode() an sich schon alles liefert, was hier mehrfach implementiert wurde. Es fehlt lediglich in der Methode getMarker() ein return. :?

Fix ist eingecheckt.
Viele Grüße,
Christian

Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Re: [Form] addFormContentBeforeMarker

Beitrag von Coach83 » 21.01.2012, 12:18:54

dann bitte das Thema verschieben *hust* :D

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast