[已解决] 我在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>
无论如何,如果有人提供更有效的解决方案,我还是会非常感激的:)
答案 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_by
和 updated_by
。您可以根据需要向 save()
方法添加其他逻辑。
已在 Laravel 8 中测试 [并且也应在 5.7 中工作]