Comment #⁨2⁩

In reply to Toby Toby

Thanks for clarifying that @Toby! I had two more questions:

  1. How can we implement conditional rendering of components based on the route. In my case, I’m trying to remove the ‘search’ component from the Header on any routes that aren’t prefixed with “/forums” (my waterhole path is set to "forums").
// Inside the WaterholeServiceProvider extend function

if (!Route::is('forums.*')) {
    Extend\Header::remove('search');
}

I don’t think we can access routes in a ServiceProvider (nor is it good practice?) since that’s what’s bootstrapping the application, though I might be mistaken. In normal situations, we would have this conditional in our blade template files. However, I don’t think we have access to modify the Waterhole blade template files (unless I missed something in the Waterhole docs).

See my response in the post below for the solution.

  1. How should we go about adding relationships to the User model with my own generated models. In the docs, it’s mentioned to use Laravel’s resolveRelationUsing method. However, the Laravel docs mention that this is not recommended for normal application development. Is it then better to just create another User model and extend the Waterhole\Models\User class?
  1. In reply to Stormlight Stormlight

    I was able to figure out my question above regarding conditional rendering. If anyone else is interested, I just removed the 'search' component and added my own custom component (which has the logic for the conditional rendering) via the WaterHoleServiceProvider. Waterhole docs for reference.

    // WaterholeServiceProvider
    
    use App\View\Components\Navigation;
    
    public function extend(): void
    {
        Extend\Header::remove('search');
        Extend\Header::add(Navigation::class); // my own custom Blade component
    }
    // My custom blade view (navigation.blade.php)
    
    <div>
        {{-- Other nav links if needed --}}
        @if (Route::is('waterhole.*'))
            <x-waterhole::HeaderSearch />
        @endif
    </div>