upline/nova-link-field

A Laravel Nova field.

1.0.0 2023-05-19 23:43 UTC

This package is auto-updated.

Last update: 2024-10-20 03:15:15 UTC


README

composer require upline/nova-link-field
  • Link is displayed as a resource link in the index and detail views.
  • In forms, the link is shown as a text input.

Usage

use Upline\NovaLinkField\Link;


class User extends Resource
{
   // ...
   public function fields(NovaRequest $request) 
   {
        return [
            // ...
            Link::make('Instagram')                 // Get link from instagram model field
                ->text(fn() => 'Instagram link')    // Set static anchor 
                ->target('_blank')                  // Set target attribute
        ];   
   }
}
use Upline\NovaLinkField\Link;


class User extends Resource
{
   // ...
   public function fields(NovaRequest $request) 
   {
        return [
            // ...
            Link::make('Instagram', fn($resource) => 'https://instagram.com/' . $resource->instagramId) // Compute link
                ->text('instagram_username')    // Use instagram_username field as anchor text 
                ->target('_blank')
        ];   
   }
}

Why it is better than formatting text as link

In this example we don't escape $username, so we can get some security troubles.

Text::make('Twitter Profile', function () {
    $username = $this->twitterUsername;

    return "<a href='https://twitter.com/{$username}'>@{$username}</a>";
})->asHtml(),  

Same, using this package:

Link::make('Twitter Profile', function () {
    $username = $this->twitterUsername;
    return "https://twitter.com/{$username}";
})->text('username'),  

However, in this case link and username will be escaped. If you need to use html in anchor text, you still can use asHtml() method.