/**
  * Bootstrap any application services.
  *
  * @return void
  */
 public function boot(PluginManager $plugins)
 {
     // store paths of class files of plugins
     $src_paths = [];
     $loader = $this->app->make('translation.loader');
     // make view instead of view.finder since the finder is defined as not a singleton
     $finder = $this->app->make('view');
     foreach ($plugins->getPlugins() as $plugin) {
         $src_paths[$plugin->getNameSpace()] = $plugin->getPath() . "/src";
         // add paths of translation files for namespace hints
         $loader->addNamespace($plugin->getNameSpace(), $plugin->getPath() . "/lang");
         // add paths of views
         $finder->addNamespace($plugin->getNameSpace(), $plugin->getPath() . "/views");
     }
     $this->registerClassAutoloader($src_paths);
     $bootstrappers = $plugins->getEnabledBootstrappers();
     foreach ($bootstrappers as $file) {
         $bootstrapper = (require $file);
         // call closure using service container
         $this->app->call($bootstrapper);
     }
 }
 public function manage(Request $request, PluginManager $plugins)
 {
     if ($request->has('action') && $request->has('id')) {
         $id = $request->get('id');
         if ($plugins->getPlugins()->has($id)) {
             $plugin = $plugins->getPlugin($id);
             switch ($request->get('action')) {
                 case 'enable':
                     $plugins->enable($id);
                     return redirect('admin/plugins/manage');
                     break;
                 case 'disable':
                     $plugins->disable($id);
                     return redirect('admin/plugins/manage');
                     break;
                 case 'delete':
                     if ($request->isMethod('post')) {
                         event(new Events\PluginWasDeleted($plugin));
                         $plugins->uninstall($id);
                         return json('插件已被成功删除', 0);
                     }
                     break;
                 case 'config':
                     if ($plugin->isEnabled() && $plugin->hasConfigView()) {
                         return View::file($plugin->getViewPath('config'));
                     } else {
                         abort(404);
                     }
                     break;
                 default:
                     # code...
                     break;
             }
         }
     }
     $data = ['installed' => $plugins->getPlugins(), 'enabled' => $plugins->getEnabledPlugins()];
     return view('admin.plugins', $data);
 }