私の状況は、以下のコードのようにtenant_path()
をfilesystems.php
の中にロードする必要があるところです。それは私のカスタムヘルパークラスであるhelpers.php
にあるtenant_path()
関数ですApp/Helpers/helpers.php
。目的は異なるテナントのための動的パスのためです。ファイルシステムでカスタムヘルパー関数を呼び出す方法
私の問題はtenant_path()
ではfilesystems.php
にロードされたが、私は、ミドルウェアにしようとしたとき、コントローラとその仕事をモデル化されていません。.. tenant_path()
はLaravelはfilesystems.php
を実行したときにはまだロードされていないように思えます。しかしFoundation/helpers
作品にどのようにstorage_path()
私tenant_path()
がfilesystem.php
エラーショーの下
[ReflectionException] Class path.tenant does not exist
私のコードは
Filesystems.php
'image' => [
'driver' => 'local',
'root' => storage_path('app/public/images/'.tenant_path()),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
あるで作業されていない状態数時間後
Helpers.php
if (! function_exists('tenant_path')) {
/**
* Get the path to the tenant folder.
*
* @param string $path
* @return string
*/
function tenant_path($path = '')
{
return ""; //also not working
return app()->make('path.tenant').($path ? DIRECTORY_SEPARATOR.ltrim($path, DIRECTORY_SEPARATOR) : $path);
}
}
AppServiceProvider
Tenanti::connection('company', function (TenantDomain $entity, array $config) {
$config['database'] = env('TENANTI_DB_PREFIX')."_{$entity->id}";
$this->app->bind('path.tenant', function() use ($entity) {
return "{$entity->sub_domain}.".env('APP_DOMAIN');
});
return $config;
});
composer.json
"autoload": {
"files": ["app/Helpers/helpers.php"]
},
いいえ..既にLaravelがfilesystems.phpを実行すると、tenant_path()ヘルパーがまだロードされていないようです。 – ZeroOne