2017-06-15 14 views
0

Voyagerを使い始めましたが、コントローラに問題がありました。Laravel VoyagerはBREADコントローラを上書きします

私はProgressと呼ばれるデータベースに新しいテーブルを作成しました。デフォルトでは、voyagerはBREADフォームを作成して読み取りの削除とアイテムの追加をブラウズします。

ユーザーが新しいアイテムを追加するときにフィールドにデフォルト値を設定するのが好きです。私が入れたいデフォルト値は認証ですuser_id

どうすればいいですか?

ありがとうございました。

+0

パッケージビューをオーバーライドできますか?私はボイジャーを使ったことがないので、ここでは暗闇の中で撮影していますが、ベンダーのファイルを公開して変更することができれば、そのようにデフォルトを設定することができます。 – btl

答えて

0

は、私はあなたがそのフィールドのデフォルト値を書くために、移行を作成することができると思い

0

あなたは画像のように、あなたのパンのためのモデルを作成することにより、 enter image description here

あなたが作成が完了した後にそれを行うことができますあなたは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(); 
    } 
} 

という名前の関数を作成することができますあなたのパンのためのモデルは、今あなたが航海の政権内の任意のレコードを保存するたびに、あなたが表示されます、現在のログインユーザIDがgettiですデータベーステーブルに保存されます。

0

これはVoyagerの外部で行うことができます。

最初に、追加フォーム(Voyagerのデータベースインターフェイス内)からauthentication_user_idを除外します。フィールドにNULL値が設定されていない場合は、一時的なデフォルト値を設定するか、マイグレーションを変更することができます。

次に、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(); 
     } 

    } 
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()関数でフィールドを追加することもできます。

関連する問題