2016-07-21 41 views
0

Wie können Sie sowohl den Autor des Beitrags als auch den Autor eines Kommentars zu löschen? Ich meine, der Autor der Beiträge kann jeden Kommentar unter seinen Beiträgen löschen, während der Autor eines Kommentars nur die Kommentare löschen kann, die er hinterlassen hat.definieren eine Richtlinie für Kommentare löschen, die überprüft, Kommentarautor oder Postautor (Laravel)

Bisher habe ich eine commentPolicy Klasse, die wie folgt funktioniert:

class CommentPolicy 
{ 
    public function deleteComment(User $user, Comment $comment) 
    { 

     return $user->id === $comment->user_id; 

    } 

} 

dies natürlich für den Autor des Kommentars funktioniert. Was ich denke ist, dass ich den Autor der Beiträge aktivieren sollte, um Kommentare in der postPolicy-Klasse zu löschen. Was ich habe, ist:

class PostPolicy 

{ 

    public function seePostOptions(User $user, Post $post) 
    { 
     return $user->id === $post->user_id; 
    } 


} 

Momentan befindet sich der Autor der Post einige Optionen sehen können, bearbeiten/löschen/Kommentar zum Beitrag. Ich dachte, vielleicht sollte ich nur zwei @can('deleteComment', $c)<>delete button<>@endcan und @can('seePostOptions' $i)<>delete button<>@endcan setzen, aber dies wird doppelte Schaltfläche für alle diese Kommentare vom Autor des Beitrags unter seinem Post verlassen.

Antwort

0

die Lösung die @else Richtlinie wie folgt verwendet:

@can('deleteComment', $c) 
<p>delete</p> 
@else 
@can('seePostOptions', $i) 
<p>delete</p> 
@endcan 
@endcan