تبني هذه المقالة على برنامج تعليمي سابق حول إضافة ميزة "متابعة" إلى تطبيق Laravel باستخدام Stream. يركز هذا الجزء على تكوين النماذج لتتبع النشاط ، واستكشاف أنواع الأعلاف في الدفق ، واسترداد الخلاصات ، وتقديمها في وجهات النظر.
مفاهيم المفاتيح:
FeedManager
يبسط عمليات التغذية ، ويقدم خلاصات تم تصميمها مسبقًا (المستخدم ، الأخبار ، الإخطار).
feedManager للتابع/غير متابع ، تحديث الخلاصات وفقًا لذلك.
بنية بيانات النشاط:
يمثل الدفق البيانات كأنشطة على الأقل: الممثل والفعل والكائن والوقت. يُسمح أيضًا بالحقول المخصصة.
Activityverb في
post النموذج:
class Post extends Model
{
// ... other code ...
/**
* Stream: Activity verb for post creation.
*/
public function activityVerb()
{
return 'created';
}
}
استخدام FeedManager:
The feedManager يبسط تفاعلات التغذية. يتم الوصول إليه عبر الاسم المستعار للواجهة المحددة في
config/app.php .
موجز مسبقًا:
يوفر يستخدم هذا المثال في المقام الأول الأخبار والإخطار. مزيد من التفاصيل حول أنواع الخلاص الأخرى متوفرة هنا
.
يتم تحديث
متابعة لاستخدام feedManager
للاطلاع على الإجراءات المتابعة/المتابعة الفعالة:
// 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.');
}
}
عرض الخلاصات: A
يتم إنشاء 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 ...
}
إثراء طريقة تعامل تحويل البيانات لعرض عرض. يتم تعريف المسار للوصول إلى إجراء وحدة التحكم هذا.
The NewsFeed
يتم إنشاء جزئيات النشاط المخصص (على سبيل المثال ، تم إنشاؤها.
مثال
Create.blade.php جزئي:
{{ date('F j, Y, g:i a', strtotime($activity['time'])) }}
{{ $activity['actor']['name'] }} created a new post titled {{ $activity['object']['title'] }}
يتم إنشاء إجراء تحكم مماثل ، ومسار ، وعرض ( الإخطار. يتم استخدام جزء جزئي منفصل (
الإخطار_بلي.خاتمة:
class Follow extends Model
{
use \GetStream\StreamLaravel\Eloquent\ActivityTrait;
// ... other code ...
public function activityNotify()
{
$targetFeed = FeedManager::getNotificationFeed($this->target_id);
return [$targetFeed];
}
public function activityVerb()
{
return 'follow';
}
public function activityExtraData()
{
return ['followed' => $this->target, 'follower' => $this->user];
}
}
الأسئلة الشائعة (إعادة تنسيق قليلاً):
قسم الأسئلة الشائعة مكتوبة جيدًا ويوفر معلومات مفيدة. لا توجد حاجة إلى تغييرات كبيرة ، ولكن تعديلات التنسيق البسيطة يمكن أن تحسن قابلية القراءة. فكر في استخدام قائمة مرقمة أو مصطلحات مفتاح BOLD لتنظيم بصري أفضل.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3