Laravel Voyager перезаписывает контроллер BREAD

Я начал использовать "Вояджер", и у меня проблемы с контроллером.

Я создал новую таблицу в базе данных под названием Progress, voyager по умолчанию создает форму BREAD для просмотра чтения, удаления и добавления элементов.

Мне нравится помещать значение по умолчанию в поле, когда пользователь идет, чтобы добавить новый элемент. Значение по умолчанию, которое я хотел бы поставить, - это authentication user_id.

Как я могу это сделать?

Спасибо.


person Pedro    schedule 15.06.2017    source источник
comment
Можете ли вы переопределить представления пакетов? Я никогда не использовал Voyager, поэтому здесь я просто делаю снимок в темноте, но если вы можете опубликовать файлы поставщика и изменить их, вы можете установить значение по умолчанию таким образом.   -  person    schedule 15.06.2017


Ответы (4)


Вы можете сделать это полностью вне «Вояджера».

Сначала исключите 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();
         }

    }
person Sam    schedule 31.08.2017

Вы можете сделать это, создав модель своего хлеба, как показано на изображении  введите описание изображения здесь

после того, как вы создали модель для своего хлеба, вы можете создать функцию с именем 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, вы увидите, что текущий идентификатор пользователя для входа сохраняется в вашей таблице базы данных.

person Abhinav Verma    schedule 23.08.2017

Я думаю, вы можете создать миграцию, чтобы написать значение по умолчанию для этого поля

person Apit John Ismail    schedule 26.06.2017

Вы должны добавить следующий код в модальное окно, например,

//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 ().

person Niket Joshi    schedule 30.11.2017