Итак, я использую Laravel 7 с Nova 2.
У меня установлена и работает classi c -o / nova-media-library , и я использую whitecube / nova-page для редактирования содержимого c на моих страницах.
Мне удалось создать поле загрузки для lo go моего веб-сайта внутри моих HeaderOptions внутри whitecube Модуль / nova-page. Кажется, что на стороне сервера все работает нормально. Я могу выбрать изображение на своем компьютере и успешно загрузить его и сохранить. Итак, теперь я нахожусь на пуантах, где я хотел бы показать это изображение в моем шаблоне клинка.
Обычно я бы использовал
@option('header.logo')
для получения данных из whitecube / nova-page, но который выводит идентификатор файла (в данном случае 18). Мне нужен путь к файлу, а не идентификатор. Итак, я проверил документацию classi c -o / nova-media-library и, похоже, мне нужно использовать API, чтобы получить путь к файлу с помощью идентификатора файла ... Итак, теперь я просто запутался ... Я не понимаю, как это сделать ... Я пробовал следующее:
<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.lo go'), похоже, не работает, когда внутри тега @ php @ end php.
The error is: Call to undefined function option()
My HeaderOptions. php page выглядит так:
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>
Но опять же, $ lo go не должно быть в файле лезвия ... Как я могу передать это своему контроллеру?