如何使用当前登录的用户预填 voyager BREAD 表格?

Maf*_* SP 5 php json laravel voyager

[已解决] 我的 Laravel 5.7 项目中有一个简单的列表,并使用 voyager 来管理其数据。我想制作一个完全有效的created_bylast_edit_by BREAD 表,但仍然不知道获取当前登录的用户。

我目前使用带有复制粘贴原始代码的自定义视图(资源/视图/供应商/航海者),但仍然使用原始 VoyagerBreadController.php 并进行一些额外的导入。

?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Auth\AuthManager;
use Illuminate\Support\Facades\Auth;
use Auth\Illuminate\Foundation\Auth\AuthenticatesUsers;
use App\Wisata;
use App\User;

namespace App\Http\Controllers\Voyager;

use TCG\Voyager\Http\Controllers\VoyagerBreadController as BaseVoyagerBreadController;

class VoyagerBreadController extends BaseVoyagerBreadController
{
    //
}

Run Code Online (Sandbox Code Playgroud)

并且能够在我的自定义视图上执行此操作

//get currently logged user
@php
  $currentUser = Auth::user()->nama;
@endphp

//printed output(for testing)
 {{$currentUser}}
Run Code Online (Sandbox Code Playgroud)

它有效!,所以我尝试像这样设置 BREAD 选项

{
    "default" : "{{$currentUser}}"
}
Run Code Online (Sandbox Code Playgroud)

但是,与我的自定义视图不同,它不返回 $currentUser 值,只是在我的表中返回简单的 {{$currentUser}}。

请帮我制作一个功能齐全的created_bylast_edit_by表。

注意:我可以使用任何软件包。

编辑:它通过在我的自定义视图(edit-add.blade.php)中复制真实动态表单正下方的表单来解决,制作隐藏类型created_bylast_edited_by表并将 BREAD 选项保持为空。您仍然可以毫无问题地调整可见性。

//created_by form
<div class="form-group hidden  col-md-12 "><input type="hidden" class="form-control" name="created_by" placeholder="Created By" value="{{$currentUser}}"></div>
//last_edited_by form
<div class="form-group hidden  col-md-12 "><input type="hidden" class="form-control" name="last_edited_by" placeholder="Last Edited By" value="{{$currentUser}}"></div>
Run Code Online (Sandbox Code Playgroud)

无论如何,如果有人提供更有效的解决方案,我仍然会非常感激:)

iam*_*.in 3

您可以向模型添加其他属性,而无需更改视图文件中的任何内容。

save()只需在相应的 Model 类中添加方法并分配其他属性即可。

模型

public function save(array $options = [])
{
    if (Auth::user()) {
        $this->created_by = Auth::user()->getKey();
        //you may use user's name or any other property
        $this->updated_by = Auth::user()->name;
    }

    return parent::save();
}
Run Code Online (Sandbox Code Playgroud)

每当保存新模型记录时,这都会添加created_by和。updated_by您可以添加额外的逻辑save()您可以根据需要向该方法

在 Laravel 8 中测试[也应该在 5.7 中工作]