2017-06-15 1 views
0

J'ai commencé à utiliser Voyager et j'ai des problèmes avec un contrôleur.Contrôleur BREAD Laravel Voyager overwrite

J'ai créé une nouvelle table dans la base de données appelée Progress, voyager par défaut créer un formulaire BREAD pour parcourir la suppression de lecture et ajouter des éléments.

J'aime mettre une valeur par défaut dans un champ lorsque l'utilisateur va ajouter un nouvel élément. La valeur par défaut que j'aime mettre est l'authentification user_id

Comment puis-je faire cela?

Merci.

+0

Pouvez-vous remplacer les vues de paquet? Je n'ai jamais utilisé voyager, donc je ne fais que prendre une photo dans le noir ici, mais si vous pouvez publier les fichiers du fournisseur et les modifier, vous pouvez définir la valeur par défaut de cette façon. – btl

Répondre

0

Je pense que vous pouvez créer une migration pour écrire une valeur par défaut pour ce champ

0

Vous pouvez le faire en créant un modèle pour votre pain, comme le montre l'image enter image description here

après avoir fait la création un modèle pour votre pain, vous pouvez créer une fonction nommée 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(); 
    } 
} 

maintenant chaque fois que vous enregistrez tout enregistrement dans l'administration de voyager, vous verrez l'ID utilisateur de connexion en cours est Getti ng enregistré dans votre table de base de données.

0

Vous pouvez le faire complètement en dehors de Voyager.

D'abord exclure le authentication_user_id du formulaire Ajouter (dans l'interface de base de données de Voyager). Si le champ ne prend pas une valeur nulle, vous pouvez définir une valeur par défaut temporaire ou modifier vos migrations, selon ce qui vous convient le mieux.

Ensuite, créez un model observer puis utilisez la fonction created(). Par exemple:

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

    } 
0

Vous devez ajouter le code suivant dans le modal comme celui-ci,

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

j'ai ajouter cela à cause de mon projet ce besoin. vous pouvez également ajouter votre champ dans la fonction onCreating().