Laravel-admin Form linkage 多選問題
多選搭配 ->when() 在編輯資料的時候都會出現 addslashes() expects parameter 1 to be string, array given 問題,新增資料則正常。
解決方法是不要用 ->when(),把兩個欄位拆開來寫,再另外寫 JS 控制欄位的顯示或隱藏。
$form
->multipleSelect('nationality', 'Nationality')
->options([
1 => 'China',
2 => 'foreign',
])
->when('has', 2, function (Form $form) {
$form->text('name', 'Name');
});
發生原因是 Select class JS 會用到 addslashes() 函數,單選的時候把單個 value 傳給函數處理沒問題;多選時變成傳一個陣列,就會出錯。解決方法是不要用 ->when(),把兩個欄位拆開來寫,再另外寫 JS 控制欄位的顯示或隱藏。
$form
->multipleSelect('nationality', 'Nationality')
->options([
1 => 'China',
2 => 'foreign',
]);
$form->text('name', 'Name');
Admin::script("
$('.nationality').on('change', function (e) {
var checked = $(this).val();
if ($.inArray('2', checked) != -1) {
$('.name').closest('.form-group').removeClass('hide');
} else {
$('.name').closest('.form-group').addClass('hide');
}
}).trigger('change');
");

留言
張貼留言