FilamentPHP の使いやすい GUI を備えた spatie メディア ライブラリを使用してメディア ファイルを管理します
composer require tomatophp/filament-media-manager
次に、メディア移行を公開する必要があります
php artisan vendor:publish --provider= " SpatieMediaLibraryMediaLibraryServiceProvider " --tag= " medialibrary-migrations "
パッケージをインストールした後、このコマンドを実行してください
php artisan filament-media-manager:install
GUI とフォルダー ブラウザーを使用する場合は、最後に/app/Providers/Filament/AdminPanelProvider.php
にプラグインを登録します。
-> plugin ( TomatoPHP FilamentMediaManager FilamentMediaManagerPlugin :: make ())
->schema()
を使用してカスタムフィールドを含むファイルをアップロードするこのコードをフィラメントコンポーネントに追加すると、メディアマネージャーを使用できます。
use TomatoPHP FilamentMediaManager Form MediaManagerInput ;
public function form ( Form $ form )
{
return $ form -> schema ([
MediaManagerInput :: make ( ' images ' )
-> disk ( ' public ' )
-> schema ([
Forms Components TextInput :: make ( ' title ' )
-> required ()
-> maxLength ( 255 ),
Forms Components TextInput :: make ( ' description ' )
-> required ()
-> maxLength ( 255 ),
]),
]);
}
このコードをプロバイダーに追加すると、メディア マネージャーで選択したタイプにカスタム プレビューを追加できます
use TomatoPHP FilamentMediaManager Facade FilamentMediaManager ;
use TomatoPHP FilamentMediaManager Services Contracts MediaManagerType ;
public function boot () {
FilamentMediaManager :: register ([
MediaManagerType :: make ( ' .pdf ' )
-> icon ( ' bxs-file-pdf ' )
-> preview ( ' media-manager.pdf ' ),
]);
}
ビューファイルでは次のように使用できます
4 ">
このコードをプロバイダーに追加することで、グローバルjs
またはcss
ファイルをメディア マネージャーに添付できます。
use TomatoPHP FilamentMediaManager Facade FilamentMediaManager ;
use TomatoPHP FilamentMediaManager Services Contracts MediaManagerType ;
public function boot() {
FilamentMediaManager ::register([
MediaManagerType :: make ( ' .pdf ' )
-> js ( ' https://mozilla.github.io/pdf.js/build/pdf.mjs ' ),
-> css ( ' https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.3.136/pdf_viewer.min.css ' ),
-> icon ( ' bxs-file-pdf ' )
-> preview ( ' media-manager.pdf ' ),
]);
}
コンポーネントのname
コレクションの名前と同じになることに注意してください。
/app/Providers/Filament/AdminPanelProvider.php
のメディアマネージャーでサブフォルダーの作成と管理を許可できます。
-> plugin (
TomatoPHP FilamentMediaManager FilamentMediaManagerPlugin :: make ()
-> allowSubFolders ()
)
フォルダーが/app/Providers/Filament/AdminPanelProvider.php
で公開されていない場合、ユーザーが選択したフォルダーにアクセスすることを許可し、ユーザーが他のフォルダーにアクセスすることを制限できるようになりました。
-> plugin (
TomatoPHP FilamentMediaManager FilamentMediaManagerPlugin :: make ()
-> allowUserAccess ()
)
これで、ユーザー モデルでこの特性を使用して、ユーザーが選択したフォルダーにアクセスできるようになります。
use TomatoPHP FilamentMediaManager Traits InteractsWithMediaFolders ;
class User extends Authenticatable
{
use InteractsWithMediaFolders ;
}
注:プラグインを更新した後は忘れずに移行してください。
API を使用してメディアとフォルダーにアクセスできるようになりました。エンドポイントは 2 つあります
/api/folders
すべてのフォルダーを取得します/api/folders/{id}
は、サブフォルダーとメディア ファイルを含むフォルダーを ID によって取得します。この機能を許可するには、次のコマンドを使用して構成ファイルを公開する必要があります
php artisan vendor:publish --tag= " filament-media-manager-config "
その後、構成ファイルでapi.active
true
に設定できます
' api ' => [
" active " => true ,
],
このコマンドを使用して構成ファイルを公開できます
php artisan vendor:publish --tag= " filament-media-manager-config "
このコマンドを使用してビューファイルを公開できます
php artisan vendor:publish --tag= " filament-media-manager-views "
このコマンドを使用して言語ファイルを公開できます
php artisan vendor:publish --tag= " filament-media-manager-lang "
このコマンドを使用して移行ファイルを公開できます
php artisan vendor:publish --tag= " filament-media-manager-migrations "
素晴らしい TomatoPHP をチェックしてください