"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Construir fácilmente redes sociales con Laravel y Stream

Construir fácilmente redes sociales con Laravel y Stream

Publicado el 2025-04-15
Navegar:270

Este artículo se basa en un tutorial anterior sobre cómo agregar la función "Seguir" a una aplicación Laravel usando Stream. Esta parte se centra en configurar modelos para el seguimiento de actividades, explorar los tipos de alimentación de Stream, recuperar los alimentos y hacerlos en las vistas.

Building a Social Network with Laravel and Stream? Easy!

conceptos clave:

  • stream's feedManager simplifica las operaciones de alimentación, ofrece alimentos pre-construidos (usuario, noticias, notificación).
  • stream almacena datos como actividades (actor, verbo, objeto, tiempo, más datos personalizados).
  • the seguir controller usa freedManager para seguir/dejar de seguir, la actualización se alimenta en consecuencia.
  • Las actividades son enriquecidas antes de visualizar, transformando los datos sin procesar en un formato amigable con la vista.
  • Stream admite varios tipos de alimentación (noticias, notificaciones), permitiendo plantillas personalizadas para diferentes actividades.

Structura de datos de actividad:

Stream representa datos como actividades con al menos: actor, verbo, objeto y tiempo. También se permiten campos personalizados.

  • objeto: referencia a la instancia del modelo.
  • actor: referencia al usuario creando la actividad.
  • verbo: cadena que representa la acción (por ejemplo, 'creado').

Ejemplo: Definición del modelo Actationverb en el modelo [&] post :

class Post extends Model
{
    // ... other code ...

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

utilizando el FeedManager:

the

feedManager simplifica las interacciones de alimentación. Se accede a través del alias de fachada establecido en config/app.php .

Pre-Configured Feeds:

the

freedManager proporciona alimentos pre-construidos: usuario, noticias y notificación. Este ejemplo utiliza principalmente noticias y alimentos de notificación. Más detalles sobre otros tipos de alimentación están disponibles aquí .

Funcionalidad de seguir/Defirmar con FeedManager:

the

seguir controller se actualiza para usar freedManager para acciones de seguimiento eficiente:

// 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.');
    }
}

mostrando alimentos:

a

alimentScontroller se crea para manejar la recuperación de alimentación y mostrar:

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 ...
}
el método

enrich maneja la transformación de datos para la representación de la vista. Se define una ruta para acceder a esta acción del controlador.

Templating:

the

newsfeed ver iterata a través de actividades enriquecidas, usando un parcial ( stream-laravel :: render_activity ) para realizar actividades individuales. Actividad personalizada Parcials (e.g., create.blade.php para la creación posterior) se crean dentro de la carpeta actividad ver.

ejemplo

creat.blade.php parcial:

{{ date('F j, Y, g:i a', strtotime($activity['time'])) }}

{{ $activity['actor']['name'] }} created a new post titled {{ $activity['object']['title'] }}

Feed de notificación:

el modelo

seguir se actualiza para incluir el manejo de la alimentación de notificaciones:

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];
    }
}
Se crean una acción, ruta y ver (&&&&] de controlador similar a las notificaciones.blade.php

) para el alimento de notificación. Se usa un parcial separado ( notificación_follow.blade.php ) para las notificaciones de seguimiento.

Conclusión:

Stream simplifica la adición de la funcionalidad de alimentación robusta a las aplicaciones de Laravel. El tutorial demuestra cómo rastrear diversas actividades, administrar diferentes tipos de alimentación y representarlas de manera eficiente en las vistas. Se fomenta una mayor exploración de las capacidades de Stream.

faqs (ligeramente reformateado):

La sección de preguntas frecuentes está bien escrita y proporciona información útil. No se necesitan cambios significativos, pero los ajustes de formato menores podrían mejorar la legibilidad. Considere usar una lista numerada o términos clave en negrita para una mejor organización visual.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3