Zum Inhalt springen

Typo3 6.2 @validate not working

Erstellt am 7. April 2015 · 6 Antworten · letzte Antwort am 9. April 2015

Tags: Extbase, TYPO3 6.x, Frage

ironpfu ·

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:

class Klasse1 extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
         /**
	 * name
	 *
	 * @var string
         * @validate NotEmpty
         * @validate Text
         * @validate StringLength(minimum=3, maximum=50)
         * 
	 */
	protected $name = '';

       /**
	 * Returns the name
	 *
	 * @return string $name
	 */
	public function getName() {
		return $this->name;
	}

	/**
	 * Sets the name
	 *
	 * @param string $name
	 * @return void
	 */
	public function setName($name) {
		$this->name = $name;
	}
}

Form Error:

<f:form.validationResults>
	<f:if condition="{validationResults.flattenedErrors}">
		<div class="alert alert-error">
			<button type="button" class="close" data-dismiss="alert">×</button>
			<h4 class="alert-heading">Error!</h4>
			<f:for each="{validationResults.flattenedErrors}" key="propertyName" as="errorsForProperty">
				<f:for each="{errorsForProperty}" as="error">
					<p>
                                            <f:translate key="{propertyName}.{error.code}" default="{propertyName}: {error.message} (#{error.code})" />
                                        </p>
				</f:for>
			</f:for>
		</div>
	</f:if>
</f:form.validationResults>

TCA:

'name' => array(
			'exclude' => 1,
			'label' => 'LLL:EXT:hbm/Resources/Private/Language/locallang_db.xlf:tx_hbm_domain_model_klasse1.name',
			'config' => array(
				'type' => 'input',
				'size' => 30,
				'eval' => 'trim,required'
			),
		),
ironpfu ·

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

/**
 * Tags
 */
class Tags extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {

	/**
	 * name
	 *
	 * @var string
	 * @validate NotEmpty
         * @validate StringLength(minimum=3, maximum=50) 
	 */
	protected $name = '';

	/**
	 * Returns the name
	 *
	 * @return string $name
	 */
	public function getName() {
		return $this->name;
	}

	/**
	 * Sets the name
	 *
	 * @param string $name
	 * @return void
	 */
	public function setName($name) {
		$this->name = $name;
	}

}
jenses ·
class Klasse1 extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
         /**
	 * name
	 *
	 * @var \string
         * @validate NotEmpty
         * @validate Text
         * @validate StringLength(minimum=3, maximum=50)
         * 
	 */
	protected $name;
 
       /**
	 * Returns the name
	 *
	 * @return \string $name
	 */
	public function getName() {
		return $this->name;
	}

	/**
	 * Sets the name
	 *
	 * @param \string $name
	 * @return void
	 */
	public function setName($name) {
		$this->name = $name;
	}
}
ironpfu ·

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 · · Beste Antwort

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

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

nachdem ich es nun wie folgt geändert habe funktioniert es:

<f:form.textfield property="user" value="{user.username}" disabled="1"/><br />

Ist dies ein Bug oder ein Feature?

jenses ·
ironpfu schrieb

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

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

nachdem ich es nun wie folgt geändert habe funktioniert es:

<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 Buch, und arbeite zumindestens die Grundlagen durch,
damit etwas Basiswissen vorhanden ist...