Эта статья основана на предыдущем учебном пособии о добавлении функции «Следуйте» в приложение Laravel с использованием потока. Эта часть фокусируется на настройке моделей для отслеживания деятельности, изучения типов каналов Stream, получения каналов и отображения их в представлениях.
]
Key Concepts:
FeedManager
упрощает операции подачи, предлагая предварительно построенные каналы (пользователь, новости, уведомление). rekelecontroller
использует feedmanager
для следующего/отречения, соответственно обновление фидов. Структура данных активности:
Stream представляет данные как действия, по крайней мере, с актером, глаголом, объектом и временем. Пользовательские поля также разрешены.
] Пример: определение activityverb
в model
:
class Post extends Model
{
// ... other code ...
/**
* Stream: Activity verb for post creation.
*/
public function activityVerb()
{
return 'created';
}
}
Использование FeedManager:
] FeedManager
упрощает взаимодействие подачи. Доступен через фасадный псевдоним, установленном в config/app.php
.
предварительно настроенные подачи:
] FeedManager
предоставляет предварительно построенные каналы: пользователь, новости и уведомление. В этом примере в первую очередь используются новости и уведомления. Доступна дополнительная информация о других типах каналов здесь .
следуйте/отписать функциональность с FeedManager:
] relowcontroller
обновляется для использования Feedmanager
для эффективных действий следующего/unfold:
// 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.');
}
}
отображение Feeds:
] 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 ...
}
enrich обрабатывает преобразование данных для рендеринга представления. Маршрут определяется для доступа к этому действию контроллера.
]
Templating:
Newsfeed Просмотреть итераты через обогащенные действия, используя частичную (
Stream-Laravel :: render_activity ) для выполнения отдельных действий. Пользовательская деятельность Partials (например,
cenestion.blade.php для Post Coreation) созданы в папке
просмотр.
censue.blade.php Partial:
{{ date('F j, Y, g:i a', strtotime($activity['time'])) }}
{{ $activity['actor']['name'] }} created a new post titled {{ $activity['object']['title'] }}
] уведомление Feed:
модель follow обновляется, чтобы включить обработку подачи уведомлений:
]
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];
}
}
] аналогичное действие контроллера, маршрут и view ( уведомления. Отдельный частичный ( natification_follow.blade.php
) используется для следующих уведомлений.
Stream упрощает добавление надежной функции корма к приложениям Laravel. Учебное пособие демонстрирует, как отслеживать различные действия, управлять различными типами корма и эффективно оказать их в взглядах. Дальнейшее исследование возможностей потока поощряется.
]faqs (слегка переформатировано):
] раздел часто задаваемых вопросов хорошо написан и предоставляет полезную информацию. Никаких существенных изменений не требуется, но незначительные корректировки форматирования могут улучшить читаемость. Рассмотрите возможность использования нумерованного списка или терминов ключа жирника для лучшей визуальной организации.
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3