![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Hej mam takie banalne pytanie.
Mam zmienną:
Próbuję w Symfony (a dokładniej w widoku Twig wyświetlić to jako Witaj świecie Tak więc zrobiłem coś takiego
Oczywiście nie działa - pierwsza litera nie jest zmieniana na wielką, gdy string zaczyna się od znacznika html - można to jakoś obejść w Twig, czy muszę się bawić w obrobienie stringa już na poziomie kontrolera? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 122 Dołączył: 17.07.2005 Skąd: P-na Ostrzeżenie: (0%) ![]() ![]() |
css, będzie prościej
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Wolę nie, bo Google pewnie kontroluje także poprawność gramatyczną/ortograficzną zdań (albo będzie w przyszłości). Na potrzebę projektu obejście znalazłem, bo akurat ten fragment mogłem zmienić na poziomie bazy danych - bardziej pytanie z ciekawości, bo aż mi się nie chcę wierzyć, że w Twig takiego czegoś nie da się zrobić.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
OOTB nie ma czegoś takiego co raczej nie jest niczym dziwnym. Przecież by zrobić coś takiego porządnie potrzebny byłby jakiś przynajmniej parser HTML/XML.
PS. Google interpretuje też CSS. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Oj nie jest to specjalnie trudne - przecież w Twigu są funkcje usuwające html ze stringa, więc nie ma problemu wykorzystać je do zignorowania znaczników przy działaniu danej funkcji.
Jako ciekawostka to już np. z takim stringiem "{cos"|capitalize sobie Twig radzi i zamienia na "{Cos" - przypuszczam, że funkcja jest tak napisana, że szuka pierwszej litery w stringu - skoro potrafi pomijać "nielitery" to i znaczniki html powinna móc pomijać. Było nie było jest to w końcu język ułatwiający pracę z szablonami, a pewnie często się zdarza jakiś znacznik na początku zdania. Oczywiście google rozpoznaje css ale pytanie czy w kontekście gramatyki/ortografii. Raczej nie jest naturalne pisanie długiego tekstu małymi literami i zamiana na zdania za pomocą css. Oczywiście może przesadzam/przeceniam google, ale jednak w tym projekcie zależy mi na seo i nie chcę, żeby google stwierdził że moja strona to jakiś spam. A budowane zdania akurat tworzą długie bloki tekstu. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jesteś pewien, że
Kod {{ "{cos" | capitalize }} fektycznie zwróciło "{Cos", a nie "{cos"? Bo nie powinno: https://github.com/twigphp/Twig/blob/ca76ad.../Core.php#L1298Określenie co jest pierwszym "widzialnym" znakiem jest trudne, zważywszy na to na jak popieprzoną składnię zezwala HTML5 i chcąc to zrobić solidnie wymagany będzie de facto parser, a robiąc byle jak przynajmniej jakaś jego namiastka. Bo przecież skądś musisz, które litery są częścią nazwy elementu, atrybutu, jego wartością albo komentarzem a co jest częścią tekstu (TextNode). 1. Przede wszystkim zadbaj o to by wprowadzane dane były w miarę możliwości poprawne. 2. Twig jakiś specjalnych cudów poza poprawną obsługą kodowania znaków czy kilku pomocniczych funkcji nie zawiera w podstawowym wydaniu i są to głównie nakładki na PHP-owe funkcje. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Sprawdziłem ponownie i faktycznie nie zwrocilo "{Cos" . W projekcie, żeby ładnie wszytko wyglądało mam parser, który używam chyba z 5 razy replace i po drodze "kapitalizuje" kilka stringów i skleja wszystko w zdania. Musiało się coś nałożyć po drodze.
Niemniej skoro potrafi skutecznie wyciąć znaczniki html ze stringa, to z kapitalizowaniem z pominięciem znaczników też powinno pójść. Sam już nie wiem, może masz rację, że z rozbudowanymi strukturami byłby problem, ale proste stringi z podstawowymi znacznikami na poziomie szablonu powinno się dać obejść. Inaczej sporo logiki trzeba przenosić do kontrolera w niektórych sytuacjach. No nic - jak się nie da to się nie da - moja ciekawość została zaspokojona. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Ani PHP, ani Twig nie mają jakiś wielce wyrafinowanych narzędzi do manipulowania HTML-em w formie tekstowej. Pomijam tutaj oczywiście takie narzędzia jak DOMDocument, który właściwie załatwia sprawę.
2. Nie ma prostego albo złożonego HTML-a. Jest po prostu HTML i narzędzia typu Twig powinny go w pełni wspierać albo w ogóle. 3. Nie powinieneś w żadnym wypadku czegoś takiego przenosić do kontrolera. Utwórz własny modyfikator w Twigu, który wykona to zadanie - w swoim wnętrzu może on wykorzystać przecież wszystko. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tak nie działa {{s|raw|capitalize}} ?
edit: Fakt dziwnie to działa, nie było pytania (IMG:style_emoticons/default/smile.gif) Ten post edytował prz3kus 21.05.2015, 07:02:59 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 13:47 |