PHP code example of palgoal / media-library

1. Go to this page and download the library: Download palgoal/media-library 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/ */

    

palgoal / media-library example snippets


// config/media-library.php
'route_prefix' => 'dashboard/media-library',

// config/media-library.php
'layout' => 'dashboard-layout',

  'layout' => 'dashboard-layout',        // resources/views/components/dashboard-layout.blade.php
  'layout' => 'layouts.admin',           // resources/views/components/layouts/admin.blade.php
  

// config/media-library.php
'breadcrumb' => [
    ['label' => 'لوحة التحكم', 'url' => '/dashboard'],
    ['label' => 'مكتبة الوسائط', 'url' => null],
],

// config/media-library.php
return [
    'route_prefix' => 'dashboard/media-library',
    'middleware'    => ['web', 'auth', 'can:access-admin'],
    'layout'        => 'dashboard-layout',
    'breadcrumb'    => [
        ['label' => 'لوحة التحكم', 'url' => '/dashboard'],
        ['label' => 'مكتبة الوسائط', 'url' => null],
    ],
    // ... باقي المفاتيح كما هي
];

// config/media-library.php
'route_prefix' => 'dashboard/media-library',
'middleware' => [
    'web',
    'auth:admin',
],
'user_model' => \App\Models\Admin::class,
'layout' => 'dashboard-layout',

use Palgoal\MediaLibrary\Concerns\HasMedia;

class Product extends Model
{
    use HasMedia;
}

$product->attachMedia($mediaId, 'gallery');
$product->firstMediaUrl('cover', asset('images/placeholder.png'));

use Palgoal\MediaLibrary\Support\MediaSelection;

$mediaIds = MediaSelection::parse(
    $request->input('gallery_media_ids')
);

validator(
    ['gallery_media_ids' => $mediaIds],
    [
        'gallery_media_ids' => ['array'],
        'gallery_media_ids.*' => [
            'integer',
            Rule::exists('media', 'id'),
        ],
    ]
)->validate();

$product->syncMedia($mediaIds, 'gallery');

// config/media-library.php بعد النشر
'policy' => \App\Policies\MyMediaPolicy::class,

// config/media-library.php
'register_policy' => false,

// أحد Service Providers الخاصة بتطبيقك
Gate::policy(\Palgoal\MediaLibrary\Models\Media::class, \App\Policies\MyMediaPolicy::class);

class MyMediaPolicy
{
    public function viewAny($user): bool { return (bool) $user; }
    public function view($user, Media $media): bool { return (bool) $user; }
    public function create($user): bool { return (bool) $user; }
    public function update($user, Media $media): bool { return $media->uploader_id === $user->id; }
    public function delete($user, Media $media): bool { return $media->uploader_id === $user->id; }
}

// config/media-library.php
'user_model' => \App\Models\Admin::class,

// config/media-library.php
'disk'      => 's3',       // أي disk معرَّف في config/filesystems.php
'directory' => 'uploads',  // الملفات تُخزَّن تحت {disk}/{directory}/{Year}/{Month}/{file}
bash
composer vendor:publish --tag=media-library-config
php artisan vendor:publish --tag=media-library-assets
php artisan migrate
php artisan storage:link
bash
php artisan migrate
bash
php artisan storage:link
blade
<x-media-library::picker name="gallery_media_ids" :multiple="true" label="معرض الصور" />
bash
> php artisan vendor:publish --tag=media-library-relations-migration
> php artisan migrate
>