在Magento PHP中显示之前检查文件是否存在?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Magento PHP中显示之前检查文件是否存在?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2038字,纯文字阅读大概需要3分钟。
内容图文
我可以像这样获取文件的Web路径:
$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;
然后我检查文件是否存在,如果是,我显示img.但我不喜欢必须硬编码系统路径的部分路径和使用url路径的方法之间的不对称性.为两者都有一个方法会很好.
解决方法:
功能
$localPath = Mage::getSingleton( 'core/design_package' )->getFilename( 'manufacturertab/' . $filename, array( '_type' => 'skin', '_default' => false ) );
将返回相同的路径
$urlPath = $this->getSkinUrl( 'manufacturertab/' . $filename );
但在您的本地文件系统上.你可以省略’_default’=>假参数,它将工作(我把它留在那里只是因为getSkinUrl也设置它internaly).
请注意,getSkinUrl和getFilename的参数可以是文件或目录,但应始终使用整个路径(带文件名),以便回退机制正常工作.
考虑一下情况
皮肤/默认/缺省/ manufacturertab / A.JPG
皮肤/ yourtheme /默认/ manufacturertab / B.JPG
在这种情况下,对getSkinUrl或getFilename的调用将返回a.jpg和b.jpg的路径,如果文件名作为参数提供,但对于您只设置文件夹名称的情况,它将返回skin / yourtheme / default / manufacturertab /对于这两种情况,当你附加文件名并检查a.jpg时,检查会失败.这就是为什么你总是提供整个路径作为参数.
您仍然必须使用自己的函数来检查文件是否存在,因为如果文件不存在,则getFilename函数返回默认路径(如果不存在manufactrtab / foo.jpg,则返回skin / default / default / manufacturertab / foo.jpg ).
内容总结
以上是互联网集市为您收集整理的在Magento PHP中显示之前检查文件是否存在?全部内容,希望文章能够帮你解决在Magento PHP中显示之前检查文件是否存在?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。