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();