Laravel Voyager覆盖了BREAD控制器

时间:2017-06-15 20:39:08

标签: php laravel voyager

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

我在数据库中创建一个名为Progress的新表,默认情况下,voyager创建一个BREAD表单来浏览读取删除和添加项目。

我想在用户添加新项目时将默认值放入字段中。我想要的默认值是authentication user_id

我该怎么做?

感谢。

4 个答案:

答案 0 :(得分:1)

你可以在旅行者之外完全做到这一点。

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

接下来创建一个model observer,然后使用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();
         }

    }

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以通过为面包创建模型来实现,如图所示 enter image description here

为面包创建模型后,您可以创建名为\\s*

的函数
save

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

答案 3 :(得分: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()函数中添加你的字段。