kraenzle-ritter/resources

Laravel package for managing external resources with Livewire components
475
Install
composer require kraenzle-ritter/resources
Latest Version:v4.0.0
PHP:^8.3
License:MIT
Last Updated:Aug 19, 2026
Links: GitHub  ·  Packagist
Maintainer: ottosmops

resources

Latest Stable Version Total Downloads Latest Unstable Version License Tests

Resource Model and a hasResource trait where resources are basically links to a resources (eg. Wikipedia-Article or GND-Entry). Livewire Components (Bootstrap 5) for searching, selecting and listing the links.

Supported Providers

Installation

Via Composer

$ composer require kraenzle-ritter/resources

Then either run php artisan vendor:publish and publish the migration or copy the file to your migrations directory. Then run php artisan migrate.

Usage

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model
use KraenzleRitter\Resources\hasResources;

class MyModel extends Model
{
    use hasResources;

    ...

}

Then you are ready to go:


$resource = [
    'provider' => 'Wikipedia',
    'provider_id' => 4013996,
    'url' => 'https://fr.wikipedia.org/wiki/Érik_Desmazières'
    // optional 'full_json' => [...]
];

$model = MyModel::find(1);
$this->model->updateOrCreateResource($resource);
$model->resources;
...

IdRef record types

IdRef covers persons, corporate bodies, places, families and subject headings in one index. Which of them a search returns is driven by the endpoint the component is mounted with:

'idref' => [
    'default_record_types' => ['person', 'corporate'],
    'endpoint_record_types' => [
        'actors'   => ['person', 'corporate', 'family'],
        'places'   => ['place'],
        'keywords' => ['subject'],
    ],
],

Publish the config to adjust the mapping for your own endpoint names; an endpoint with no mapping falls back to default_record_types.

Because idref declares wikidata_property: P269 and a target_url, syncFromProvider() will also create IdRef links automatically whenever a synced Wikidata item carries a P269 claim. Add idref to your filter list to suppress that.

Checking provider health

php artisan resources:test-resources                  # all configured providers
php artisan resources:test-resources --provider=gnd   # just one

Diagnostics routes

The package ships a diagnostics UI at /resources-check. It is disabled by default — it renders provider configuration, so it should not be reachable in a host application unless you ask for it. Enable it per environment:

RESOURCES_DIAGNOSTICS=true

and optionally restrict it further in config/resources.php:

'diagnostics' => [
    'enabled' => env('RESOURCES_DIAGNOSTICS', false),
    'middleware' => ['web', 'auth'],
],

You can add more resources to a model which already has a gnd link. You can configure the list of resources in the config file.

License

License. Please see the license file for more information.

Related Packages

balismatz/filament-prevent-outdated-record-update

Filament package to prevent the update of outdated records.

8,470 7
codemystify/laravel-types-generator

Simplified TypeScript types generator for Laravel applications with developer-de...

261 3
wobeto/twitter

Laravel 4 Service Provider to interact with twitter account, like return a colle...

135 1