Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty] - problem z szablonami
Forum PHP.pl > Forum > PHP
itsme
Witam Was jest pózno i się poddałem ...

oto kawalek kodu z pliku wykaz-pol-do-umowy-z-danymi.tpl
[php:1:7f63b3398d]<?php
{foreach name=outer item=contact from=$ko}
{if $contact.kontakt==1}
<tr>
<td width=50%>
{$contact.nazwa}
</td>
<td>
{php}
echo "<table width=100%><TR><TD>";
$dane = kontakt::dane( 1 );
$smarty2 = new Smarty;
$smarty2->assign ( "ko", $dane );
$smarty2->display( 'ks-dane-kontaktu2.tpl' );
echo "</TD></TR></table>";
{/php}
</td>
</tr>

{else}
<tr>
<td width=50%>
{$contact.nazwa}
</td>
<td>
{$contact.wartosc}
</td>
</tr>
{/if}
{/foreach}
?>[/php:1:7f63b3398d]
jak widac odwoluje sie do rugiego pliku tpl
[php:1:7f63b3398d]<?php{foreach name=outer item=contact from=$ko}
<table class="standard" style="width: 100%;">
<tbody>
<tr>
<th colspan="2">
Dane Kontaktu
</th>
</tr>
<tr>
<td style="background-color: #EBF4EA; width: 150px;">
Typ
</td>
<td style="background-color: #EBF4EA; font: bold">
{$contact.typ}
</td>
</tr>
{*...........................................*}
</tbody>
</table>

{/foreach}

?>[/php:1:7f63b3398d]
no i robi sie blad
Kod
Warning: Failed opening '%%187%%1872967112ks-dane-kontaktu2.tpl.php' for inclusion (include_path='.;c:php4pear') in C:FoxServwwwSmartylibsSmarty.class.php on line 1158

gdzie jest blad ?
rzseattle
nie znam bezposrednio odpowiedzi ale moze zamiast umieszczania znacznikow php sproboj funkcja insert uruchomic twoja funkcje php (nie musisz startowac na nowo smarty poniewaz jest przekazywany do tej funkcji jako drugi argument ), wywolywanie z niej innego szablonu dziala bezproblemowo (wiem bo juz tak robilem)
DeyV
proponuję zamienić:

Kod
{php}

$smarty2->assign ( "ko", $dane );

  $smarty2->display( 'ks-dane-kontaktu2.tpl' );  

{/php}


na:
Kod
{assign var="ko" value=$dane}

{include file="body.inc.htm"}
itsme
wszystko pięknie ładnie ale .....

Kod
1. {php}

2. echo "<table width=100%><TR><TD>";

3. $dane =  kontakt::dane( 1 );

4. $smarty2->assign ( "ko", $dane );

5. $smarty2->display( 'ks-dane-kontaktu2.tpl' );  

6. echo "</TD></TR></table>";

7. {/php}

w lini 3 chce przekazac zmienna ktora wyswietla sie w smarty {$contact.id_kontakt} i jezeli dam znacznikami {php} to w jaki sposob zrobic $dane = kontakt::dane( {$contact.id_kontakt} ); - wywala blad

dlatego
Kod
{assign var="ko" value=$dane}

{include file="body.inc.htm"}
nie znajdzie u mnie zastosowania chyba ze pokazecie mi jak przekazac zmienna do includowanego pliku zmienna z smarty *.tpl do php *.php

mam nadzieje ze czytelnie opisalem swoj problem
rzseattle
nie wim czy do konca rozumie o co ci chodzi ale jak juz wspominalem insertem - mozesz przeciez przekazac wartosc zmiennej z smarty do funkcji a funkcja juz zrobi reszte
cos w rodzaju
[php:1:38dd8526ee]<?php
smarty_insert_funkcja ($dane){
$smarty->assign( 'ko', $dane['kontakt]')
//$smarty->display('ks-dane-kontaktu2.tpl' ); - malo elegancko

$r = $smarty->feth('ks-dane-kontaktu2.tpl' );// lub bardziej elegancko
return $r;
}

?>[/php:1:38dd8526ee]
potem juz tylko cos takiego:
Kod
{insert script="./templates/scripts/?questionmark.gif.php" name="funkcja" kontakt=$contact.id_kontakt assign=output}

no i wiadomo:
Kod
{$output}


wtedy zaleznie do jakiej zmiennej przypisales wynik funkcji to umieszczajac ta zmienna w szablonie wyswietli ci sie wypelniony 'ks-dane-kontaktu2.tpl'
powtarzam nie wiem czy wszystko wlasciwie zrozumialem
itsme
to ja nie wiem czy rozumniem ale jak bede w domq to pierwsza rzecza jaka uczynie to sprawdze to co mi napisales :-)
rzseattle
i jeszcze jedno zapomnialem ze przy deklarowaniu funkcji trza chyba podac drugi parametr -
[php:1:618503ed6b]<?php
function($dane, $smarty);
?>[/php:1:618503ed6b]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.