【问题标题】:Unable to access images and CSS file in CakePHP无法在 CakePHP 中访问图像和 CSS 文件
【发布时间】:2019-04-11 02:32:23
【问题描述】:

我正在一个新应用中使用我的旧网站设计代码。问题是我没有使用 HTML 帮助程序来加载图像。我正在使用 HTML 图像标签 <img style="width:95px; margin-top:20px;"src="images/logo.png" />。它在此链接http://localhost/dashboard/dboard/ 中工作正常,但在此链接http://localhost/dashboard/dboard/pages/demo 中不起作用。 Pages 是一个控制器,而 demo 是控制器中的一个方法。

我的PagesController 看起来像这样:-

namespace App\Controller;

use Cake\Core\Configure;
use Cake\Network\Exception\NotFoundException;
use Cake\View\Exception\MissingTemplateException;
class PagesController extends AppController
{


    public function display()
    {
        $path = func_get_args();
    enter code here`enter code here`
        $count = count($path);
        if (!$count) {
            return $this->redirect('/');
        }
        $page = $subpage = null;

        if (!empty($path[0])) {
            $page = $path[0];
        }
        if (!empty($path[1])) {
            $subpage = $path[1];
        }
        $this->set(compact('page', 'subpage'));

        try {
            $this->render(implode('/', $path));
        } catch (MissingTemplateException $e) {
            if (Configure::read('debug')) {
                throw $e;
            }
            throw new NotFoundException();
        }
    }


     public function demo()
    {

    }
    public function contactus()
    {

    }
    public function downloads()
    {

    }
}

我的 .htaccess 文件如下所示:-

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

重要的是我已将所有图片放在这里:C:\xampp\htdocs\dashboard\dboard\webroot。我正在使用 CakePHP 3.0。

输出如下:-

【问题讨论】:

    标签: cakephp cakephp-3.0


    【解决方案1】:

    问题是 apache 正在尝试搜索路径 &lt;app_folder&gt;/webroot/pages/dashboard/images 中的图像,如果您在 Web 开发人员控制台中检查 404 错误(在 Chrome 中按 F12),您可能会看到。

    你可以通过两种方式解决:

    • 通过调用 HtmlHelper::img 方法替换 img 标签(一开始会有点困难,因为你使用了内联样式(但这是你能做的最好的修复))[你真的应该考虑将内联样式重构为外部样式表中的类];
    • 或在src 中添加基本网址,如下所示:

    &lt;img src='&lt;?php echo Router::url('/') ?&gt;/images/picture.png' &gt;

    这样最终的 url 看起来像:

    http://localhost/dashboard/dboard/images/picture.png

    你的文件就会被找到。

    【讨论】:

    • HTML 帮助器确实应该被使用并且不会导致使用内联样式出现问题,您可以使用该帮助器将style 属性设置为与任何其他&lt;img /&gt; 属性相同。跨度>
    • 我用错误的方式表达了自己。与使用第二种解决方案相比,我所说的麻烦是指更多的工作。我会更新我的答案。
    • 使用 HTML 帮助器仍然是可取的。我直接使用 &lt;img /&gt; 标签而不是使用 HTML 帮助程序包含图像时遇到了各种问题。
    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2018-12-30
    相关资源
    最近更新 更多