【问题标题】:Laravel Nova BelongsTo field has error when using with $request->viaResource与 $request->viaResource 一起使用时,Laravel Nova BelongsTo 字段有错误
【发布时间】:2019-06-24 19:59:32
【问题描述】:
  • Laravel 版本:5.8
  • Nova 版本: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

【问题讨论】:

    标签: php laravel laravel-nova


    【解决方案1】:

    将字段部分中的 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'),
        ];
    }
    

    我在我的新星草稿项目中检查过,它运行良好,没有任何错误!

    【讨论】:

      猜你喜欢
      • 2021-03-19
      • 2019-12-08
      • 2022-08-05
      • 2023-04-04
      • 2019-05-12
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多