2017-10-12 5 views
3

Si je me suis connecté en tant que John, comment puis-je afficher uniquement le bouton rouge de John au lieu de celui de Susan?Afficher uniquement le bouton de l'utilisateur connecté dans Laravel

Environnement du système de test: Win10, Laravel5.4, Mysql5.7.19.

enter image description here

<table class="table table-responsive" id="jobs-table"> 
    ... 
    @foreach($jobs as $job) 
     <tr> 
      <td>{!! $job->user_name !!}</td> 
      ... 
      <td>{!! $job->created_at !!}</td> 
      <td> 
       {!! Form::open(['route' => ['jobs.destroy', $job->id], 'method' => 'delete']) !!} 
       <div class='btn-group'> 
        <a href="{!! route('jobs.show', [$job->id]) !!}" class='btn btn-default btn-xs'><i class="glyphicon glyphicon-eye-open"></i></a> 
        <a href="{!! route('jobs.edit', [$job->id]) !!}" class='btn btn-default btn-xs'><i class="glyphicon glyphicon-edit"></i></a> 
        {!! Form::button('<i class="glyphicon glyphicon-stop"></i>', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure to Stop?')"]) !!} 
       </div> 
       {!! Form::close() !!}     
      </td> 
     </tr> 
    @endforeach 
+0

John et Susan a des rôles différents? – urfusion

+0

@ surfusion, il n'existe pas encore de système de rôle. Merci. – Magnetic

+0

Salut, quelle est la différence entre les deux ?? – Maraboc

Répondre

2

D'après ce que je comprends, vous voulez seulement montrer que le bouton sur les lignes qui appartiennent à cet utilisateur.

Ceci est une supposition légère, mais je suppose qu'il existe une sorte d'identifiant d'utilisateur sur cette ligne de travail - idéalement quelque chose comme un user_id qui relie la ligne à l'utilisateur associé.

Si c'est le cas, vous pouvez simplement utiliser une simple instruction if pour ce bouton.

Quelque chose comme ci-dessous fonctionnerait avec ce que vous avez:

@if ($job->user_id == Auth::id()) 
    {!! Form::button('<i class="glyphicon glyphicon-stop"></i>', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure to Stop?')"]) !!} 
@endif 

Si vous n'utilisez pas un identifiant utilisateur et seulement stocker le nom d'utilisateur alors quelque chose comme cela fonctionnerait ci-dessous - en utilisant la user_name (je suppose ce qui est unique):

@if ($job->user_name == Auth::user()->user_name) 
    {!! Form::button('<i class="glyphicon glyphicon-stop"></i>', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure to Stop?')"]) !!} 
@endif 
+0

je vous remercie pour votre réponse détaillée, mais dans les deux cas, il fonctionne invisiblement bouton rouge. J'ai également vérifié avec la connexion d'utilisateur différente. :( – Magnetic

+0

Ainsi j'ai modifié comme "si ($ job-> user_name == Auth :: user() -> name)". Votre idée était correcte :). hava une bonne journée! – Magnetic

3

Utilisez la fonction Laravel policies:

@can('delete', $job) 
    {!! Form::button('<i class="glyphicon glyphicon-stop"></i>', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure to Stop?')"]) !!} 
@endcan 

ou:

@if (auth()->user()->can('delete', $job)) 
    {!! Form::button('<i class="glyphicon glyphicon-stop"></i>', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure to Stop?')"]) !!} 
@endif 
+0

merci. mais le résultat était (3/3) ErrorException Variable non définie: $ post. Comment puis-je utiliser "can" instruction dans ce code? – Magnetic

+0

@Magnetic vous devez d'abord créer une politique, veuillez lire les docs. Ensuite, utilisez '$ job' au lieu de' $ post'. '$ post' était juste un exemple de docs. –

+1

merci pour vos conseils. J'ai besoin d'apprendre sur l'utilisation de la fonctionnalité des politiques. :) – Magnetic

0

Ajout système de rôle sera le rendre plus facile donc envisager d'ajouter le système de rôle

+0

ok Je vais ajuster après avoir essayé d'ajuster les politiques. Merci.;) – Magnetic