Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > Smarty


Автор: Noviy 16.12.2008, 23:26
Код

{%if $error==0%}    
    {%$text%}
    <a onClick="func('func');" href="javascript:void(0);">{%$word%}</a>
{%/if%}

{%if $error==1%}
    {%$error%}
    <form>
    ....................
    </form>     
{%else%}

    {%if $update==1%}
         {%$.update%}
    {%/if%}        
    
{%/if%}


У меня вот, что получается. Если ошибок нет, $error==0, вывожу сообщение и ссылку. После чего идут всякие проверки.... И при $update==1, должно выводить значение переменной, но кроме переменной, перед ней , выводится ссылка (<a onClick="func('func');" href="javascript:void(0);">{%$word%}</a>). Помогите от неё избавиться smile В остальных, ненужных местах, она не появляется. И собственно интересует причина её появления.

Автор: MoLeX 17.12.2008, 06:42
Цитата(Noviy @  16.12.2008,  23:26 Найти цитируемый пост)
И собственно интересует причина её появления.


Для лучшей наглядности преобразуем в обычный РНР код и каждый блок обзовем
Код

<?php
// Блок 1
if($error == 0)
{    
    echo $text;
    echo "<a onClick=\"func('func');\" href=\"javascript:void(0);\">".$word."</a>";
}

// Блок 2
if($error == 1)
{
    echo $error;
    echo "<form>";
    //....................
    echo "</form>";     
}
else
{
   // Подблок 2_1
    if($update == 1)
    {
         echo $update;
    }        
    
}


а теперь условие:
Код

$error = 0;
$update = 1;



смотрим как выполняется:
1. Блок 1 получив в проверку $error = 0 честно выводить тебе ссылку на экран и продолжает выполнение скрипта
2. Блок 2 получив в проверку $error = 0 отдал нам FALSE и перекинул на выполнение кода после else
3. Подблок 2_1 увидел что $update = 1 обрадовался и вывел на экран значение еще одной переменной.


решение: 
Код

<?php
// Блок 1
    //................................

// Блок 2
if($error == 1)
{
    //....................  
}
elseif($error != 0)           // смотри сюда
{
   // Подблок 2_1
    if($update == 1)
    {
         echo $update;
    }        
    
}



возникло это при неправельном подходе к проектированию  smile 

уф, ну и загнул же я... будем надеется что верно =)


Автор: Noviy 17.12.2008, 12:52
не работает :(
echo $update  даже не выводится.

Да и должна была бы, вместе с сылкой отображаться $text;

Автор: MoLeX 17.12.2008, 13:15
Noviy, приведи код после изменений

Автор: Noviy 17.12.2008, 14:16
Код

{%if $error==0%}
        
        {%$message%}    
        <a onClick="func('func');" href="javascript:void(0);">{%$linc%}</a>
    {%/if%}
    {%if $error==1%}
        {%$error%}
        
                
            <form>        
            </form>     
    {%elseif $error!=0%}

    
    {%if $update==1%}
            {%$update%}
    {%/if%}        
    
{%/if%}
{%if $error==2%}
    {%$error%}
{%/if%}    

Вот.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)