truncate v cyklu pro vypisování novinek

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mordare
Začátečník | 117
+
0
-

Nazdar lidi prisim chtěl bych poradit s timto. chci vypisovat novinky ale vždy jen jejich čát. zkoušel jsem to pomocí tohoto scriptu ale nějak mi to nefunguje. vypíšeto vždy jen jednu zkrácenou novinku.

Mikulas Dite
Člen | 756
+
0
-

Chyba bude asi v modelu, hádám fetch() místo fetchAll(). Zkontroluj, co máš v té iterované promněné.

Nox
Člen | 378
+
0
-

Dávat název položky stejný jako název iterované proměnné mi nepřijde moc dobrý nápad jak z hlediska funkčnosti tak srozumitelnosti…

To echo by snad nemuselo být… nejde teda

<?php
{foreach $news as $newsItem}
<tag>{$newsItem|truncate:30}</tag>
{/foreach}
?>

Editoval Nox (25. 12. 2010 18:00)

mordare
Začátečník | 117
+
0
-

tak fetchall() tam mám a Nox po upravení dle tvé rady mi vyskočilo chybová hláška Object of class DibiRow could not be converted to string

Nox
Člen | 378
+
0
-

Aha, no tak jasně pokud položka v tom arrayi $news je objekt, tak musíš co jsem postoval upravit jako:
(resp. jako přístup k prvku, dibi nepoužívám, ale tipuju že umí jak todle tak array přístup)

<?php
<tag>{$newsItem->polozkuCoChcesVypsat|truncate:30}</tag>
?>

někdy nejde brát navržené kódy úplně doslova/copypaste, ale spíš jako naťuknutí kdy je to vedlejší jen okrajově (v tomhle případě je okrajový tag nebo co se konkrétně vypisuje)

mordare
Začátečník | 117
+
0
-

no upravil sem to a uz to vypisuje ale stejne to zase vypisuje jen jednu zkracenou novinku zbytek chybí

Bertram
Člen | 75
+
0
-

První by jsi měl dump-nout tu proměnou,kterou předáváš šabloně a na základě této informace můžeš hledat případnou chybu,jinak se dá pouze spekulovat.

mordare
Začátečník | 117
+
0
-

ta je v pořád ku protože ji používám i v jiné šabloně a tam akorát neni potřeba truncate a tam jede v pořádku

ps: aby ste byly v obraze tady je to jak to dostavam z DB

Editoval mordare (25. 12. 2010 20:02)

Bertram
Člen | 75
+
0
-

Tak mi to nedalo a ten tvůj případ si nasimuloval.
Vše mi funguje jak má,takže bych tu chybu opět viděl v obsahu té proměnné.
Pokud dump vypadá nějak takto,tak to musí fungovat.

array(10) [
0 ⇒ DibiRow(2) {
„news“ ⇒ „bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-“ (50)
„neco“ ⇒ „dalsi“ (5)
}
1 ⇒ DibiRow(2) {
„news“ ⇒ „bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-bla-“ (50)
„neco“ ⇒ „dalsi“ (5)

mordare
Začátečník | 117
+
0
-

ja bych rekl ze to mam v poradku protoze z dumpu me vylezlo toto

Nox
Člen | 378
+
0
-

Buď toto

<?php
<div id="news">
{if $news}
<table>
    <tr><th>Novinky</th></tr>
    {foreach $news as $newsItem}

    <tr>
      <td>{$newsItem->news|truncate:30}</td>
    </tr>

    {/foreach}
</table>
{/if}
</div>
?>

anebo se to snad nějak přepisuje před uložením/otestováním a výpisem, nebo nevim… nebo tam zkus do té šablony testovně nacpat count()

Bertram
Člen | 75
+
0
-

Podle mého je problém v tom,že ti helper zkracuje HTML značky,což samozřejmě na obrazovce nevidíš,ale ve zdrojovém kódu stránky to najdeš.Určitě ti to v tomto stavu vypisuje článek s ‚id‘=>‚1‘ protože žádné HTML nemá.

mordare
Začátečník | 117
+
0
-

no jooo lidi XD ono to zkrátí tagy XD ale jak to teda obejít?? když chcu používat jednu DB na vypsání novinek normálně aj zkráceně