[Frage] Typo3 6.2 @validate not working [Gelöst] TYPO3-Version: 6.2.7

  • ironpfu ironpfu
    R2-D2
    0 x
    99 Beiträge
    1 Hilfreiche Beiträge
    07. 04. 2015, 20:56

    Hallo zusammen,

    als Extbase Neuling steht man gerade am Anfang vor sehr vielen Bäumen....
    Ich habe zwei Klassen in einer wird die Validierung im Model perfekt durchgeführt und im FE entsprechend über Fluid gerendert.

    In der u.a. Klasse funktioniert dies nicht.
    Die Daten werden direkt in der DB gespeichert und die CreateAction leitet ohne Fehler weiter...
    Wo kann da der Fehler liegen?

    Model:

    1. class Klasse1 extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    2. /**
    3. * name
    4. *
    5. * @var string
    6.   * @validate NotEmpty
    7.   * @validate Text
    8.   * @validate StringLength(minimum=3, maximum=50)
    9.   *
    10. */
    11. protected $name = '';
    12.  
    13. /**
    14. * Returns the name
    15. *
    16. * @return string $name
    17. */
    18. public function getName() {
    19. return $this->name;
    20. }
    21.  
    22. /**
    23. * Sets the name
    24. *
    25. * @param string $name
    26. * @return void
    27. */
    28. public function setName($name) {
    29. $this->name = $name;
    30. }
    31. }

    Form Error:

    1. <f:form.validationResults>
    2. <f:if condition="{validationResults.flattenedErrors}">
    3. <div class="alert alert-error">
    4. <button type="button" class="close" data-dismiss="alert">×</button>
    5. <h4 class="alert-heading">Error!</h4>
    6. <f:for each="{validationResults.flattenedErrors}" key="propertyName" as="errorsForProperty">
    7. <f:for each="{errorsForProperty}" as="error">
    8. <p>
    9. <f:translate key="{propertyName}.{error.code}" default="{propertyName}: {error.message} (#{error.code})" />
    10. </p>
    11. </f:for>
    12. </f:for>
    13. </div>
    14. </f:if>
    15. </f:form.validationResults>

    TCA:

    1. 'name' => array(
    2. 'exclude' => 1,
    3. 'label' => 'LLL:EXT:hbm/Resources/Private/Language/locallang_db.xlf:tx_hbm_domain_model_klasse1.name',
    4. 'config' => array(
    5. 'type' => 'input',
    6. 'size' => 30,
    7. 'eval' => 'trim,required'
    8. ),
    9. ),

  • ironpfu ironpfu
    R2-D2
    0 x
    99 Beiträge
    1 Hilfreiche Beiträge
    08. 04. 2015, 18:12 - Lösung

    Soooo jetzt hab ich den Fehler gefunden:
    Im Fluid Template war folgendes Feld enthalten

    1. <f:form.hidden property="user" value="{user}" />

    nachdem ich es nun wie folgt geändert habe funktioniert es:
    1. <f:form.textfield property="user" value="{user.username}" disabled="1"/><br />

    Ist dies ein Bug oder ein Feature?


  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    08. 04. 2015, 10:35

    Versuchs mal nur mit protected $name; in Zeile 11.

  • ironpfu ironpfu
    R2-D2
    0 x
    99 Beiträge
    1 Hilfreiche Beiträge
    08. 04. 2015, 12:07

    Danke für die schnelle Antwort.
    Hat leider keine Auswirkung.
    In meiner zweiten Klasse funktioniert die Validierung mit folgender Anotation:

    1. /**
    2.  * Tags
    3.  */
    4. class Tags extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    5.  
    6. /**
    7. * name
    8. *
    9. * @var string
    10. * @validate NotEmpty
    11.   * @validate StringLength(minimum=3, maximum=50)
    12. */
    13. protected $name = '';
    14.  
    15. /**
    16. * Returns the name
    17. *
    18. * @return string $name
    19. */
    20. public function getName() {
    21. return $this->name;
    22. }
    23.  
    24. /**
    25. * Sets the name
    26. *
    27. * @param string $name
    28. * @return void
    29. */
    30. public function setName($name) {
    31. $this->name = $name;
    32. }
    33.  
    34. }

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    08. 04. 2015, 15:44

    1. class Klasse1 extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    2. /**
    3. * name
    4. *
    5. * @var \string
    6.   * @validate NotEmpty
    7.   * @validate Text
    8.   * @validate StringLength(minimum=3, maximum=50)
    9.   *
    10. */
    11. protected $name;
    12.  
    13. /**
    14. * Returns the name
    15. *
    16. * @return \string $name
    17. */
    18. public function getName() {
    19. return $this->name;
    20. }
    21.  
    22. /**
    23. * Sets the name
    24. *
    25. * @param \string $name
    26. * @return void
    27. */
    28. public function setName($name) {
    29. $this->name = $name;
    30. }
    31. }

  • ironpfu ironpfu
    R2-D2
    0 x
    99 Beiträge
    1 Hilfreiche Beiträge
    08. 04. 2015, 17:00

    Hi
    auch die Änderung der Annotation bringt nix.
    (Ich verstehe auch ganz ehrlich gesagt nicht den Unterschied zwischen @var String, @var string oder @var \string)

    Ich verwende Typo3 6.2.5 und die Validierung in der Klasse "Tags" funktioniert bereits.
    Hat jemand einen Tipp wo ich das debuggen ansetzten könnte?
    Danke inzwischen für die Rückmeldungen...

  • ironpfu ironpfu
    R2-D2
    0 x
    99 Beiträge
    1 Hilfreiche Beiträge
    08. 04. 2015, 18:12

    Soooo jetzt hab ich den Fehler gefunden:
    Im Fluid Template war folgendes Feld enthalten

    1. <f:form.hidden property="user" value="{user}" />

    nachdem ich es nun wie folgt geändert habe funktioniert es:
    1. <f:form.textfield property="user" value="{user.username}" disabled="1"/><br />

    Ist dies ein Bug oder ein Feature?

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    09. 04. 2015, 09:22

    Zitiert von: ironpfu
    Soooo jetzt hab ich den Fehler gefunden:
    Im Fluid Template war folgendes Feld enthalten
    1. <f:form.hidden property="user" value="{user}" />

    nachdem ich es nun wie folgt geändert habe funktioniert es:
    1. <f:form.textfield property="user" value="{user.username}" disabled="1"/><br />

    Ist dies ein Bug oder ein Feature?

    Ein Bug, vor dem Bildschirm sitzend :x
    user ist ein Objekt mit vielen Eigenschaften, u.a. username,
    das kann man natürlich nicht in ein Formularfeld packen.

    Tu dir einen Gefallen und leiste dir dieses [url=http://www.amazon.de/TYPO3-Extbase-Moderne-Extension-Entwicklung-Fluid/dp/3955390705/ref=sr_1_1?ie=UTF8&qid=1428563944&sr=8-1&keywords=typo3+extbase]Buch[/url], und arbeite zumindestens die Grundlagen durch,
    damit etwas Basiswissen vorhanden ist...

  • 1