Laravel 背包字段 - select_from_array 功能

Laravel backpack fields - select_from_array functionality

我正在使用 laravel 背包。已经创建了一个新的申请表。使用 'select_from_array':

创建了几个可供选择的字段
$this->crud->field('range')->type('select_from_array)->label(__('number range'))
   ->options(Group::NUMBER_RANGE);

$this->crud->field('range1')->type('select_from_array)->label(__('letter range'))
   ->options(Group::LETTER_RANGE);

$this->crud->field('range2')->type('select_from_array)->label(__('symbol range'))
   ->options(Group::SYMBOL_RANGE);

例如,每个字段有 3 个下拉值可供选择(为了更清楚,假设数字范围有 1 / 2 / 3,然后字母范围有 A / B / C,符号范围有太阳/月亮/风)。

我想应用此功能 - 如果从数字范围 I select 1,我希望该字母范围仅显示 A 和 B(并且 C 应该从值选择中消失)和符号范围给我看风。或者,如果我选择字段字母范围并选择选项值 B,我希望符号范围字段只显示 Sun。

一般来说,我希望字段会根据我在前一个字段中所做的选择相互反应,下一个字段会显示我可以选择的不同选项。

我该怎么做?

提前谢谢你:)

Backpack 目前并不容易做到这一点,但也不难做到。

选项 A - javascript

您可以使用 the script widget 在页面上推送一些 javascript,这将执行您想要的任何操作,包括此功能。


Widget::add()->type('script')->content('assets/js/admin/request_form.js'); 

有一个活跃的拉取请求试图使与 front-end 上的字段交互变得更容易(PR #4312),但在合并之前,您可以使用 vanilla JS 或 jQuery 随心所欲

选项 B - select2_from_ajax

或者,您可以使用 select2_from_ajax 字段类型,它允许您使用“依赖”属性来做到这一点。由于您可以控制 AJAX 端点,因此您可以根据其他表单选择 return 不同的结果。

但是:

  • 我认为让这 3 个选择产生 AJAX 请求有点矫枉过正,因为一些 JS 可以对常规选择做同样的事情;
  • 这是一个 PRO 字段,因此只有购买了 PRO 插件才能使用;