首页 > 解决方案 > Laravel 基于另一个选择框填充选择框

问题描述

我不知道从哪里开始。我正在使用 Laravel 和 LaravelCollective 表单字段。我要做的是根据第一个包含名称script的选择框中的选择填充第二个选择框(包含日期) 。patient我假设它会以某种方式涉及JavaScript?

脚本模型包含一个patient_id将其链接到患者模型的列,因此可用于将脚本日期过滤到仅患者拥有的日期。

控制器

$patients_select = Patient::orderBy('last_name', 'asc')
    ->get()
    ->pluck('full_name', 'id');

$scripts_select = Script::orderBy('prescribe_date', 'desc')
//      ->where('patient_id', $patient_id)
    ->pluck('prescribe_date', 'id')
    ->map(function ($date, $key) {
        return date('m/d/Y', strtotime($date));
    });

<div class="form-group">
    {{Form::label('patient', 'Patient')}}
    {{Form::select(
        'patient',
        $patients_select,
        null, 
        ['class' => 'form-control', 'placeholder' => 'Select a Patient']
    )}}
</div><!-- /form-group -->

<div class="form-group">
    {{Form::label('script', 'Script')}}
    {{Form::select(
        'script',
        $scripts_select,
        null, 
        ['class' => 'form-control', 'placeholder' => 'Select a Script']
    )}}
</div><!-- /form-group -->

标签: javascriptphplaravel

解决方案


您将不得不change在患者选择的事件上收听事件(是的,在 javascript 中)。这里至少有两种可能:

  1. 将所有“脚本”数据存储在 javascript 变量中,然后在脚本选择中填充选项。

  2. 渲染.blade文件中所有可能的选择并用display: none. 根据患者选择,您将只需要显示一个脚本选择。提交表单时注意不要全部发送。

好吧,您也可以在选择后重新加载页面,但我怀疑您是否愿意这样做。;)


推荐阅读