2

我已经开始使用 Voyager,但我遇到了控制器问题。

我在数据库中创建了一个名为 Progress 的新表,voyager 默认创建一个 BREAD 表单来浏览 read delete 和 add items 。

当用户添加新项目时,我喜欢将默认值放入字段中。我喜欢输入的默认值是 authentication user_id

我怎样才能做到这一点?

谢谢。

4

4 回答 4

2

您可以在 Voyager 之外完全做到这一点。

首先从添加表单中排除authentication_user_id(在 Voyager 的数据库界面中)。如果该字段不采用空值,您可以设置一些临时默认值,或修改您的迁移 - 以最方便的为准。

接下来创建一个模型观察者,然后使用该created()功能。例如:

<?php
    namespace App\Observers;

    use App\Models\Project;

    class ProgressObserver
    {
        /**
         * Listen to the Progress created event.
         *
         * @param  Progress  $progress
         * @return void
         */
         public function created(Progress $progress)
         {
            $progress->authentication_user_id = WHATEVER_YOU_DO_HERE;
            $progress->save();
         }

    }
于 2017-08-31T14:30:16.597 回答
1

您可以通过为面包创建模型来做到这一点,如图所示 在此处输入图像描述

为面包创建模型后,您可以创建一个名为save

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use TCG\Voyager\Traits\Translatable;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
use Auth;

class MyViewModel extends Model
{
    //
    protected $table = "my_view";

    public function save(array $options = [])
    {
        $this->user_id = \Auth::user()->id;
        parent::save();
    }
}

现在,每当您在 voyager 管理中保存任何记录时,您都会看到当前登录用户 ID 已保存在您的数据库表中。

于 2017-08-23T20:46:13.130 回答
0

我认为您可以创建一个迁移来为该字段写入默认值

于 2017-06-26T14:42:13.073 回答
0

您必须像这样将以下代码添加到模型中,

//assign created_by loggedin user
 public function __construct(array $attributes = [])
{
    $this->creating([$this, 'onCreating']);
    parent::__construct($attributes);
}

public function onCreating($row)
{
    // Placeholder for catching any exceptions
    if (!\Auth::user()->id) {
        return false;
    }

    $row->setAttribute('created_by', \Auth::user()->id);
    $row->setAttribute('assign_to', \Auth::user()->id);
}

我添加了这个,因为我的项目需要这个。您还可以在 onCreating() 函数中添加您的字段。

于 2017-11-30T08:37:33.203 回答