[pw] Apostrof foutje in pricewatch

Pagina: 1
Acties:

Acties:
  • +1 Henk 'm!

  • MadMarky
  • Registratie: Augustus 2001
  • Niet online

MadMarky

Begint eer ge bezint

Topicstarter
In categorieën met een apostrof in de naam wordt deze verkeerd weergegeven in de navigatie. In dit geval heb ik compactcamera's als voorbeeld genomen:
Afbeeldingslocatie: https://tweakers.net/i/bAmn3THH1AhCqXEu3RkPAxAy5BQ=/800x/filters:strip_icc():strip_exif()/f/image/3pfJpSk79r9HKnK5YKRv5hQ4.jpg?f=fotoalbum_large

Platform: android/chrome

🖥️ | 🚗


Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 23-05 13:39
Liep hier ook tegenaan, voorbeeld link: pricewatch: Nikon D3200 Zwart

Acties:
  • +3 Henk 'm!

  • DaFeliX
  • Registratie: December 2002
  • Laatst online: 23-05 13:02

DaFeliX

Tnet Devver
@MadMarky Bedankt voor 't melden! Ik heb een fix klaarstaan, die wordt nu gedeployed en komt zo online.

Achtergrond van de bug:

We maken gebruik van Twig voor onze templates. Het mooie van Twig tov PHP is dat Twig zaken standaard "escaped" afhankelijk van de context. Zo voorkom je dat als je iets toont waar HTML-achtige tekens instaan, dat deze als HTML worden geïnterpreteerd, en dus je pagina stukmaken.

Dit escapen doet Twig slim: Als er tekst staat die al geëscaped is, dan doet hij dat niet nogmaals. Daarmee voorkom je normaalgesproken dit soort situaties waarin HTML tweemaal is geëscaped.

Binnen Twig kun je text ook door verschillende filters halen, en elk filter kan dan aangeven of de tekst 'veilig' is of niet. Als een tekst 'veilig' is, zal Twig het niet nogmaals escapen.

De categorienaam die hier getoond word, staat in de database opgeslagen en begint met een hoofdletter (dus "Compactcamera's"). Deze categorienaam wordt geëscaped doorgegeven aan Twig, en is dus "veilig".

Nu dan de bug: We willen hier een text tonen ala "Alle + <categorie>". Als je dat doet, zou het resultaat worden "Alle Categorienaam", met de categorie beginnend met een hoofdletter. Dat is slordig, dus passen we een filter toe dat de eerste letter naar onderkast zet, zodat er "Alle categorienaam" staat. Het probleem met toepassen van een filter, is dat hij de "veilig" markering verliest die eerder was aangegeven. De categorienaam die dus "veilig" was, wordt door het toepassen van dit filter weer "onveilig", waardoor Twig escaping toepast op een tekst die al geëscaped was.

Normaal pas je escaping pas op 't allerlaatste moment toe om dit soort problemen te voorkomen, alleen is het op deze positie niet mogelijk om de onderkast-filter eerder toe te passen. Ik heb 't nu zo aangepast dat hij na het toepassen van 't onderkast filter, de text weer als 'veilig' markeert waardoor 't probleem opgelost is.

NB: Na het typen van dit verhaal is de pipeline al geslaagd, de fix staat dus live :)

Einstein: Mijn vrouw begrijpt me niet


Acties:
  • 0 Henk 'm!

  • MadMarky
  • Registratie: Augustus 2001
  • Niet online

MadMarky

Begint eer ge bezint

Topicstarter
@DaFeliX heldere uitleg :)
Wat me wel opviel is dat ik het enkel in de mobiele browser zag, dus ik neem aan dat Twig niet voor de desktop site wordt gebruikt of daar weer aparte settings heeft?

🖥️ | 🚗


Acties:
  • 0 Henk 'm!

  • DaFeliX
  • Registratie: December 2002
  • Laatst online: 23-05 13:02

DaFeliX

Tnet Devver
MadMarky schreef op dinsdag 15 juni 2021 @ 09:40:
@DaFeliX heldere uitleg :)
Wat me wel opviel is dat ik het enkel in de mobiele browser zag, dus ik neem aan dat Twig niet voor de desktop site wordt gebruikt of daar weer aparte settings heeft?
deze specifieke string wordt idd alleen op smallere schermen getoond. De categorienaam wordt wel op desktop getoond, maar dan aan 't begin van de zin waardoor die wel met een hoofdletter mag beginnen en dus niet dat filter wordt gebruikt :)

Einstein: Mijn vrouw begrijpt me niet