この記事は、「フォロー」機能をStreamを使用してLaravelアプリケーションに追加することに関する以前のチュートリアルに基づいています。 この部分は、アクティビティ追跡のモデルの構成、ストリームのフィードタイプの探索、フィードの取得、およびビューでそれらをレンダリングすることに焦点を当てています。
重要な概念:
FeedManager
アクティビティとして保存します(俳優、動詞、オブジェクト、時間、およびカスタムデータ)。
FollowController
FeedManager
を充実させ、生データをビューに優しい形式に変換します。
オブジェクト:モデルインスタンスへの参照。
俳優: activityVerb
Post
class Post extends Model { // ... other code ... /** * Stream: Activity verb for post creation. */ public function activityVerb() { return 'created'; } }
に設定されたファサードエイリアスからアクセスされます 事前に構成されたフィード:
FeedManager
config/app.php
は、事前に構築されたフィードを提供します:ユーザー、ニュース、および通知。 この例では、主にニュースと通知フィードを使用しています。 他のフィードタイプの詳細については、
。
FeedManagerを使用して機能をフォロー/解除します: FeedManager
は、効率的なフォロー/アンフォローアクションに
フィードの表示:
FollowController
FeedManager
a
// 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.'); } }
メソッドは、ビューレンダリングのためにデータ変換を処理します。 このコントローラーアクションにアクセスするためにルートが定義されています
テンプレート:FeedsController
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 ... }
ビューは、個々のアクティビティをレンダリングするために部分的な(enrich
)を使用して、濃縮されたアクティビティを繰り返します。 カスタムアクティビティの部分(たとえば、作成後の
ビューフォルダー内に作成されます。 例部分:
class Post extends Model { // ... other code ... /** * Stream: Activity verb for post creation. */ public function activityVerb() { return 'created'; } }
通知フィード:
Follow
モデルは更新され、通知フィード処理が含まれています:
// 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.'); } }
通知フィード用に同様のコントローラーアクション、ルート、およびビュー(notifications.blade.php
)が作成されます。 フォロー通知には、別の部分(notification_follow.blade.php
)が使用されます
結論:
ストリームは、Laravelアプリケーションに堅牢なフィード機能を追加することを簡素化します。 チュートリアルでは、さまざまなアクティビティを追跡し、さまざまなフィードタイプを管理し、ビューで効率的にレンダリングする方法を示しています。 Streamの機能のさらなる調査が奨励されています FAQ(わずかに再フォーマット):FAQSセクションはよく書かれており、役立つ情報を提供します。 重要な変更は必要ありませんが、マイナーなフォーマット調整により、読みやすさが向上する可能性があります。 より良い視覚組織のために、番号付きリストまたは太字の重要な用語を使用することを検討してください。
以上がLaravelとStreamでソーシャルネットワークを構築しますか?簡単!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。