Я разрабатываю веб-приложение с использованием Laravel Nova. Laravel Nova - довольно новая технология. Теперь то, что я сейчас делаю, - это переопределение обратного вызова Field для добавления собственной бизнес-логики, а не выполнения операции с базой данных. Смотрите мой сценарий ниже.
Это мой метод полей моего ресурса
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make("Subject")->fillUsing(function(){
//here, I like to get the id of the created model. How?
}),
Text::make('Title')->sortable()
];
}
Как видите, я переопределяю логику поля Тема. Мне нравится получать идентификатор модели внутри обратного вызова. Как мне этого добиться?






Когда вы посмотрите на класс Field.php, вы увидите, как используется fillCallback:
protected function fillAttribute(NovaRequest $request, $requestAttribute, $model, $attribute)
{
if (isset($this->fillCallback)) {
return call_user_func(
$this->fillCallback, $request, $model, $attribute, $requestAttribute
);
}
$this->fillAttributeFromRequest(
$request, $requestAttribute, $model, $attribute
);
}
Следовательно, внутри вашей функции обратного вызова вы можете получить доступ к таким переменным:
Text::make('Subject')->fillUsing(function($request, $model, $attribute, $requestAttribute) {
dd($model->id);
});