Если еще оператор, возвращающий оба вместо одного?
Это мой первый 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>
Надеюсь, что это работает