所以我将 Laravel 7 与 Nova 2 一起使用。
我已经设置并运行了classic-o/nova-media-library,并且正在使用whitecube/nova-page编辑页面中的静态内容。
我设法在 whitecube/nova-page 模块内的 HeaderOptions 中为我的网站徽标创建了一个上传字段。在事物的后端,一切似乎都运行良好。我可以从我的电脑中选择一张图片并成功上传并保存。所以现在我正处于我想在刀片模板中显示该图像的位置。
我通常会使用
@option('header.logo')
从 whitecube/nova-page 获取数据,但输出文件 ID(在本例中为 18)。我需要文件路径而不是 id。所以我检查了 classic-o/nova-media-library 文档,看来我需要使用 API 才能使用文件 ID 获取文件路径......所以现在我很困惑......我不知道了解如何做到这一点...我尝试了以下方法:
<div class="logo">
@php
use ClassicO\NovaMediaLibrary\API;
$logo = API::getFiles(@option('header.logo'), null, true)
@endphp
<a href="/"><img src="{{ $logo->path }}" title="Boutique Terrey.ca" /></a>
</div>
但对我来说这似乎不对......在刀片模板中使用是错误的......而且,@option('header.logo')部分在@php @endphp标签内似乎不起作用.
The error is: Call to undefined function option()
我的 HeaderOptions.php 页面如下所示:
namespace App\Nova\Templates;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\Text;
use Whitecube\NovaPage\Pages\Template;
use ClassicO\NovaMediaLibrary\MediaLibrary;
class HeaderOptions extends Template {
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
MediaLibrary::make('Logo')->types(['Image'])->preview('thumb'),
Text::make('Phone', 'phone'),
Text::make('Email', 'email'),
];
}
/**
* Get the cards available for the request.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function cards(Request $request)
{
return [];
}
}
当您使用 nova-media-library 上传图像并使用 nova-page 显示它时,输出文件路径的正确方法是什么?我搞不清楚了!提前致谢!
============================
更新
好消息!我设法让它工作......但我只是不喜欢我的解决方案......
<div class="logo">
@php
use ClassicO\NovaMediaLibrary\API;
$id = Page::option('header')->logo;
$logo = API::getFiles($id, null, true);
@endphp
<a href="/"><img src="{{ $logo->url }}" title="Boutique Terrey.ca" /></a>
</div>
图像出现了......但是在我的刀片模板中使用“使用”是丑陋的......有没有更好的方法来做到这一点?
现在我也可以做
<div class="logo">
@php
$logo = ClassicO\NovaMediaLibrary\API::getFiles(Page::option('header')->logo, null, true);
@endphp
<a href="/"><img src="{{ $logo->url }}" title="Boutique Terrey.ca" /></a>
</div>
但同样,$logo 不应该在刀片文件中......我怎样才能将它传递给我的控制器?