如何让服务提供者或特征将 Algolia 集成到我的 Laravel 控制器中?

基奥

我正在为 Laravel使用Algolia 搜索客户端 PHP,我想在没有 Laravel Scout 的情况下使用它。

现在,我必须在需要使用 Algolia 的每个控制器中执行此操作:

$client = new \AlgoliaSearch\Client('xxx', 'xxx');

$index = $client->initIndex('index');

$index->doSomeAlgoliaFunction();

我怎样才能把它变成一个服务提供者,这样我就不必每次需要它时都初始化 Algolia?

朱利安布尔多

我建议您将其绑定到容器。在您的App\Providers\AppServiceProvider, 在register方法中:

namespace App\Providers;

use AlgoliaSearch\Client;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton(Client::class, function () {
            return new Client('xxx', 'xxx');
        });
    }
}

然后,如果您需要在控制器中使用它,您可以在构造函数中使用 typehint 它,Laravel 将自动传递客户端的实例。

use AlgoliaSearch\Client;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    protected $client;

    public function __contruct(Client $client)
    {
       $this->client = $client;
    }

}

如果你在其他地方需要它,你可以使用app()辅助函数从容器中获取它。

use AlgoliaSearch\Client;

class Something
{

    public function doMagic()
    {
        $algoliaIndex = app(Client::class)->initIndex('my_index_name');

        $algoliaIndex->addObject(....);
    }

}

注意config()获取凭据env(),避免提交您的 ADMIN api 密钥。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel-5.1将当前登录的用户注入到我的控制器中

来自分类Dev

在Laravel 5.2中的控制器内使用服务提供者

来自分类Dev

在Laravel 5.2中的控制器内使用服务提供者

来自分类Dev

如何在我的控制器 Laravel 中调用方法?

来自分类Dev

使用Laravel将多个ID从复选框传递到我的控制器

来自分类Dev

我如何将额外的参数传递给laravel中的控制器

来自分类Dev

我如何使整个确认按钮成为Laravel控制器中sweetalert2中的链接

来自分类Dev

我如何在Laravel控制器中获取组参数

来自分类Dev

laravel:调度程序找不到我的控制器

来自分类Dev

尝试更新我的提供者中的属性并将值传递给控制器

来自分类Dev

我应该在 Laravel 中为服务创建单独的提供者吗?

来自分类Dev

如何将jsfiddle集成到我的网页中

来自分类Dev

如何将库集成到我的库中

来自分类Dev

我们如何将控制器中的用户定义变量传递给Laravel中的刀片

来自分类Dev

如何从Laravel中的其他控制器访问控制器?

来自分类Dev

我如何使用Laravel在控制器内部获取数据

来自分类Dev

将Google字体集成到我的Android应用中

来自分类Dev

无法将Amazon lex集成到我的网站中

来自分类Dev

无法将Facebook集成到我的android应用中

来自分类Dev

将CKeditor集成到我的symfony 2.5中

来自分类Dev

如何将依赖项整齐地注入到我的角度控制器中?

来自分类Dev

如何从按钮获取我的 ID 到我的控制器?

来自分类Dev

我如何为数据库活动创建函数并在Laravel 5.1中的控制器中调用它们

来自分类Dev

将数据从控制器传递到Laravel中的视图

来自分类Dev

将变量从控制器传递到Laravel中的通知

来自分类Dev

将数据从视图传递到Laravel中的控制器

来自分类Dev

将JSON转换为Laravel控制器中的模型

来自分类Dev

将angular-ui注入到我的控制器中的问题

来自分类Dev

将功能从控制器发送到我的角度指令中

Related 相关文章

  1. 1

    Laravel-5.1将当前登录的用户注入到我的控制器中

  2. 2

    在Laravel 5.2中的控制器内使用服务提供者

  3. 3

    在Laravel 5.2中的控制器内使用服务提供者

  4. 4

    如何在我的控制器 Laravel 中调用方法?

  5. 5

    使用Laravel将多个ID从复选框传递到我的控制器

  6. 6

    我如何将额外的参数传递给laravel中的控制器

  7. 7

    我如何使整个确认按钮成为Laravel控制器中sweetalert2中的链接

  8. 8

    我如何在Laravel控制器中获取组参数

  9. 9

    laravel:调度程序找不到我的控制器

  10. 10

    尝试更新我的提供者中的属性并将值传递给控制器

  11. 11

    我应该在 Laravel 中为服务创建单独的提供者吗?

  12. 12

    如何将jsfiddle集成到我的网页中

  13. 13

    如何将库集成到我的库中

  14. 14

    我们如何将控制器中的用户定义变量传递给Laravel中的刀片

  15. 15

    如何从Laravel中的其他控制器访问控制器?

  16. 16

    我如何使用Laravel在控制器内部获取数据

  17. 17

    将Google字体集成到我的Android应用中

  18. 18

    无法将Amazon lex集成到我的网站中

  19. 19

    无法将Facebook集成到我的android应用中

  20. 20

    将CKeditor集成到我的symfony 2.5中

  21. 21

    如何将依赖项整齐地注入到我的角度控制器中?

  22. 22

    如何从按钮获取我的 ID 到我的控制器?

  23. 23

    我如何为数据库活动创建函数并在Laravel 5.1中的控制器中调用它们

  24. 24

    将数据从控制器传递到Laravel中的视图

  25. 25

    将变量从控制器传递到Laravel中的通知

  26. 26

    将数据从视图传递到Laravel中的控制器

  27. 27

    将JSON转换为Laravel控制器中的模型

  28. 28

    将angular-ui注入到我的控制器中的问题

  29. 29

    将功能从控制器发送到我的角度指令中

热门标签

归档