PHP code example of kraenzle-ritter / resources-components

1. Go to this page and download the library: Download kraenzle-ritter/resources-components library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

kraenzle-ritter / resources-components example snippets


// config/resources-components.php
return [
    'limit' => 5, // Default search results limit
    'providers' => [
        'gnd' => [
            'label' => 'GND',
            'api-type' => 'Gnd',
            'base_url' => 'https://lobid.org/gnd/',
            'target_url' => 'https://d-nb.info/gnd/{provider_id}',
            'test_search' => 'Hannah Arendt', // Test query for provider check page
        ],
        'wikipedia-de' => [
            'label' => 'Wikipedia (DE)',
            'api-type' => 'Wikipedia',
            'base_url' => 'https://de.wikipedia.org/w/api.php',
            'target_url' => 'https://de.wikipedia.org/wiki/{underscored_name}',
            'test_search' => 'Bertha von Suttner',
        ],
        // Add more providers here
    ],
];

namespace App\Providers;

use KraenzleRitter\ResourcesComponents\Providers\AbstractProvider;

class MyCustomProvider extends AbstractProvider
{
    public function search(string $search, array $params = [])
    {
        // Implement search logic
    }
    
    public function processResult($results): array
    {
        // Process results into standard format
        return [
            [
                'title' => 'Result title',
                'description' => 'Result description',
                'url' => 'https://example.com/resource',
                'raw_data' => json_encode($data)
            ],
            // More results...
        ];
    }
}

'my-provider' => [
    'label' => 'My Provider',
    'api-type' => 'MyCustom',
    'base_url' => 'https://api.example.com/',
    'provider_class' => App\Providers\MyCustomProvider::class,
],



namespace App\Listeners;

use KraenzleRitter\ResourcesComponents\Events\ResourceSaved;

class UpdateLocationWithGeonamesCoordinates
{
    public function handle(ResourceSaved $event)
    {
        if ($event->resource->provider == 'geonames') {
            // Access resource data
            \Log::debug($event->resource);
            
            // Access the model that the resource is attached to
            \Log::debug($event->model);
            
            // Example: Update location coordinates from Geonames data
            if (isset($event->resource->data['lat']) && isset($event->resource->data['lng'])) {
                $event->model->update([
                    'latitude' => $event->resource->data['lat'],
                    'longitude' => $event->resource->data['lng']
                ]);
            }
        }
    }
}


namespace App\Providers;

use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use KraenzleRitter\ResourcesComponents\Events\ResourceSaved;
use App\Listeners\UpdateLocationWithGeonamesCoordinates;

class EventServiceProvider extends ServiceProvider
{
    protected $listen = [
        ResourceSaved::class => [
            UpdateLocationWithGeonamesCoordinates::class
        ]
    ];
}



namespace App\Models;

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

class Person extends Model
{
    use HasResources;
    
    // The rest of your model...
}
bash
php artisan vendor:publish --tag=resources-components.config
bash
php artisan vendor:publish --tag=resources-components.lang
bash
php artisan vendor:publish --provider="KraenzleRitter\ResourcesComponents\ResourcesComponentsServiceProvider"
bash
php artisan vendor:publish --provider="KraenzleRitter\ResourcesComponents\ResourcesComponentsServiceProvider" --tag=resources-components.views