模型注入之前的中间件

时间:2018-05-16 07:07:32

标签: laravel laravel-5 dependency-injection

我有一个设计疑问,我想分享。

我在Laravel中有一个模型,在检索

时有一个Observer
class MailingObserver
{
    public function retrieved($mailing)
    {
      // we retrieve HTML content from disk file        
      $mailing->setAttribute('content', \Illuminate\Support\Facades\Storage::disk('mailings')->get("{$mailing->id}-{$mailing->slug}.html"));
      $mailing->syncOriginal();
    }
}

检索存储在纯文本而不是数据库中的属性。

该网站是多品牌平台,因此每个登录用户的磁盘(' mailings')都不同。根据当前登录的用户,此配置将加载到中间件中。

到目前为止一切都很好。

现在问题"。我有一个控制器注入实体邮件:

class MailingCrudController extends CrudController
{
    /**
     * Sends the mailing
     * @param Request $request
     * @param \App\Mailing $mailing
     */
    public function send(Request $request, \App\Mailing $mailing)
    {
       // WHATEVER
    }
}

注入模型后,检索 Observer方法被触发,但中间件仍未执行,因此 mailings 磁盘仍未设置。

我不知道如何更改此顺序:首先执行middleare,然后执行模型注入。

一种方法

我尝试在AppServiceProvider中添加:

class AppServiceProvider extends ServiceProvider
{

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {   
        $middleware = new \App\Http\Middleware\CheckBrandHost();
        $middleware->setBrandInformation(request());
        $middleware->loadBrandConfig(request()->get('brand.code_name'));
    }

您会批准此解决方案吗?哪些问题会对我造成影响?这是正确的方法吗?

全部谢谢!

0 个答案:

没有答案