• Czas czytania ~1 min
  • 20.06.2022

Laravel Markable to pakiet do integracji polubień, zakładek, ulubionych, reakcji i niestandardowych znaków Twoja aplikacja.

Podstawowym zastosowaniem jest dodanie cechy Markable i typów „znaków”, które chcesz zezwolić na dany model.Na przykład, jeśli masz model Kursu i chcesz, aby użytkownicy polubili kurs:

namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
use Maize\Markable\Markable;
use Maize\Markable\Models\Like;
 
class Course extends Model
{
    use Markable;
 
    protected $fillable = [
        'title',
        'description',
    ];
 
    protected static $marks = [
        Like::class,
    ];
}

Po wdrożeniu tego modelu zarządzanie znakami za pomocą tego pakietu wygląda tak:

use App\Models\Course;
use Maize\Markable\Models\Like;
 
// marks the course liked for the given user
Like::add($course, $user);
 
// unmarks the course liked for the given user
Like::remove($course, $user);
 
// toggles the course like for the given user
Like::toggle($course, $user);
 
// returns whether the given user likes a course or not
Like::has($course, $user);
 
// returns how many users like a course
Like::count($course);

Model Lubię jest wbudowany w pakiet, ale można również budować własne modele znaczników, takie jak Pledge, które pozwalają użytkownikowi złożyć datek na rzecz przyczyna.

Pakiet zawiera różne typy znaków gotowe do użycia, w tym:

  • Bookmark
  • Favorite
  • Like
  • Reaction

Po drugiej stronie dodawania polubienia dla użytkownika możesz wymienić wszystkie polubienia dla danego użytkownika, aby mogli zobaczyć, jakie kursy polubiły:

// All course models with a like from the given user
Course::whereHasLike(
    auth()->user()
)->get();
 
// All post models with a 'heart' reaction from the given user
Post::whereHasReaction(
    auth()->user(),
    'heart'
)->get();

Możesz dowiedzieć się więcej o tym pakiecie, uzyskać pełne instrukcje instalacji i wyświetlić

Przejdź do oryginału

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297