Laravel-admin Form linkage 多選問題
多選搭配 ->when() 在編輯資料的時候都會出現 addslashes() expects parameter 1 to be string, array given 問題,新增資料則正常。
解決方法是不要用 ->when(),把兩個欄位拆開來寫,再另外寫 JS 控制欄位的顯示或隱藏。
發生原因是 Select class JS 會用到 addslashes() 函數,單選的時候把單個 value 傳給函數處理沒問題;多選時變成傳一個陣列,就會出錯。
- $form
- ->multipleSelect('nationality', 'Nationality')
- ->options([
- 1 => 'China',
- 2 => 'foreign',
- ])
- ->when('has', 2, function (Form $form) {
- $form->text('name', 'Name');
- });
解決方法是不要用 ->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');
- ");
留言
張貼留言