2015-08-21 2 views
1

Действительно не уверен, что здесь происходит, но это просто не работает! У кого-нибудь есть идеи по этому поводу?Невозможно установить переменную в IF Statement по какой-то причине

Я попытался это:

if(article_custom_field('product-type') !== '') { 
    if(article_custom_field('product-type') == 'cd') return $productType = 'cd'; 
    if(article_custom_field('product-type') == 'audio') return $productType = 'headphones'; 
    if(article_custom_field('product-type') == 'video') return $productType = 'facetime-video'; 
    if(article_custom_field('product-type') == 'download') return $productType = 'save'; 
    if(article_custom_field('product-type') == 'book') return $productType = 'book'; 

} else { 
    $productType = 'eye-open'; 
} 

И это:

if(article_custom_field('product-type') === 'cd') { 
    $productType = 'cd'; 
} elseif(article_custom_field('product-type') === 'video') { 
    $productType = 'facetime-video'; 
} elseif(article_custom_field('product-type') === 'audio') { 
    $productType = 'headphones'; 
} elseif(article_custom_field('product-type') === 'download') { 
    $productType = 'save'; 
} elseif(article_custom_field('product-type') === 'book') { 
    $productType = 'book'; 
} else { 
    $productType = 'eye-open'; 
} 

целью изменить это:

<span class="product-type"> 
    <img src="<?php echo theme_url('/assets/glyphicon-' . $productType . '.png'); ?>" width="25" alt="Product Type" class="img-responsive"> 
    <?php echo article_custom_field('product-type'); ?> 
</span> 

Любые идеи относительно того, что я делаю неправильно и почему этот код просто не работает для меня? Независимо от того, что я установил 'article_custom_field (' product-type '), я все равно получаю «открытое глаза». В чем дело?

Вот 'article_custom_field() функция:

function article_custom_field($key, $default = '') { 
    $id = Registry::prop('article', 'id'); 

    if($extend = Extend::field('post', $key, $id)) { 
     return Extend::value($extend, $default); 
    } 

    return $default; 
} 
+0

Это функция - для использования с CMS, которую я использую, она позволяет настраивать поля в бэкэнд. –

+0

Пожалуйста, 'var_dump (article_custom_field ('product-type'))' и покажите нам вывод. –

+0

Получение строки (0) "" –

ответ

2

Ваш первоначальный if пункт проверяет, является ли пустое значение, в противном случае он будет возвращать «глаз открытым», так что вы всегда получите " открытое "значение.

Попробуйте использовать структуру switch-case и вернуться в конце функции.

$cField = article_custom_field('product-type'); 
switch (trim($cField)){ 
    case 'cd': 
     $productType = 'cd'; 
    break; 
    case 'audio': 
     $productType = 'headphones'; 
    break; 
    case 'video': 
     $productType = 'facetime-video'; 
    break; 
    case 'download': 
     $productType = 'save'; 
    break; 
    case 'book': 
     $productType = 'book'; 
    break;  
    default: 
     $productType = 'eye-open'; 
    break; 
} 
return $productType; 
+0

Маленькая опечатка в вашем коде, значение «case» всегда одинаковое («cd»). –

+0

@caCtus спасибо! отсортировано –

+0

Спасибо! Я предпочитаю использовать переключатель. Однако, по какой-то причине это просто убивает мою страницу? Я обновил «случай» до того, что им нужно. Я не получаю никаких ошибок php, страница сразу же исчезает после этого кода. –

0

Отработанные возрастов пытаются выяснить, что это было,

, а затем она просто пришла мне в голову.

I FORGOT, чтобы включить оператор switch/if внутри цикла while. DUH - Ошибка новичков!

Смежные вопросы