À l'aide du Modèle d'Écouteur d'Événements dans Laravel 5
J'aimerais m'assurer que j'ai correctement utilisé événements du modèle d'auditeurs dans Laravel 5 et je n'ai pas foiré rien (auditeur vs gestionnaire?). Ma solution fonctionne bien, mais je me demande si j'ai développé selon le concept et de la convention de Laravel 5.
Objectif:
Toujours mettre $question->status_id une certaine valeur quand le modèle est de sauver.
Dans app\Providers\EventServiceProvider.php
<?php namespace App\Providers;
...
class EventServiceProvider extends ServiceProvider {
...
public function boot(DispatcherContract $events)
{
parent::boot($events);
Issue::saving('App\Handlers\Events\SetIssueStatus');
}
}
Dans app\Handlers\Events\SetIssueStatus.php
<?php namespace App\Handlers\Events;
...
class SetIssueStatus {
...
public function handle(Issue $issue)
{
if (something)
{
$issueStatus = IssueStatus::where(somethingElse)->firstOrFail();
}
else
{
$issueStatus = IssueStatus::where(somethingAnother)->firstOrFail();
}
//issue_status() is One-to-One relations with IssueType (belongsTo)
$issue->issue_status()->associate($issueStatus);
}
}
Je vous remercie pour votre temps.
vous voulez juste utiliser cet événement sur un modèle, ou voulez-vous l'utiliser dans plus d'un modèle?
Cette logique de dollars (question->status_id) je veux seulement utiliser pour le Numéro de modèle, mais dans l'avenir je veux ajouter plus de logique à cela et d'autres modèle.
Il n'y a pas de bonne ou de mauvaise réponse à cette question; il dépend de l'application. Par conséquent, le vote pour la fermer car c'est surtout des avis.
Cette logique de dollars (question->status_id) je veux seulement utiliser pour le Numéro de modèle, mais dans l'avenir je veux ajouter plus de logique à cela et d'autres modèle.
Il n'y a pas de bonne ou de mauvaise réponse à cette question; il dépend de l'application. Par conséquent, le vote pour la fermer car c'est surtout des avis.
OriginalL'auteur zss61890 | 2015-04-23
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez dit vous avez une version de travail et il est valide, maintenant c'est à vous de voir si il est ok pour vous.
Juste pour clarifier, je ne dis pas que ce sont les meilleures solutions, ils sont seulement valables de manière différente.
Depuis ce que vous faites est spécifique à la Question du modèle ou, au moins, il ne semble pas être un générique de l'événement, vous pouvez l'installer sur votre modèle directement
mais si votre événement est en effet un générique et que vous souhaitez l'utiliser sur plusieurs Modèles, vous pouvez obtenir la même chose. Vous avez juste besoin d'extraire le code à partir du modèle et de l'utilisation de certains caractères (comme vous le faites avec de doux supprime)
D'abord, nous créons notre trait(dans ce cas, nous avons créé à la racine de notre Application) et d'en extraire le code, je l'ai écrit avant, à partir du modèle:
Maintenant sur les modèles où vous voulez l'utiliser, il vous suffit d'importer le trait et il déclare:
Maintenant cette dernière option que je vous ai montré, c'est une option générique vous avez que vous pouvez appliquer à tous les modèles en déclarant simplement de l'utiliser sur le dessus de votre modèle.
il fonctionne en 5.1? j'ai essayé mais statique::l'enregistrement n'est pas d'écouter ou de ne pas fonctionner
OriginalL'auteur Fabio Antunes