Back to Question Center
0

Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολος!            Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολα! Σχετικά θέματα: ΠλαίσιαAPIsSecurityLaravelPerformance & Semalt

1 answers:
Δημιουργία ενός κοινωνικού δικτύου με το Laravel και το Stream; Εύκολος!

Laravel σε πραγματικό χρόνο

  • Ειδοποιήσεις Laravel σε πραγματικό χρόνο και ακολουθούν; Σίγουρα, με Stream!
  • Δημιουργία ενός κοινωνικού δικτύου με το Laravel και το Stream; Εύκολος!

Στην προηγούμενη ανάρτηση, είδαμε πώς να προσθέσουμε τη λειτουργικότητα follow σε μια εφαρμογή Laravel. Εξετάσαμε επίσης πώς να διαμορφώσουμε την εφαρμογή μας ώστε να χρησιμοποιεί Stream. Αυτό το μέρος θα επικεντρωθεί στα εξής:

  • διαμόρφωση των μοντέλων μας ώστε να καταστεί δυνατή η παρακολούθηση των δραστηριοτήτων - house security alarms.
  • τους διαφορετικούς τύπους ροών που παρέχει το Stream.
  • που παίρνει feeds από το Stream.
  • καθιστώντας τους διαφορετικούς τύπους τροφών σε μια άποψη.

Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολος!Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολα! Σχετικά θέματα:
ΠλαίσιαAPIsSecurityLaravelPerformance & Semalt

Πεδία δραστηριότητας

Όταν χρησιμοποιείτε Stream, τα μοντέλα αποθηκεύονται στις ροές δεδομένων ως δραστηριότητες. Μια δραστηριότητα αποτελείται από τουλάχιστον τα ακόλουθα πεδία δεδομένων: παράγοντα , ρήμα , αντικείμενο , χρόνος . Μπορείτε επίσης να προσθέσετε περισσότερα προσαρμοσμένα δεδομένα, αν χρειαστεί.

  • αντικείμενο είναι μια αναφορά στην ίδια την υπόδειγμα μοντέλου
  • είναι μια αναφορά στο χαρακτηριστικό χρήστη του παραδείγματος
  • Το ρήμα είναι μια συμβολοσειρά της ονομασίας της κατηγορίας

Ας ορίσουμε το ρήμα δραστηριότητας μέσα στο μοντέλο μας Post :

  [ ]Class Post επεκτείνει το μοντέλο{[ ]/ *** Ρεύμα: Αλλαγή ρήματος δραστηριότητας σε 'δημιουργήθηκε':* /δημόσια δραστηριότητα δραστηριότηταVerb   {επιστροφή 'δημιουργήθηκε';}}}}    

Διαχειριστής τροφοδοσίας

Θα χρησιμοποιήσουμε το FeedManager για να κάνουμε την εφαρμογή μας ζωντανή. Stream Laravel έρχεται με μια FeedManager κατηγορία που βοηθά με όλες τις κοινές λειτουργίες τροφοδοσίας. Μπορούμε να πάρουμε μια εμφάνιση του διαχειριστή με το FeedManager το οποίο ορίσαμε ως αλλοιωμένη πρόσοψη στο εσωτερικό του config / app. php αρχείο.

Τροφοδοσίες

Για να ξεκινήσουμε, ο διαχειριστής έχει τροφοδοτήσει προκαθορισμένα. Θα μπορούσαμε επίσης να προσθέσουμε περισσότερες ροές δεδομένων εάν η εφαρμογή μας την χρειαζόταν. Οι τρεις τροφοδοσίες χωρίζονται σε τρεις κατηγορίες: Feed Feed , News Feed και Feed Feed . Η Τροφοδοσία χρήστη , για παράδειγμα, αποθηκεύει όλες τις δραστηριότητες για έναν χρήστη. Ας το σκεφτούμε ως την προσωπική μας σελίδα στο Facebook. Μπορούμε εύκολα να πάρουμε αυτή τη ροή από τον διαχειριστή.

Ωστόσο, για αυτήν την εφαρμογή, ενδιαφέρουμε περισσότερο να λαμβάνουμε ειδοποιήσεις για τις θέσεις που δημιουργούν οι άνθρωποι που ακολουθούμε, καθώς και οι ειδοποιήσεις για νέα που ακολουθούν, επομένως θα παραμείνουμε μόνο στη νέα σελίδα ) Τροφοδοσία ειδοποίησης . Για περισσότερες πληροφορίες σχετικά με τους άλλους τύπους ροών δεδομένων και τον τρόπο χρήσης τους, επισκεφτείτε αυτόν τον σύνδεσμο.

