Я создал вторую панель в своем нитяном проекте и назвал ее «Веб-сайты», я сделал так, чтобы каждого пользователя можно было назначать нескольким веб-сайтам с помощью сводной таблицы, и, наконец, сделал панель веб-сайта так, чтобы она требовала входа в систему, где пользователь, который войдет в систему, сможет ее получить. на первый назначенный веб-сайт. Однако регистрация прошла успешно и привела меня к правильному пути к веб-сайту (EXP: /website/mywebsite), но я получаю ошибку 404 NOT FOUND (кстати, я использую laravel 11). вот несколько фрагментов кода:
Я создал вторую панель в своем нитяном проекте и назвал ее «Веб-сайты», я сделал так, чтобы каждого пользователя можно было назначать нескольким веб-сайтам с помощью сводной таблицы, и, наконец, сделал панель веб-сайта так, чтобы она требовала входа в систему, где пользователь, который войдет в систему, сможет ее получить. на первый назначенный веб-сайт. Однако регистрация прошла успешно и привела меня к правильному пути к веб-сайту (EXP: /website/mywebsite), но я получаю ошибку 404 NOT FOUND (кстати, я использую laravel 11). вот несколько фрагментов кода: [code]class WebsitePanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel ->id('website') ->path('website') ->colors([ 'primary' => Color::Green, ]) ->discoverResources(in: app_path('Filament/Website/Resources'), for: 'App\\Filament\\Website\\Resources') ->discoverPages(in: app_path('Filament/Website/Pages'), for: 'App\\Filament\\Website\\Pages') ->pages([ Pages\Dashboard::class, ]) ->discoverWidgets(in: app_path('Filament/Website/Widgets'), for: 'App\\Filament\\Website\\Widgets') ->widgets([ Widgets\AccountWidget::class, ]) ->middleware([ EncryptCookies::class, AddQueuedCookiesToResponse::class, StartSession::class, AuthenticateSession::class, ShareErrorsFromSession::class, VerifyCsrfToken::class, SubstituteBindings::class, DisableBladeIconComponents::class, DispatchServingFilamentEvent::class, ]) ->authMiddleware([ Authenticate::class, ]) ->tenant(Website::class, 'slug') ->login() ->databaseNotifications() ->databaseNotificationsPolling('10s'); } [/code] пользователь: [code]class User extends Authenticatable implements FilamentUser { /** @use HasFactory */ use HasFactory, Notifiable, HasRoles;
/** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', 'phone' ];
/** * The attributes that should be hidden for serialization. * * @var array */ protected $hidden = [ 'password', 'remember_token', ];
/** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; }
public function websites(): BelongsToMany { return $this->belongsToMany(Website::class); }
public function getTenants(Panel $panel): array|Collection { return $this->websites; }
public function canAccessPanel(Panel $panel): bool { return match($panel->getId()) { 'admin' => $this->hasRole(ControlPanelRole::cases()), 'website' => $this->websites()->count() && $this->hasRole(WebsiteRole::cases()), }; }
public function canAccessTenant(Model $tenant): bool { return $this->websites()->where('website.id', $tenant->id)->exists(); }
public function canAccessFilament(): bool { return true; /* return str_ends_with($this->email, '@mydom.com') && $this->hasVerifiedEmail(); */ } [/code] 404 НЕ НАЙДЕНО