Comment utiliser html dans le titre de la ressource Laravel Nova

Aug 21 2020

Je suis coincé avec la mise d'une sortie html dans Laravel 7 & nova 3.8

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

j'essaie de créer une fonction qui place une image html devant une ressource sur les pages d'index :

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

J'ai lu que laravel 7 utilise {!! !!} (https://laravel.com/docs/7.x/blade#displaying-data) Mais si je l'utilise dans le fichier de ressources dans app/nova/some-resource.php php donne une erreur.

Comment mettre facilement une image basée sur le champ pays dans le titre de la ressource ?

-- mise à jour 23.08.2020

J'ai essayé de créer un champ Texte dans ma ressource car il peut avoir ->asHtml() et j'ai une belle image de drapeau sur l'index et la vue détaillée

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(), 
(...)
]};

et dans le titre j'ai changé pour :

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

Le résultat est que le titre ressemble à

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

Réponses

Pace Aug 23 2020 at 03:58

essaye ça:

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

Le seul wat pour atteindre l'objectif d'utiliser html dans le champ comme je l'ai trouvé :

Au lieu d'appartenir à j'ai utilisé Stack pour utiliser html dans Text et les données d'autres champs nécessaires :

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(),
        ]),

Et j'ai du HTML avec l'image du drapeau et l'identifiant de l'entreprise dans un seul champ sur la ressource sans même toucher la ressource $title