您好,登錄后才能下訂單哦!
小編給大家分享一下laravel-admin如何解決表單select聯動時編輯默認沒選上的問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在開發公司一個功能時,公司開發環境用的是laravel-admin,因為需要用上select聯動,所以根據文檔說明進行開發,并成功的使用上了,代碼我就不重復,大家可以去參考laravel-admin官網的說明。
首先我們找到select的js,路徑:跟目錄/vendor/encore/laravel-admin/src/Form/Field下的Select.php文件,找到下面代碼:
$script = <<<EOT $(document).on('change', "{$this->getElementClassSelector()}", function () { var target = $(this).closest('.fields-group').find(".$class"); $.get("$sourceUrl?q="+this.value, function (data) { target.find("option").remove(); $(target).select2({ data: $.map(data, function (d) { d.id = d.$idField; d.text = d.$textField; return d; }) }).trigger('change'); }); }); EOT;
并修改成以下代碼:
$script = <<<EOT $(document).on('change', "{$this->getElementClassSelector()}", function () { var target = $(this).closest('.fields-group').find(".$class"); $.get("$sourceUrl?q="+this.value, function (data) { target.find("option").remove(); $(target).select2({ data: $.map(data, function (d) { d.id = d.$idField; d.text = d.$textField; return d; }) }).trigger('change'); }); }); $('{$this->getElementClassSelector()}').trigger('change'); EOT;
我們在原有代碼中加入這句:
$('{$this->getElementClassSelector()}').trigger('change');
作用就是在初始化的時候觸發一次聯動。
然后在我們的表單中,我們再來定義編輯初始時候的值,代碼如下:
$form->select('hezuo', "合作模式")->options(function () { $record = request()->route()->parameters(); $record = $record["chanpin"]; $data = ChanpinModel::where('id', $record)->first(); $hezuoList = array( "1" => '測試1', "2" => '測試2', "3" => '測試3', ); $hezuo = $data->hezuo; return [$hezuo => $hezuoList[$hezuo]]; });
這段代碼是根據當前記錄的值,去獲取對應所屬那個選項,這樣便使select聯動編輯時,能夠默認選上我們的值。
以上是“laravel-admin如何解決表單select聯動時編輯默認沒選上的問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。