>

작업중인 멀티 테넌트 앱이 있는데 소셜 라이트 패키지를 추가하는 동안 데이터베이스에서 특정 웹 사이트에 대한 사용자 정의 페이스 북 client_id 및 client_secret을로드하려고했습니다. 각 사이트에는 자체 사용자 정의 페이스 북 키가 있기 때문에 실제로 env 변수를 사용할 수 없습니다.

아직로드되지 않았기 때문에 config/services.php 파일에서 모델의 메소드를 실제로 호출 할 수없는 것 같습니다. 나는 아무 소용이 문제를 해결하기 위해 요청 라이프 사이클 문서를 통과 시도했습니다.

또한 비즈니스 모델의 방법에서 가치를 얻고 그것을 상수로 설정하기 위해 서비스 제공자를 만들려고했지만 여전히 앱에서 사용할 수있을 때까지 config/services.php 파일이로드되었습니다 .

여기서 데이터베이스 값을 사용할 수 있습니다 :

config/services.php

'facebook' => [
  'client_id' => \App\Business::getAppKeys()->fb_client_id,
  'client_secret' => 'your‐fb‐app‐secret',
  'redirect' => 'http://your‐callback‐url',
],

오류 :

Fatal error: Call to a member function connection() on null

  • 답변 # 1

    정말 이러지 말아야합니다. 모델에서 DB 연결을 초기화하는 것은로드 할 모든 설정이 필요하며, 당신은 당신의 구성을 정의하기 위해 이러한 연결을 사용하려는. 순환 종속성 문제가 있음을 발견했습니다.

    사용하려는 소셜 라이트 패키지를 살펴보고 싶습니다. 런타임시 자격 증명을 설정/재정의하는 기능이 서비스에없는 경우이를 구현할 수있는 자체 구현으로 서비스를 확장 할 수 있는지 확인하십시오. 나는 그것이 당신이하려는 일을 성취 할 수있는 유일한 방법이라고 생각합니다.

    이 외에도 구성 파일은 스칼라 값과 배열로만 구성되어 캐시 될 수 있습니다.

  • 답변 # 2

    내가 말하는 것에 대한 정말 빠른 예입니다.

    다음을 사용하면 나머지 응용 프로그램이 초기화되기 전에 데이터베이스를 쿼리하고 세부 정보를 가져와 구성 파일에 쓸 수 있습니다.

    경로에서 값에 액세스하는 방법을 확인 하시겠습니까?

    // app/Providers/ConfigServiceProvider.php
    namespace App\Providers;
    use App\Models\Country;
    use Illuminate\Support\ServiceProvider;
    class ConfigServiceProvider extends ServiceProvider
    {
        /**
         * Bootstrap any application services.
         *
         * @return void
         */
        public function boot()
        {
            $countries = Country::pluck('name', 'iso_code');
            config()->set(['app.countries' => $countries->toArray()]);
        }
        /**
         * Register any application services.
         *
         * @return void
         */
        public function register()
        {
            //
        }
    }
    
    // config/app.php
    // ...
    'providers' => [
        // ...
        App\Providers\ConfigServiceProvider::class,
        // ...
    ],
    // ...
    
    // routes/web.php
    Route::get('config', function () {
        dd(config('app.countries'));
    });
    
    

관련 자료

  • 이전 해시 URL의 jquery 스크롤 탑
  • 다음 React Native - 네이티브 반응 - 한 화면을 다른 화면으로 밀어 문제가 있음