2016-03-08 2 views
1

Я пытаюсь получить имя файла из пути изображения, используя basename, и повторить его в теге заголовка, но я не могу заставить его работать, так как я эхо- путь изображения из файла функций.Получить имя файла из пути к изображению (из функции)

То, что я пытаюсь сделать сейчас (в product.php):

$path = ProductBekijkPlaatje($contenti[0]['images']); 

$basename = basename($path); 

echo $basename; 

Но это нарушает функцию и только повторяет путь файла, в то время как реальное изображение теряется.

Это функция Я звоню (в functions.php):

function ProductBekijkPlaatje($plaatje) { 

    $path = $img->image_intro; 

    $basename = basename($path); 

    $img = json_decode($plaatje); 

    if ($img->image_intro == '') { 
     $image = '<img src="images/no-img.jpg" alt="">'; 
    } else { 

     $image = '<img class="shorterimageimg" title="'.$basename.'" src="cms/'.$img->image_intro.'" alt="'.$img->image_intro_alt.'" >'; 

    } 
    return $image; 

} 

Я также пытаюсь показать имя изображения в названии внутри функции, но это не работает либо. Что я делаю не так?

+1

Ваша функция не возвращает путь, он возвращает полный HTML IMG тег. как там должно работать basename? –

+0

@GeraldSchneider Вы правы. Как я могу получить только путь к изображению? – twan

+0

$ plaatje представляется массивом объектов, и я подозреваю, что в нем определен путь к изображению. Выполните * print_r ($ plaatje); *, и он должен сбрасывать имена объектов и их значения. Одним из них должен быть файл/путь. –

ответ

2

это не работает в вашей функции, потому что вы пытаетесь получить доступ к свойству объекта, прежде чем делать json_decode():

$path = $img->image_intro;  // $img doesn't exist here 
$basename = basename($path); 
$img = json_decode($plaatje); // here $img is created 

Просто переместите json_decode() на фронт:

$img = json_decode($plaatje); 
$path = $img->image_intro; 
$basename = basename($path); 

сейчас , вы можете изменить свою функцию, чтобы вернуть массив с различной информацией:

function ProductBekijkPlaatje($plaatje) { 
    $img = json_decode($plaatje); 
    $return = array(); 
    $return['path'] = $img->image_intro; 
    $return['basename'] = basename($return['path']); 
    if ($img->image_intro == '') { 
     $return['image'] = '<img src="images/no-img.jpg" alt="">'; 
    } else { 
     $return['image'] = '<img class="shorterimageimg" title="'.$return['basename'].'" src="cms/'.$img->image_intro.'" alt="'.$img->image_intro_alt.'" >'; 
    } 
    return $return; 
} 

Затем вы можете использовать этот массив позже:

$image = ProductBekijkPlaatje($contenti[0]['images']); 
echo $image['image']; // contains the html output 
echo $image['basename']; // contains the basename only 
+0

Удивительный, спасибо. Мне только пришлось переместить json_decode на передний план. Теперь это работает. – twan

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