Доброе время суток,
Я пытаюсь создать ресурс, который состоит из 2 полей, одно из которых должно быть заполнено на основе значения другого.
Для этого я использую NovaDependencyContainer .
Целевое поле: Выберите со следующей структурой:
Select::make('Course', 'courses')->options($this->loadAvailableCourses())
Это поле создает массив со всеми доступными курсами:
$courses = \App\Models\TrainingCenter\Course::all();
$links = [];
foreach ($courses as $course) {
$course = $course->toArray();
$links[$course['id']] = $course['title'][app()->getLocale()];
$this->availableCourses[$course['id']] = $course['link'];
}
return $links;
После загрузки курсов параметры выбора возвращаются переменной $ links , в то же время локальное свойство availableCourses заполняется отношением 'course-id' => 'course-link'
.
После того, как пользователь выбирает курс, запускается следующий фрагмент кода:
NovaDependencyContainer::make([
Code::make('Test', function(){
return json_encode($this->courses);
})->language('json'),
])->dependsOnNotEmpty('courses')
Однако переменная $this->courses
пуста (я предполагал, что она должна быть заполнена только в тот момент, когда я выбрал курс).
Я что-то не так делаю, или нет способа добиться желаемой функциональности?
Чтобы упростить задачу, вот что я пытаюсь достичь:
- Предоставление пользователю возможности выбирать курс
- Если выбран курс, то создайте поле, в котором будет отображаться идентификатор выбранного курса
- Оттуда я хочу использовать этот идентификатор курса, чтобы получить ссылку на курс (он не упоминается в вопросе, поскольку, когда я смогу получить идентификатор курса, я смогу извлечь эту ссылку из ранее созданный availableCourses массив)
P.S. Этот ресурс и ресурс Course НЕ имеют никакого отношения, поэтому я не могу использовать отношение.