Jumat, 02 Oktober 2020

Membuat fungsi global atau ServiceProvider AppServiceProvider Laravel

- contoh untuk convert translate :
> buatkan service providernya -> php artisan make:provider TranslateServiceProvider
    Isinya :
<?php

namespace App\Providers;

use App\Library\Services\Translate;
use Illuminate\Support\ServiceProvider;

class TranslateServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind('App\Library\Services\Translate', function ($app) {
          return new Translate("");
        });
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

> Kalau belum ada folder Library\Services\ dibuatkan saja, dan sesuai diatas saya bukan class Translate di dalam folder service ini (Translate.php)
    Isinya :
<?php
namespace App\Library\Services;
use Stichoza\GoogleTranslate\GoogleTranslate;
  
class Translate
{
    public function translate($string)
    {
        $translate = new GoogleTranslate('en');

        return $translate->translate($string);
    }
}

> Setelah itu tambahkan/daftarkan service provider baru supaya terbaca disemua controller / global :
    edit di file config/app, line 'providers' : App\Providers\TranslateServiceProvider::class

> Untuk pemanggilan di setiap controller cukup seperti ini :
<?php

namespace App\Http\Controllers;

use App\Dokumen;
use App\Library\Services\Translate;

class DokumenHomeController extends Controller
{
    public function index(Translate $translate)
    {
        $dokumen_translate = $translate->translate("Param String yang dikirim untuk convert translate");

        return view('dokumen.index', $dokumen_translate);
    }
}

Tidak ada komentar:

Posting Komentar