🐈

laravel filamentでform selectの初期値をGETパラメーター指定する

2023/12/06に公開

初めに

GETパラメータで選択肢で初期選択idを指定出来たら便利だなと思ったので、
実装しみる。

admin/documents/create?project_id=1
というGETパラメータ付きのURLの場合、

このSELECTは初期表示でproject_id=1の物を選択している状態で表示して欲しい

src

use Filament\Forms\Components;
Components\Select::make('project_id')->label('プロジェクト')
    //選択肢を作る
    ->options(
        Project::all()->pluck('name', 'id')
    )
    //初期選択を設定する
    ->default(function(Components\Component $component){
        //$componentの中には、project_idSelectの状態が入ってる。
        if(!isset($_GET['project_id']) || $_GET['project_id'] == null){
	    return null;
	}
	$projectId = $_GET['project_id'];
	//getOptions()関数で選択肢のarrayが帰ってくる
	if(isset($component->getOptions()[$projectId])){
	    return $projectId;
        }
    })
    //検索できるようにする
    ->searchable()
    //必須チェック
    ->required(),

解説

->default(function(){})を利用する。

Discussion