Я даже не знаю, с чего начать. Я использую поля формы 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 -->
Вам нужно будет прослушать событие change
, если пациент выберет (да, в javascript). Здесь есть как минимум две возможности:
Сохраните все данные «сценария» в переменной javascript, а затем укажите параметры в выбранном сценарии.
Визуализируйте все возможные выборки в файле .blade
и скройте их с помощью display: none
. В зависимости от выбора пациента вам нужно будет показать только один выбор сценария. Будьте осторожны, чтобы не отправить их все при отправке формы.
Ну, вы также можете перезагрузить страницу после выбора, но я сомневаюсь, что вы хотите это сделать. ;)