Come utilizzare html nel titolo della risorsa Laravel Nova

Aug 21 2020

Sono bloccato con l'inserimento di un output html in Laravel 7 e nova 3.8

secondo:https://nova.laravel.com/docs/3.0/search/global-search.html#title-subtitle-attributes

provo a creare una funzione che metta un'immagine html davanti a qualche risorsa nelle pagine di indice:

public function title()
{
    return "<img width='20px' height='10px' src='./flags/".$this->country.".png' >";
}

Ho letto che laravel 7 usa {!! !!} (https://laravel.com/docs/7.x/blade#displaying-data) Ma se lo uso nel file di risorse in app/nova/some-resource.php php dà errore.

Come inserire facilmente un'immagine basata sul campo del paese nel titolo della risorsa?

-- aggiornamento 23.08.2020

Ho provato a creare un campo di testo nella mia risorsa in quanto può avere -> asHtml () e ho una bella immagine di bandiera sull'indice e sulla vista dettagliata

public function fields(Request $request)
{
    return [ 
(...)
Text::make('Country Flag',
            function () {
            return "<img width='20px' height='10px' src='http://fishmarket.nowakadmin.com/flags/".$this->country.".png' >";
        })->asHtml(), 
(...)
]};

e nel titolo ho cambiato in:

public function title()
{
    return $this->country_flag.' '.$this->name;
}

Il risultato è che il titolo sembra

''' '.$this->name // it looks like $this->country_flag = '';

Risposte

Pace Aug 23 2020 at 03:58

prova questo:

// for index
public static function label()
{
    // input your logic to show label
    return 'Your Label Index';
}
NoAd Sep 04 2020 at 03:38

L'unico wat per raggiungere l'obiettivo di utilizzare html in campo come ho trovato:

Invece di appartenere a ho usato Stack per usare html in Text e dati da altri campi necessari:

Stack::make('Details', [
            Text::make('Country',
            function () {   
                $flaga = DB::table('companies')->where('id', $this->company_id)->first();
                return "<img width='20px' height='10px' src='/flags/".$flaga->country.".png'> ".$flaga->country;
            })->asHtml()
            ->sortable(),
            
            BelongsTo::make('Company')
                ->default(function ($request) {
                    return $request->user()->company_id;
                })
                ->sortable(),
        ]),

E ho un codice HTML con l'immagine della bandiera e l'ID dell'azienda in un singolo campo sulla risorsa senza nemmeno toccare la risorsa $ titolo