2016-11-19 6 views
0

私のアプリでは、期限が切れた場合に機能を制限するシナリオがあります。たとえば、制限フィールド「2016-11-20」を設定すると、「2016-11-20」の時間が過ぎると、「Add your Journal」ボタンが消えたり、エラーがスローされたりします。どのようにLaravel 5.3でそれを行うには?可能であれば、ゲートやポリシーを使用したいと思います。期限が過ぎても機能制限(ボタンの表示/非表示)

版テーブルの移行:

Schema::create('edition', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('volume'); 
      $table->text('cover')->nullable(); 
      $table->integer('number'); 
      $table->date('limit')->nullable(); 
      $table->timestamps(); 
     }); 

ボタンビュー:助けを

@if (Auth::check() && Auth::user()->level == 'author') 
           <div class="tombol-nav"> 
            <a href="../journal/create?edition={{$edition->id}}" class="btn btn-primary">Add Your Journal</a> 
           </div> 
           @endif 

感謝。

+0

私の母国語ではなく、私の母国語ではない –

答えて

1

実際にはGateファサードを使用する必要があります。ブレードとの併用方法はdocumentionsです。

create policyのようなものがあります。

Gate::define('add-journal', function ($user, $edition) { 
    $limit = $edition->limit 
    return (time() < $limit) 
}); 

は、その後、あなたのビューでは、あなたが注意点としてブレード

@can('add-journal', $edition) 
    <div class="tombol-nav"> 
     <a href="../journal/create?edition={{$edition->id}}" class="btn btn-primary">Add Your Journal</a> 
    </div> 
@endcan 

を使用することができ、あなたのAuth::check()のために、私はあなたが別のミドルウェアであること置く示唆しています。

+1

ありがとうございました。しかし、 "../journal/create?edition={{$edition-deid}}"というURLはまだアクセス可能です(ボタンは消えます)。時間が過ぎた。この場合、ミドルウェアを作成してそれを処理する必要がありますので、ルートにもアクセスできなくなりますか? –

+0

確かに。 'Gate :: allows()'を使ってルートを保護するミドルウェアを作成する必要があります。 – Wistar

+0

ありがとう、ありがとう。 –

関連する問題