怎么在laravel-admin中實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)主營(yíng)陜西網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開(kāi)發(fā)公司,陜西h5微信小程序開(kāi)發(fā)搭建,陜西網(wǎng)站營(yíng)銷推廣歡迎陜西等地區(qū)企業(yè)咨詢首先,按照l(shuí)aravel-admin的文檔,在Model中添加
public function __construct(array $attributes = []) { parent::__construct($attributes); $this->setParentColumn('pid'); $this->setOrderColumn('sort'); $this->setTitleColumn('name'); }
然后在form上添加城市和地區(qū)的select控件
protected function form() { return Admin::form(AreaModel::class, function (Form $form) { $form->text('name', '名稱')->rules("required"); $form->select('city_id','城市')->options( DealCityModel::selectOptionsNoRoot() )->load('pid', 'district')->loadOne('pid', 'district');//load方法是框架自帶的,定義在vendor=>encore=>laravel-admin=>src=>Form=>Field=>Select文件中,loadone是自己寫的,在后面會(huì)給出代碼district為自己定義的方法,pid是根據(jù)城市的變化而變化的下拉列表框名稱,也就是下面這個(gè)。 $form->select('pid','地區(qū)')->options(array(0 =>'請(qǐng)選擇地區(qū)')); }); }
在from方法后面新建一個(gè)district方法
public function district(Request $request) { $cityId = $request->get('q'); $list = AreaModel::where(['city_id' => $cityId, 'pid' => 0])->get(['id', DB::raw('name as text')]); foreach ($list as $key => $value) { $arr[] = array("id" => $value->id, "text" => $value->text); } return $arr;//返回?cái)?shù)組到地區(qū)的option }
在vendor=>encore=>laravel-admin=>src=>Form=>Field=>Select文件里load方法后新建一個(gè)方法命名為loadone,代碼如下:
public function loadOne($field, $sourceUrl, $idField = 'id', $textField = 'text') { if (Str::contains($field, '.')) { $field = $this->formatName($field); $class = str_replace(['[', ']'], '_', $field); } else { $class = $field; } $script = <<getElementClassSelector()}").val(), function (data) { target.find("option").remove(); $(target).select2({ data: $.map(data, function (d) { d.id = d.$idField; d.text = d.$textField; return d; }) }); }); }); EOT; Admin::script($script); return $this; }
其實(shí)就是相當(dāng)于給load方法增加了一個(gè)默認(rèn)時(shí)的數(shù)據(jù)填充。
最后,千萬(wàn)別忘記在路由上加上district方法哈,要把定義district的路由寫在上面→
Laravel 是一套簡(jiǎn)潔、優(yōu)雅的PHP Web開(kāi)發(fā)框架。它可以讓你從面條一樣雜亂的代碼中解脫出來(lái);它可以幫你構(gòu)建一個(gè)完美的網(wǎng)絡(luò)APP,而且每行代碼都可以簡(jiǎn)潔、富于表達(dá)力。
看完上述內(nèi)容,你們掌握怎么在laravel-admin中實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!