Если еще оператор, возвращающий оба вместо одного?

Это мой первый PHP-оператор if, так что потерпите меня, если я сделал глупую ошибку!

Я запускаю pmWiki и у меня есть две переменные для имен групп. $Group - это имя группы без пробелов (например, EasyCatalog), а $Groupspace - это имя группы с пробелами (например, Easy Catalog).

Я хочу проверить, если $Groupspaced == "Easy Catalog", если true, то вернуть переменную $ Group, иначе вернуть $Groupspaced

Это мой код:

            <p class="grouptitle">
                <?php if ($Groupspaced == "Easy Catalog") : ?>
                    <a href='{$ScriptUrl}/{$Group}' class="pagegroup">{$Group}</a>
                <?php else : ?>
                    <a href='{$ScriptUrl}/{$Group}' class="pagegroup">{$Groupspaced}</a>
                <?php endif; ?>
            </p>

У меня проблема в том, что он возвращает обе ссылки, а не одну.

4 ответа

Решение

Кажется, вы используете Smarty: используйте его синтаксис для if else:

{if $Groupspaced eq 'Easy Catalog'}
    <a href='{$ScriptUrl}/{$Group}' class="pagegroup">{$Group}</a>
{else}
    <a href='{$ScriptUrl}/{$Group}' class="pagegroup">{$Groupspaced}</a>
{/if}

Подробнее вы можете прочитать на http://www.smarty.net/docsv2/en/language.function.if.tpl

Я вижу, что это не разумно: вот pmWiki, если еще синтаксис:

(:if cond param:) body (:else:) body (:ifend:)

В вашем случае код должен быть:

(:if equal "{$Groupspaced}" "Easy Catalog":)
     <a href='{$ScriptUrl}/{$Group}' class="pagegroup">{$Group}</a>
(:else:)
    <a href='{$ScriptUrl}/{$Group}' class="pagegroup">{$Group}</a>
(:ifend:)

Я получил это отсюда: http://www.pmwiki.org/wiki/Cookbook/ConditionalMarkupSamples

Попробуйте, чтобы убедиться, что ваша теория ошибочна, затем исправьте свои проблемы:

<p class="grouptitle">
    <?php 
    $Groupspaced = "Easy Catalog2";
    if ($Groupspaced == "Easy Catalog") : ?>
    <a href='blablabla1' class="pagegroup">Group 1</a>
    <?php else : ?>
    <a href='blablabla2' class="pagegroup">Group spaced 2</a>
    <?php endif; ?>
</p>

Теперь, так как вы используете шаблон smarty, это правильный синтаксис smarty if/else:

<p class="grouptitle">

    {if $Groupspaced eq "Easy Catalog"}
    <a href='{$ScriptUrl}/{$Group}' class="pagegroup">Group 1</a>
    {else}
    <a href='{$ScriptUrl}/{$Group}' class="pagegroup">Group spaced 2</a>
    {/if}
</p>
<p class="grouptitle">
                <?php 
                    if ($Groupspaced == "Easy Catalog")
                    {
                        echo " <a href='{$ScriptUrl}/{$Group}' class='pagegroup'>{$Group}</a>";
                    }
                    else{
                        echo " <a href='{$ScriptUrl}/{$Group}' class='pagegroup'>{$Groupspaced}</a>";
                    }
                   ?>
</p>

Мне кажется, ваш код правильный, но мне лично не нравится использовать подобные утверждения, вы можете попробовать это:

 <p class="grouptitle">
                <?php if ($Groupspaced == "Easy Catalog") { ?>
                    <a href='{$ScriptUrl}/{$Group}' class="pagegroup">{$Group}</a>
                <?php } else { ?>
                    <a href='{$ScriptUrl}/{$Group}' class="pagegroup">{$Groupspaced}</a>
                <?php } ?>
            </p>

Надеюсь, что это работает

Другие вопросы по тегам