Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

Leerzeichen in Eingabefeldern erlauben #4287

Closed
Babelfisch opened this issue May 8, 2012 · 8 comments
Closed

Leerzeichen in Eingabefeldern erlauben #4287

Babelfisch opened this issue May 8, 2012 · 8 comments
Labels
Milestone

Comments

@Babelfisch
Copy link

Durch $varInput = trim($varInput) in der Widget.php ist es ja seit einiger Zeit nicht mehr möglich, reine Leerzeichen oder Text mit umschließenden Leerzeichen zu verarbeiten. Als Standardverhalten ist das ja ok, es sollte im DCA jedoch irgendein Flag geschaffen werden, um den Text „roh“ – also ohne Änderungen – speichern zu können, ohne gleich komplett ein eigenes Widget bauen zu müssen.

Im aktuellen Fall habe ich eine Erweiterung zum Suchern und Ersetzen in Inhaltselementen. Dort sind Leerzeichen in der Eingabe durchaus gewünscht, um bspw. ' …' mit 'nbsp;…' zu ersetzen oder falsche nbsp’s mit einem Leerzeichen.

Habe ich hier nur ein Flag übersehen und wenn nicht, könnte man nicht ein solches einführen?

@Babelfisch
Copy link
Author

Darf ich mal vorsichtig nachfragen, wie es hiermit aussieht? Ich will ja nicht drängeln aber für mich und meine Erweiterungen ist das Thema schon wichtig.

@Babelfisch
Copy link
Author

Irgendwas neues? Ich habe jetzt hier die nächste Erweiterung, die sich nicht realisieren lässt, weil dort auch mal ein Leerzeichen am Anfang oder Ende vom Text stehen muss.

Kann man nicht einfach ein standardmäßiges trim-Attribut beim eval einführen, welches sich bei Bedarf deaktivieren lässt?

@leofeyer
Copy link
Member

Außer Dir scheint niemand dieses Problem zu haben. Eventuell übersiehst Du einen alternativen Lösungsweg?

@Babelfisch
Copy link
Author

Mag ja sein, dass außer mir niemand eine Suchen- & Ersetzen-Erweiterung schreibt oder wie bei AutoLayout beliebige Texte (inkl. Leerzeichen) benötigt. Einen alternativen Lösungsweg habe ich schon lange gesucht aber da trim nun mal hier und (doppelt, da in Widget schon getrimt wird) hier hart codiert ist, fällt mir jetzt nur noch der Weg ein, die Core-Methode Widget::validator und das Widget selbst zu überschreiben und das ist schon etwas heftig.

Mein Vorschlag wäre einfach ein zusätzliches eval-Attribut wie bspw. doNotTrim einzuführen. In der Widget.php dann einfach dieses im Setter mit setzen:

case 'doNotTrim':
  $this->arrAttributes[$strKey] = $varValue;
  break;

… und im Validator auswerten:

if (!isset($this->arrAttributes['doNotTrim']) || !$this->arrAttributes['doNotTrim'])
{
    $varInput = trim($varInput);
}

Jetzt in TextField:: validator noch das doppelte trim raus und alles funktioniert wie gehabt und wer mag, kann Trim be Bedarf deaktivieren:

'eval'  => array('doNotTrim' => true)

@leofeyer
Copy link
Member

Über einen save_callback ließe sich das auch lösen, oder?

@leofeyer leofeyer modified the milestones: 3.4.0, 3.x.x Jul 24, 2014
@Babelfisch
Copy link
Author

Nicht wirklich sauber, da der save_callback erst später ausgelöst wird und dort die Leerzeichen schon nicht mehr da sind.

Der einzige Weg wäre dann noch über Input::post('feld') den Wert direkt auszulesen aber das hieße dann auch, sämtliche Eingabeüberprüfungen noch mal selbst zu machen. Fände ich jetzt nicht wirklich eine gute und saubere Lösung.

@leofeyer
Copy link
Member

Implementiert in fe1f0e9.

@Babelfisch
Copy link
Author

Danke!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants