Nette\String truncate

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jeremy88
Člen | 3
+
0
-

https://api.nette.org/….String.html#…

Mám funkci, která řeší podobnou věc, ale navíc je tam taky pod nepovinným parametrem, aby se celý řetězec přidal do atributu title buďto ve span nebo abbr tagu.

U span to řeším ještě navíc pomocí css:

cursor: help;
border-bottom: 1px dotted #555;

Tak pokud naznáte, že by se to mohlo občas hodit, požádal bych někoho šikovného o rozšíření metody truncate v tomto smyslu.

Já sám jsem to používal třeba když jsem výpis z db řešil tabulkou a nechtěl jsem, aby některý řádky byly vyšší než ostatní, ale bylo potřeba aspoň nějakou formou jejich obsah zpřístupnit.

Ondřej Mirtes
Člen | 1536
+
0
-

HTML se do takového „jádra“, jako je String::truncate nehodí. Napsal bych si na to helper, nějak takto:

public static function truncateHelper($string, $length) {
        return '<span title="' . $string . '">' . String::truncate($string, $length) . '</span>';
}

Po registraci do šablony:

$template->registerHelper('truncate', 'Helpers::truncateHelper');

…by se to dalo používat takto:

{$stringToTruncate |truncate:'10'}

Editoval LastHunter (25. 6. 2009 8:58)

mancze
Člen | 58
+
0
-

LastHunter napsal(a):

…by se to dalo používat takto:

{$stringToTruncate |truncate:'10'}

Nebo spíš

{!$stringToTruncate |truncate:'10'}

protože jinak by se span vyescapoval, nemýlím-li se. Proto pro takové věci obvykle používám filtry. Tam se na výkřičník nezapomene ;).

Editoval mancze (25. 6. 2009 9:09)

Honza Marek
Člen | 1664
+
0
-

Proč tam máte ty apostrofy okolo desítky?

Ondřej Mirtes
Člen | 1536
+
0
-

mancze napsal(a):

LastHunter napsal(a):

…by se to dalo používat takto:

{$stringToTruncate |truncate:'10'}

Nebo spíš

{!$stringToTruncate |truncate:'10'}

protože jinak by se span vyescapoval, nemýlím-li se. Proto pro takové věci obvykle používám filtry. Tam se na výkřičník nezapomene ;).

Přemýšlel jsem nad ním, ale podle mě je to tak, že se escapuje jen ten samotný řetězec a výstup už escapovaný není. Stejně jako když bych dal {$text |texy}, tak to má vliv jen kdybych do Texy posílal HTML značky, které chci jako HTML značky interpretovat. Ale třeba se mýlím, chce to ozkoušet.

Honza M. napsal(a):

Proč tam máte ty apostrofy okolo desítky?

Nebyl jsem si jistý, jak to tam s těmi parametry je. Jestli tam být nemusí, tím líp :)

Editoval LastHunter (25. 6. 2009 12:34)