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

时间:2019-04-21 10:13:11

标签: php json laravel voyager

[已解决] 我在laravel 5.7项目中有一个简单的清单,并使用voyager来管理其数据。 我想制作一个完全正常工作的 created_by last_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
{
    //
}

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

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

//printed output(for testing)
 {{$currentUser}}

并且有效!,所以我试图设置BREAD选项,像这样

{
    "default" : "{{$currentUser}}"
}

但是,与我的自定义视图不同的是,它没有返回$ currentUser值,只是在表中仅显示{{$ currentUser}}。

请帮助我制作一个功能齐全的 created_by last_edit_by 表。

注意:即时开放使用任何软件包。

EDIT:通过在我的自定义视图(edit-add.blade.php)中复制真实动态表单正下方的表单来解决,并使其成为隐藏类型 created_by last_edited_by table并保持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>

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

1 个答案:

答案 0 :(得分:2)

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

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

模型

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();
}

每当保存新模型记录时,这将添加 created_byupdated_by。您可以根据需要向 save() 方法添加其他逻辑。

已在 Laravel 8 中测试 [并且也应在 5.7 中工作]