【问题标题】:Cannot find declaration to go to for assets找不到资产申报
【发布时间】:2022-08-13 16:06:01
【问题描述】:

我的 Laravel 项目的大部分资产要么在 /storage 文件夹中,要么在 /public 文件夹中。

在我的刀片文件中,我用url('/storage/..) 引用这些驴。 PhpStorm 认为那些不存在。

当我提交时,每张图片将加起来一个错误。

我如何告诉 PhpStorm 我的资产确实在这个目录中? 我试图将storage 文件夹添加到PHP>Laravel>Views/Template 但这不起作用,我相信我还没有完全理解这个路径/命名空间刀片应该做什么。

【问题讨论】:

  • 背景文件夹在哪里?它在 storage/app/public/backgrounds 中吗?
  • @JohnLobo 是的,它在 storage/app/public/backgrounds
  • @Adam您已经解决了,太好了。请注意:那些原始路径在 PhpStorm 中应该仍然有效(被识别)。 1)据我了解,您已经创建了public/storage 符号链接,对吗? 2) PhpStorm 中如何处理public 文件夹?您是否将其标记为“资源根”?如果您希望相对于public 而不是 PROJECT_ROOT 文件夹识别绝对 URL(以 / 开头),则需要它...
  • @LazyOne 我确实创建了符号链接,并且资产显示在浏览器中。 “public”被标记为资源根。但我仍然在 PHPStorm 中看到错误消息。还奇怪的是,正确找到了“存储”文件夹,但看起来它只是开始不适用于“背景”。也许问题是因为我在 docker 容器内创建了符号链接?
  • @亚当“也许问题是因为我在 docker 容器内创建了符号链接?”遗憾的是无法对此发表评论。只是我把它全部放在本地(Windows 10),如上所述完成(符号链接+资源根),并且我用/storage/... 引用的任何 URL 都在 SCSS 和 Blade/HTML 文件中为我正确解析(我什至有PROJECT_ROOT/storage 被标记为排除...)。不知道这里还能说什么。也许是插件的一些干扰?如果是这样 - 只需尝试禁用所有自定义插件并重新启动 IDE - 有什么区别吗?

标签: laravel phpstorm


【解决方案1】:

您可以使用资产助手

style="background-image: url('{{ asset('storage/backgrounds/lavender') }}');">dfsdf</div>

【讨论】:

  • 而且我想定义ASSET_URL=/storage 并且只使用asset('backgrounds/lavender') 是有意义的,以防有一天我想将我的资产移动到另一个主机。
  • 我更喜欢为此使用自定义文件系统条目,并编写我自己的助手
  • 我认为将它留给您托管资产的环境设置而不是在自定义帮助程序中硬编码是有意义的。但无论如何,asset 是这里的正确选择。
【解决方案2】:

做这个命令

php artisan storage:link

将在 public/storage 中创建快捷方式文件夹到路径 storage/app/public

没有url('/storage/..)public_path('storage/....')

【讨论】:

  • 这不起作用,因为public_path 会将硬编码路径返回到公用文件夹,这意味着public/storage/... 无法在客户端解析。
  • public_path 永远不能在客户端代码的上下文中使用。路径用于代码,URI 用于面向客户端的内容
  • 您将 url() 与 php 函数混淆了。在这种情况下,它是一个 CSS 属性
  • 使用 {{ }} 内的 public_path 让刀片引擎在任何 url 处获取公共路径
  • url 获取所有带有参数和页面的url字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-13
相关资源
最近更新 更多