🐈
laravel filamentでform selectの初期値をGETパラメーター指定する
初めに
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