Essa foi a solução que encontrei:
@if(!Route::is('login') && Auth::guest())
<a href="{{ route('login') }}">Entrar</a>
@endif
Essa foi a solução que encontrei:
@if(!Route::is('login') && Auth::guest())
<a href="{{ route('login') }}">Entrar</a>
@endif
Legal Guilherme! Gostei.
Uma possibilidade interessante seria usar diretivas do Blade. Dá mais trabalho, escreve mais, porém fica bem elegante. Abaixo vou compartilhar pra que você comente o que achou:
1 - Crie um arquivo chamado AuthDirectives.php na pasta app/Providers. 2 - Adicione o seguinte código no arquivo:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Blade;
class AuthDirectives
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
Blade::if('guest', function () {
return Auth::guest();
});
}
}
3 - Adicione o seguinte código no arquivo config/app.php no array de providers:
App\Providers\AuthDirectives::class,
4 - Agora você pode usar a diretiva personalizada @guest na sua view.
@guest
<a href="{{ route('login') }}">Entrar</a>
@endguest
5 - Agora você pode remover a verificação de Route::is('login') e Auth::guest() na sua view, pois a diretiva personalizada @guest cuidará disso para você.
Teste aqui e conferi na documentação e o AuthDirectives ficou assim:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\ServiceProvider;
class AuthDirectives extends ServiceProvider
{
public function register()
{
Blade::if('guest', function () {
return !Route::is('login') && Auth::guest();
});
}
}
Tinha faltado estender o ServiceProvider (de onde vem o método register que sobrescrevemos) e a condição de verificar a rota para não mostrar o botão entrar na tela te login.
Valeu pela dica aprendi algo novo! = )