laravel 上的路由模型绑定和加密
Route Model Binding and encryption on laravel
在尝试将加密的公司 ID 绑定到 URL 时,我遇到了错误。
我假设我已经包含了我需要的所有东西,并且我可以使用像 companyEncrypt 这样的自定义名称,因为它是一个自定义绑定。
错误:
FatalErrorException in RouteServiceProvider.php line 48:
Class 'App\Providers\App\Company' not found
use Log;
use Crypt;
use App\Company;
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
代码:
public function boot(Router $router)
{
parent::boot($router);
// An a binder for the encrypted company value.
$router->bind('companyEncypt', function($encryptedValue) {
try {
$decrypted = Crypt::decrypt($encryptedValue);
} catch (DecryptException $e) {
Log::info('Dectypt Exception for the company id');
dd('error');
}
return App\Company::where('id', $decrypted)->first();
});
}
有人遇到过这个吗?
您需要通过 公司 或 \App\Company[=31= 提及您的 公司 ].
替换
return App\Company::where('id', $decrypted)->first();
和
return Company::where('id', $decrypted)->first();
错误的原因是当您引用的 class 名称不是完全限定的 class 名称(例如 \App\Company) 或导入的 class 名称(例如 Company,您使用 use App\Company 导入),自动加载器在当前命名空间中查找 class。
因此,如果您在 App\Providers 命名空间中引用 App\Company,它会尝试加载 App\Providers\App\Company class.
您已经在页面的开头包含 App\Company。这里使用App\Company;
这样使用:return Company::where('id', $decrypted)->first();
在尝试将加密的公司 ID 绑定到 URL 时,我遇到了错误。 我假设我已经包含了我需要的所有东西,并且我可以使用像 companyEncrypt 这样的自定义名称,因为它是一个自定义绑定。
错误:
FatalErrorException in RouteServiceProvider.php line 48:
Class 'App\Providers\App\Company' not found
use Log;
use Crypt;
use App\Company;
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
代码:
public function boot(Router $router)
{
parent::boot($router);
// An a binder for the encrypted company value.
$router->bind('companyEncypt', function($encryptedValue) {
try {
$decrypted = Crypt::decrypt($encryptedValue);
} catch (DecryptException $e) {
Log::info('Dectypt Exception for the company id');
dd('error');
}
return App\Company::where('id', $decrypted)->first();
});
}
有人遇到过这个吗?
您需要通过 公司 或 \App\Company[=31= 提及您的 公司 ].
替换
return App\Company::where('id', $decrypted)->first();
和
return Company::where('id', $decrypted)->first();
错误的原因是当您引用的 class 名称不是完全限定的 class 名称(例如 \App\Company) 或导入的 class 名称(例如 Company,您使用 use App\Company 导入),自动加载器在当前命名空间中查找 class。
因此,如果您在 App\Providers 命名空间中引用 App\Company,它会尝试加载 App\Providers\App\Company class.
您已经在页面的开头包含 App\Company。这里使用App\Company;
这样使用:return Company::where('id', $decrypted)->first();