Laravel Nova BelongsTo 字段在与 $request->viaResource 一起使用时出错
Laravel Nova BelongsTo field has error when using with $request->viaResource
- Laravel版本:5.8
- 新星版本:2.0.5
- PHP版本:7.3
- 操作系统和版本:MAC OS 10.14.4
- 浏览器类型和版本:Google Chrome 75.0.3770.100
描述:
我有一个允许创建任务的应用程序。一项任务属于一项活动。
我在活动详细信息页面中有一个创建按钮,如果用户单击该按钮,那么 URL 将如下所示:
http://demo.test/nova/resources/tasks/new?viaResource=campaigns&viaResourceId=1&viaRelationship=
.
如您所见,我添加了 resource id
,因此我可以在创建任务时使用它们。类似的东西:
$campaign = Campaign::find($request->viaResourceId);
...
Select::make('Campaign', 'campaign_id')
->options([$campaign->id => $campaign->name])
->displayUsingLabels()
->withMeta(['value' => $campaign->id])
->hideWhenUpdating()
->readonly(true),
除非我将 BelongsTo
字段用于另一个关系(在本例中是任务组),否则该代码有效。似乎 BelongsTo
字段提出了另一个请求,它没有在 URL 中附加 viaResourceId
,所以我无法访问我的 campaign
变量。例如,$campaign->id
-> 我收到错误:Trying to get property 'id' of non-object
将字段部分的app\Nova\Task.php改为:
public function fields(Request $request)
{
if($request->editMode=="create" && !empty($request->viaResource) && !empty($request->viaResourceId)){
$campaign = Campaign::find($request->viaResourceId);
return [
ID::make()->sortable(),
Text::make('Name')->sortable(),
Select::make('Campaign', 'campaign_id')
->options([$campaign->id => $campaign->name])
->displayUsingLabels()
->withMeta(['value' => $campaign->id])
->hideWhenUpdating()
->readonly(true),
BelongsTo::make('Group')->display('name'),
];
}
return [
ID::make()->sortable(),
Text::make('Name')->sortable(),
BelongsTo::make('Campaign')->display('name'),
BelongsTo::make('Group')->display('name'),
];
}
我在我的nova draft项目中检查了一下,运行良好,没有报错!
- Laravel版本:5.8
- 新星版本:2.0.5
- PHP版本:7.3
- 操作系统和版本:MAC OS 10.14.4
- 浏览器类型和版本:Google Chrome 75.0.3770.100
描述:
我有一个允许创建任务的应用程序。一项任务属于一项活动。
我在活动详细信息页面中有一个创建按钮,如果用户单击该按钮,那么 URL 将如下所示:
http://demo.test/nova/resources/tasks/new?viaResource=campaigns&viaResourceId=1&viaRelationship=
.
如您所见,我添加了 resource id
,因此我可以在创建任务时使用它们。类似的东西:
$campaign = Campaign::find($request->viaResourceId);
...
Select::make('Campaign', 'campaign_id')
->options([$campaign->id => $campaign->name])
->displayUsingLabels()
->withMeta(['value' => $campaign->id])
->hideWhenUpdating()
->readonly(true),
除非我将 BelongsTo
字段用于另一个关系(在本例中是任务组),否则该代码有效。似乎 BelongsTo
字段提出了另一个请求,它没有在 URL 中附加 viaResourceId
,所以我无法访问我的 campaign
变量。例如,$campaign->id
-> 我收到错误:Trying to get property 'id' of non-object
将字段部分的app\Nova\Task.php改为:
public function fields(Request $request)
{
if($request->editMode=="create" && !empty($request->viaResource) && !empty($request->viaResourceId)){
$campaign = Campaign::find($request->viaResourceId);
return [
ID::make()->sortable(),
Text::make('Name')->sortable(),
Select::make('Campaign', 'campaign_id')
->options([$campaign->id => $campaign->name])
->displayUsingLabels()
->withMeta(['value' => $campaign->id])
->hideWhenUpdating()
->readonly(true),
BelongsTo::make('Group')->display('name'),
];
}
return [
ID::make()->sortable(),
Text::make('Name')->sortable(),
BelongsTo::make('Campaign')->display('name'),
BelongsTo::make('Group')->display('name'),
];
}
我在我的nova draft项目中检查了一下,运行良好,没有报错!