Παρακολούθηση / Ακύρωση Λειτουργίας - Χρήση του FeedManager

Πρέπει να ενημερώσουμε τις μεθόδους ακολουθήστε και αχρησιμοποίητα μέσα στον FollowController

app / Http / Ελεγκτές / FollowController. php

  [ ]η δημόσια λειτουργία ακολουθεί (User $ user){αν (! Auth :: user    -> isFollowing ($ user-> id)) {// Δημιουργήστε μια νέα ακολουθία ακολουθίας για τον πιστοποιημένο χρήστηAuth :: χρήστη    -> ακολουθεί    -> δημιουργία (['target_id' => $ user-> id,]).\ FeedManager :: followUser (Auth :: id   , $ user-> id);επιστροφή πίσω    -> με ('success', 'Είστε πλέον φίλοι με'. $ user-> όνομα);} else {επιστροφή πίσω    -> με ('σφάλμα', 'Δεν ακολουθείτε αυτό το πρόσωπο');}}}}[ ]    

Αυτός ο κώδικας εντός της μεθόδου ακολουθεί επιτρέπει την τροφοδοσία της τρέχουσας γραμμής και της χρονικής γραμμής του τρέχοντος χρήστη Μέσα στη μέθοδο της κατάργησης παρακολούθησης, καταργούμε την εγγραφή από την προσωπική ροή άλλου χρήστη.

Εμφάνιση των διαφόρων τύπων τροφοδοσίας

Για να εμφανίσετε τους διαφορετικούς τύπους τροφοδοσίας, ας ξεκινήσουμε δημιουργώντας ένα FeedsController :

  php τεχνικός κάνει: controller FeedsController    

Κατά την ανάγνωση δεδομένων από τροφοδοσίες, οι δραστηριότητες επανέρχονται σε μορφή που δεν είναι κατάλληλη για χρήση στις απόψεις μας. Για παράδειγμα, μια δραστηριότητα δημιουργίας θέσεων θα εμφανιστεί ως εξής:

{'actor': 'Χρήστης: 1', 'verb': 'created', 'object'

Αυτό δεν είναι έτοιμο για χρήση στα πρότυπα μας. Καλούμε τη διαδικασία φόρτωσης των αναφορών από τον εμπλουτισμό της βάσης δεδομένων . Θα εμπλουτίσουμε τις δραστηριότητές μας προτού τις εμφανίσετε στις προβολές.

Ειδήσεις

Ας δημιουργήσουμε μια μέθοδο newsFeed μέσα σε αυτόν τον ελεγκτή για να πάρουμε αυτόν τον τύπο ροής. Θα πρέπει επίσης να δημιουργήσουμε μια ιδιωτική μέθοδο μέσα σε αυτόν τον υπεύθυνο επεξεργασίας Class Enricher :

  [ ]χρησιμοποιήστε το GetStream \ StreamLaravel \ Enrich.[ ]class FeedsController επεκτείνει τον ελεγκτή{δημόσια λειτουργία newsFeed (αίτημα αίτησης $){// Τροφοδοσία χρονισμού:$ feed = \ FeedManager :: getNewsFeeds ($ request-> user    -> id) ['timeline'];// λάβετε 25 πιο πρόσφατες δραστηριότητες από τη ροή του χρονοδιαγράμματος:$ activities = $ feed-> getActivities (0,25) ['αποτελέσματα'];$ activities = $ this-> εμπλουτισμός    -> enrichActivities ($ δραστηριότητες);προβολή επιστροφής ('feed feed newsfeed', ['δραστηριότητες' => $ δραστηριότητες,]).}}ιδιωτική λειτουργία εμπλουτισμός   {επιστρέψτε το νέο Enrich.}}}}    

Στο μπλοκ κώδικα παραπάνω, καλούμε τη μέθοδο getNewsFeeds από το FeedManager Είναι σημαντικό να καθορίσετε τη μορφή που θέλουμε να πάρουμε πίσω Στην περίπτωση μας, θέλουμε τη ροή δεδομένων σε μορφή χρονοδιαγράμματος ). Μετά από αυτό, παίρνουμε τις 25 πιο πρόσφατες δραστηριότητες από τη ζωοτροφή και στη συνέχεια τις εμπλουτίζουμε. Αυτές οι δραστηριότητες πρέπει να εμφανίζονται στην προβολή newsfeed που σύντομα θα δημιουργήσουμε.

Στη συνέχεια, ας δημιουργήσουμε μια χαρτογράφηση διαδρομής στη μέθοδο newsFeed , η οποία όταν μας επισκέπτεται, θα μας οδηγήσει σε μια προβολή με το newsfeed. Αυτή η διαδρομή εμπίπτει επίσης στην ομάδα διαδρομών με το middlehware auth δεδομένου ότι οι χρήστες πρέπει να πιστοποιούνται για τη φόρτωση της τροφοδοσίας:

  [ ]Διαδρομή :: ομάδα (['middleware' => ['auth']], λειτουργία    {[ ]Διαδρομή :: get ('/ feed', 'FeedsController @ newsFeed');});[ ]    

Θεματοποίηση

Μπορούμε τώρα να καταστήσουμε τις εμπλουτισμένες δραστηριότητες:

πόροι / απόψεις / feed / newsfeed. λεπίδα. php

  @extends ('layouts app')@ section ('περιεχόμενο')
@if ($ δραστηριότητες)
Ροή ειδήσεων
@foreach ($ δραστηριότητες ως δραστηριότητα $)@include ('stream-laravel :: render_activity', array ('δραστηριότητα' => δραστηριότητα $))@endforeach
@αλλού

Δεν ακολουθείτε κανέναν. Ακολουθήστε τους άλλους εδώ για να δείτε τις δραστηριότητές τους

@τέλος εαν
@endsection

Η ετικέτα προβολής stream-laravel :: render_activity θα καταστήσει την προβολή δραστηριότητα. Η δραστηριότητα $ ["verb"] προβάλλει με τη δραστηριότητα ως περιβάλλον. Μετά από αυτό, μπορούμε να δημιουργήσουμε μια μερική για τη δραστηριότητα δημιουργίας ταχυδρομείου. Το όνομα του μερικού πρέπει να αντιστοιχεί στο ρήμα δραστηριότητας:

πόροι / απόψεις / δραστηριότητα / δημιουργήθηκε. λεπίδα. php

  

{{date ('Fj, Y, g: i a', strtotime ($ activity ['time' {{$ activity ['actor'] ['name']}} δημιούργησε μια νέα θέση με τίτλο {{$ activity ['object'] ['title']}} 51)

Επισκεπτόμενοι τη διεύθυνση URL \ feed , θα πρέπει να μπορούμε να δούμε την ειδησεογραφία μας. Αρχικά, θα δούμε το κείμενο "Δεν ακολουθείτε κανέναν" καθώς δεν είχαμε ενσωματώσει ακόμη το Stream στην εφαρμογή μας τη στιγμή που δοκιμάσαμε τις διαφορετικές παραλλαγές των κουμπιών με βάση την κατάσταση που ακολουθήσαμε. Επίσης, σημειώστε ότι εάν δεν καταργήσαμε την πρώτη δραστηριότητα από τον πίνακα ελέγχου ροής, η σελίδα σφάλμα θα παραπονέθηκε για ένα [. app. \ user] .

Semalt προχωρήστε στη δημιουργία μιας νέας θέσης από το λογαριασμό μας. Αν ακολουθήσουμε τον εαυτό μας από διαφορετικό λογαριασμό, αυτή η δραστηριότητα μετά δημιουργίας θα πρέπει να εμφανίζεται στη ροή αυτού του άλλου λογαριασμού όπως είναι έτσι:

Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολος!Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολα! Σχετικά θέματα:
ΠλαίσιαAPIsSecurityLaravelPerformance & Semalt
chris δημιουργεί μια άλλη θέση, η νέα δραστηριότητα δημιουργίας αλληλογραφίας από το chris θα εμφανιστεί στην feed του morris '

Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολος!Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολα! Σχετικά θέματα:
ΠλαίσιαAPIsSecurityLaravelPerformance & Semalt

Εναλλακτικά, αντί να δημιουργήσουμε νέους λογαριασμούς και αναρτήσεις για να δοκιμάσουμε αυτή τη συμπεριφορά, μπορούμε να κόψουμε τα δεδομένα στην εφαρμογή μας από το ταμπλό του Semalt και στη συνέχεια να γεμίσουμε ξανά τη βάση δεδομένων μας με δεδομένα σπόρων. Το παρακάτω παράθυρο gif δείχνει πώς να περικόψετε τα δεδομένα:

Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολος!Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολα! Σχετικά θέματα:
ΠλαίσιαAPIsSecurityLaravelPerformance & Semalt

Όταν σπρώχνουμε αυτή τη φορά τη βάση δεδομένων μας, η δραστηριότητα δημιουργίας ταχυδρομείου θα σημειωθεί στο Stream:

  μετανάστευση php τεχνίτης: ανανέωση - σπόρος    

Μπορούμε στη συνέχεια να ακολουθήσουμε μερικούς από τους χρήστες που δημιουργήθηκαν κατά την σπορά της βάσης δεδομένων. Αν επισκεφτούμε τώρα τη διεύθυνση URL \ feed , θα δούμε τις δραστηριότητές τους:

Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολος!Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολα! Σχετικά θέματα:
ΠλαίσιαAPIsSecurityLaravelPerformance & Semalt

Σήμερα, μπορούμε να λαμβάνουμε ειδοποιήσεις μόνο για νέες θέσεις που δημιουργούνται από άτομα που ακολουθούμε. Θέλουμε επίσης να το κάνουμε έτσι ώστε να λαμβάνουμε ειδοποιήσεις για νέα.

Τροφοδοσία κοινοποίησης

Για το σκοπό αυτό, ας αρχίσουμε με την ενημέρωση του μοντέλου μας Follow για να λάβουμε υπόψη τις δραστηριότητες που ακολουθούν

app / Ακολουθήστε. php

  κατηγορίας Ακολουθεί το μοντέλο{χρησιμοποιήστε το \ GetStream \ StreamLaravel \ Eloquent \ ActivityTrait.[. .Αυτός ο τύπος ροής δεδομένων είναι χρήσιμος για την ενημέρωση ορισμένων χρηστών σχετικά με μια ενέργεια. Στην περίπτωσή μας, ειδοποιούμε έναν χρήστη ότι κάποιος τις ακολούθησε. Η μέθοδος    activityExtraData       μας επιτρέπει να αποθηκεύουμε περισσότερα δεδομένα από τα βασικά πεδία. Στην περίπτωσή μας, θέλουμε να αποθηκεύσουμε τον στόχο για μια νέα ακολουθία και επίσης το άτομο που ακολούθησε το στόχο.  

Μετακινήστε το semalt και δημιουργήστε τη δράση του ελεγκτή, τη διαδρομή και την προβολή για να εμφανίσετε τη ροή ειδοποίησης:

app / Http / Ελεγκτές / feedController

  [ ]class FeedsController επεκτείνει τους ελεγκτές{[ ]κοινοποίηση δημόσιας λειτουργίας (Αίτηση αίτησης $){// Τροφοδοσία ειδοποίησης:$ feed = \ FeedManager :: getNotificationFeed ($ request-> user    -> id);$ activities = $ feed-> getActivities (0,25) ['αποτελέσματα'];$ activities = $ this-> εμπλουτισμός    -> enrichActivities ($ δραστηριότητες);προβολή επιστροφής ("ειδοποιήσεις feed", ['δραστηριότητες' => $ δραστηριότητες,]).}}}}    
Παίρνουμε αυτήν την τροφή με τον ίδιο τρόπο που πήραμε το newsfeed, η μόνη διαφορά είναι ότι καλούμε τη μέθοδο getNotificationFeed στο FeedManager αντί για το getNewsFeeds μέθοδος.

Το Semalt δημιουργεί τώρα τη χαρτογράφηση της διαδρομής σε αυτήν την ενέργεια ελεγκτή:

  Διαδρομή :: ομάδα (['middleware' => 'auth'], function    {[ ]Διαδρομή: get ('/ notifications', 'FeedsController @ notification');});    

Θέματα

Κατά την προβολή της τροφοδοσίας ειδοποίησης, θα ακολουθήσουμε την ίδια διαδικασία με την προβολή της ειδησεογραφίας, i. Δημιουργήστε μια μερική με τις πληροφορίες που θέλουμε να εμφανίσουμε, και στη συνέχεια κάντε την μερική σε μια προβολή. Ξεκινήστε το Semalt δημιουργώντας την προβολή:

πόροι / απόψεις / feed / ειδοποιήσεις. λεπίδα. php

  @extends ('layouts app')@ section ('περιεχόμενο')
@if ($ δραστηριότητες)
Τροφοδοσία ειδοποιήσεων
@foreach ($ δραστηριότητες ως δραστηριότητα $)@foreach (δραστηριότητα $ ['δραστηριότητες'] ως δραστηριότητα $)@include ('stream-laravel :: render_activity', array ('aggregated_activity' => δραστηριότητα $, 'πρόθεμα' => 'ειδοποίηση'))@endforeach@endforeach
@αλλού

Δεν έχετε καμία συνέχεια

@τέλος εαν
@endsection

Παρατηρήστε ότι πρέπει να περάσουμε δύο επίπεδα βαθιά κατά την άποψή μας για να αποκτήσουμε πρόσβαση στην τροφή ειδοποίησης; Αυτό συμβαίνει λόγω της μορφής δεδομένων που λαμβάνουμε πίσω αφού καλέσουμε τη μέθοδο getNotificationFeed . Επίσης, σημειώστε τη γραμμή κώδικα για την απόδοση του μερικού κλειδιού , η τιμή του οποίου έχει οριστεί σε ειδοποίηση . Επιτρέψτε μου να εξηγήσω τι συμβαίνει. Για αυτήν την εφαρμογή, θέλουμε δύο διαφορετικά πρότυπα για την ίδια δραστηριότητα i. μι. την ακόλουθη δραστηριότητα. Για να το επιτύχουμε με το Stream, στέλνουμε μια τρίτη παράμετρο για να αλλάξουμε την επιλογή προβολής. Σε αυτήν την περίπτωση θα δημιουργήσουμε μια μερική κλήση ειδοποίηση_follow. λεπίδα. php μέσα στον φάκελο δραστηριότητας :

πόροι / προβολές / δραστηριότητα / όριο ειδοποίησης. λεπίδα. php

  

{{date ('Fj, Y, g: i a', strtotime ($ activity ['time'

Είστε φίλος {{$ activity ['follower'] ['όνομα']}}

Αν επισκεφτούμε τη διεύθυνση URL / ειδοποιήσεων , πρέπει να δούμε τη ροή δεδομένων για κάθε συνέχεια που λάβαμε και το όνομα του ατόμου που μας ακολούθησε:

{{date ('Fj, Y, g: i a', strtotime ($ activity ['time' {{$ activity ['actor'] ['όνομα']}} είναι φίλος / η με )

Ας δούμε τώρα τη διεύθυνση / feed . Ακολουθούν επίσης δραστηριότητες:

Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολος!Δημιουργώντας ένα κοινωνικό δίκτυο με το Laravel και το Stream; Εύκολα! Σχετικά θέματα:
ΠλαίσιαAPIsSecurityLaravelPerformance & Semalt

Για να διευκολύνουμε την πλοήγηση, μπορούμε να προσθέσουμε συνδέσμους για να αποκτήσουμε πρόσβαση στο newsfeed και η ειδοποίηση να τροφοδοτείται στη γραμμή Navbar δίπλα στον σύνδεσμο New Post :

πόροι / προβολές / διατάξεις / εφαρμογή. λεπίδα. php

       

Συμπέρασμα

Το Semalt καθιστά εξαιρετικά εύκολο να προσθέσετε τροφοδοσίες σε οποιαδήποτε εφαρμογή σε σύγκριση με την κωδικοποίηση της λογικής από την αρχή.

Μπορούμε να παρακολουθήσουμε σχεδόν οτιδήποτε σε μια εφαρμογή, ακόμα και να αρέσει ή να σχολιάζει τις δημοσιεύσεις. Θα το αφήσω ως εργασία στο σπίτι, ώστε να παίξετε με το API. Το Stream παρέχει επίσης πρόσβαση σε API χαμηλού επιπέδου για έργα PHP που δεν χρησιμοποιούν το Semalt. Περισσότερες πληροφορίες σχετικά με τον τρόπο απευθείας χρήσης του χαμηλού επιπέδου API πελάτη PHP είναι διαθέσιμες εδώ.

Αν βρήκατε αυτό το φροντιστήριο χρήσιμο, πατήστε το κουμπί που σας αρέσει και μην ξεχάσετε να το μοιραστείτε με τους φίλους και τους συναδέλφους σας!

March 6, 2018