Rumah >pembangunan bahagian belakang >tutorial php >Membina rangkaian sosial dengan Laravel dan Stream? Mudah!

Membina rangkaian sosial dengan Laravel dan Stream? Mudah!

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌asal
2025-02-10 08:59:08789semak imbas

Artikel ini dibina pada tutorial sebelumnya tentang menambah ciri "Ikuti" ke aplikasi Laravel menggunakan Stream. Bahagian ini memberi tumpuan kepada mengkonfigurasi model untuk penjejakan aktiviti, meneroka jenis suapan Stream, mengambil suapan, dan menjadikannya dalam pandangan.

Building a Social Network with Laravel and Stream? Easy!

Konsep Utama:

    Stream Laravel's
  • memudahkan operasi makanan, menawarkan suapan pra-dibina (pengguna, berita, pemberitahuan). FeedManager
  • data menyimpan data sebagai
  • aktiviti (pelakon, kata kerja, objek, masa, ditambah data tersuai).
  • menggunakan
  • FollowController untuk mengikuti/tidak mengikuti, mengemas kini suapan dengan sewajarnya. FeedManager
  • Aktiviti adalah
  • diperkaya sebelum paparan, mengubah data mentah ke dalam format mesra pandangan.
  • Stream menyokong pelbagai jenis suapan (berita, pemberitahuan), yang membolehkan templat tersuai untuk aktiviti yang berbeza.

Struktur Data Aktiviti:

Stream mewakili data sebagai aktiviti dengan sekurang -kurangnya: pelakon, kata kerja, objek, dan masa. Bidang tersuai juga dibenarkan.

  • Objek: Rujukan kepada contoh model.
  • Pelakon: Rujukan kepada pengguna yang membuat aktiviti.
  • kata kerja: rentetan yang mewakili tindakan (mis., 'Dicipta').
Contoh: Menentukan

dalam model activityVerb: Post

<code class="language-php">class Post extends Model
{
    // ... other code ...

    /**
     * Stream: Activity verb for post creation.
     */
    public function activityVerb()
    {
        return 'created';
    }
}</code>

Menggunakan FeedManager:

memudahkan interaksi suapan. Ia diakses melalui alias fasad yang ditetapkan dalam FeedManager. config/app.php

suapan pra-konfigurasi:

menyediakan suapan pra-dibina: pengguna, berita, dan pemberitahuan. Contoh ini terutamanya menggunakan suapan berita dan pemberitahuan. Butiran lanjut mengenai jenis suapan lain boleh didapati FeedManager di sini .

fungsian fungsian dengan feedmanager:

dikemas kini untuk menggunakan FollowController untuk tindakan ikuti/tidak ikut yang cekap: FeedManager

<code class="language-php">// app/Http/Controllers/FollowController.php

public function follow(User $user)
{
    if (!Auth::user()->isFollowing($user->id)) {
        Auth::user()->follows()->create(['target_id' => $user->id]);
        FeedManager::followUser(Auth::id(), $user->id);
        return back()->with('success', 'Now following ' . $user->name);
    } else {
        return back()->with('error', 'Already following this user.');
    }
}

public function unfollow(User $user)
{
    if (Auth::user()->isFollowing($user->id)) {
        $follow = Auth::user()->follows()->where('target_id', $user->id)->first();
        FeedManager::unfollowUser(Auth::id(), $follow->target_id);
        $follow->delete();
        return back()->with('success', 'Unfollowed ' . $user->name);
    } else {
        return back()->with('error', 'Not following this user.');
    }
}</code>

Memaparkan suapan:

a dibuat untuk mengendalikan pengambilan dan paparan suapan:

FeedsController

Kaedah
<code class="language-php">use GetStream\StreamLaravel\Enrich;

class FeedsController extends Controller
{
    // ... other code ...

    public function newsFeed(Request $request)
    {
        $feed = FeedManager::getNewsFeeds($request->user()->id)['timeline'];
        $activities = $feed->getActivities(0, 25)['results'];
        $activities = $this->enrich()->enrichActivities($activities);
        return view('feed.newsfeed', ['activities' => $activities]);
    }

    private function enrich()
    {
        return new Enrich;
    }

    // ... other methods ...
}</code>
mengendalikan transformasi data untuk rendering paparan. Laluan ditakrifkan untuk mengakses tindakan pengawal ini.

enrich

Templating:

Lihat melangkah melalui aktiviti diperkaya, menggunakan separa () untuk memberikan aktiviti individu. Partial aktiviti tersuai (mis.,

untuk penciptaan pasca) dicipta dalam folder Lihat newsfeed. stream-laravel::render_activity created.blade.php Contoh activity Partial:

<code class="language-php">class Post extends Model
{
    // ... other code ...

    /**
     * Stream: Activity verb for post creation.
     */
    public function activityVerb()
    {
        return 'created';
    }
}</code>

Pemberitahuan suapan:

Model Follow dikemas kini untuk memasukkan pengendalian suapan pemberitahuan:

<code class="language-php">// app/Http/Controllers/FollowController.php

public function follow(User $user)
{
    if (!Auth::user()->isFollowing($user->id)) {
        Auth::user()->follows()->create(['target_id' => $user->id]);
        FeedManager::followUser(Auth::id(), $user->id);
        return back()->with('success', 'Now following ' . $user->name);
    } else {
        return back()->with('error', 'Already following this user.');
    }
}

public function unfollow(User $user)
{
    if (Auth::user()->isFollowing($user->id)) {
        $follow = Auth::user()->follows()->where('target_id', $user->id)->first();
        FeedManager::unfollowUser(Auth::id(), $follow->target_id);
        $follow->delete();
        return back()->with('success', 'Unfollowed ' . $user->name);
    } else {
        return back()->with('error', 'Not following this user.');
    }
}</code>

Tindakan pengawal, laluan, dan pandangan yang sama (notifications.blade.php) dicipta untuk suapan pemberitahuan. Partial () yang berasingan digunakan untuk mengikuti pemberitahuan. notification_follow.blade.php

Kesimpulan:

Stream memudahkan penambahan fungsi suapan yang mantap ke aplikasi Laravel. Tutorial ini menunjukkan cara menjejaki pelbagai aktiviti, menguruskan jenis suapan yang berbeza, dan menjadikannya dengan cekap dalam pandangan. Penjelajahan lebih lanjut keupayaan Stream digalakkan.

FAQs (sedikit diperbaharui):

Seksyen Soalan Lazim ditulis dengan baik dan memberikan maklumat yang berguna. Tiada perubahan ketara diperlukan, tetapi pelarasan pemformatan kecil dapat meningkatkan kebolehbacaan. Pertimbangkan menggunakan senarai bernombor atau istilah utama yang berani untuk organisasi visual yang lebih baik.

Atas ialah kandungan terperinci Membina rangkaian sosial dengan Laravel dan Stream? Mudah!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn