我能够像这样获取文件的网络路径:
$filename = 'elephant.jpg';
$path_to_file = $this->getSkinUrl('manufacturertab');
$full_path = $path_to_file . '/' . $filename;
但是,如果该文件不存在,那么我最终会得到一个损坏的图像链接。
我试过这个:
if(!file_exists($full_path)) {
Mage::log('File doesn\'t exist.');
} else {
?><img src="<?php echo $full_path ?>" /><?php
}
当然这不起作用,因为file_exists
不适用于 url。
我该如何解决这个问题?
1.) 我可以在 Magento 中的系统路径和网址之间进行翻译吗?
例如类似(伪代码):
$system_path = $this->getSystemPath('manufacturertab');
看起来对称且便携。
或 2.) 是否有一些 PHP 或 Magento 函数用于检查远程资源是否存在?但这似乎是一种浪费,因为资源确实是本地的。PHP使用http方法检查本地文件会很愚蠢,不是吗?
我目前使用的解决方案:
$system_path = Mage::getBaseDir('skin') . '/frontend/default/mytheme/manufacturertab'; // portable, but not pretty
$file_path = $system_path . '/' . $filename;
然后我检查是否有file_exists
,如果有,我会显示img
. 但是我不喜欢必须对系统路径的部分路径进行硬编码与对 url 路径使用方法之间的不对称性。两者都有一个方法会很好。