如何在 php 文件中包含图像、css 和 javascript 等静态资源

一个非常重要的细节是,我创建的 asset 函数返回静态 asset 的完整路径,而不是 php 文件位置的相对路径


我做了什么:


public static function asset($url){

        $file_path = __DIR__.'/../../../resources/assets/'.$url;

        $file_path = str_replace("\\","/",$file_path);

        return $file_path;

    }

在我的 index.php 中,其中包含 html 文件:


<img width="500px" alt="<?php echo asset('images/image1.jpg');?>" src="<?php asset('images/image1.jpg');?>"/>

它为我提供了 alt-property 中文件的正确完整 URL,但没有显示图像。

它也不适用于 css 和 javascript


资产目录是


"__DIR__.'/../../../resources/assets/'.$url"; 

$url 是用户给出的参数。

这是 html 页面上返回的文件路径:

c:/xampp/htdocs/project/app/Utilities/View/../../../resources/assets/images/image1.jpg

返回的内容是否有效用作我的index.php 文件中的图像源???


偶然的你
浏览 98回答 2
2回答

明月笑刀无情

目前您在 src 中没有输出。您需要回显或打印文件路径:它应该显示(注意回声):<img src="<?php echo asset('images/image1.jpg');?>"/>这也是一个完整的文件路径,可能与协议相关。因此可能会被缝合到您的域名上。例如&nbsp;http://example.com/path/from/file/system/root/to/assets/images/image1.jpg。如果您包含该file://协议,则在某些浏览器上在您自己的站点上进行本地开发时,它可能会起作用,但由于原始策略的原因,可能无法起作用。它肯定无法在公共网络服务器上运行。例如/var/www/example.com/assets/image.png是一个文件路径,如果文档根目录是/var/www/example.com我们可以用作/assets/image.png网络路径。我建议将所有资产与文档或项目根目录相关。您可以在项目引导程序中使用一个简单的常量来代替类似的内容:<?php define('ASSET_ROOT', '/assets'); ?>那么你的 src 就变成了:<img src="<?= ASSET_ROOT . '/images/image1.jpg'; ?>"/>(这里使用短回声<?=代替<?php echo。)这给了你一些灵活性。您稍后可以将其替换为以下内容:<?php define('ASSET_ROOT', '//cdn.example.com/assets'); ?>您当前的资产路径也与包含您的函数的脚本相关。如果你移动它,你就必须重写你的函数。该常量的开销较小。拥有相对于固定根的资产,仅沿着树向下移动,要简单得多,也不需要考虑。

墨色风雨

asset 函数的问题是DIR返回本地文件路径,我应该返回的是服务器 url。因此,我替换了这一行"__DIR__.'/../../../resources/assets/'.$url";和http://server_host/resources/assets/".$url就我而言是http://localhost/project/resources/assets/".$url并返回该行并且它有效。
打开App,查看更多内容
随时随地看视频慕课网APP