Como chamar um método do controller pela view?

1,976 views
Skip to first unread message

Marcelo Gomes

unread,
Oct 1, 2016, 6:52:31 PM10/1/16
to Laravel Brasil
Pessoal

Eu preciso implementar uma view (blade) onde as opções dependem de permissões.

Como fazer um chamada a um método (no controller) através da view?

Exemplo:

@if (????::getPermissao(1))   ==> este método eu pretendia implementar num controller para de acordo com o parâmetro eu ir até o BD checar se o usuário tem permissão
     <a href='{{ route('grupos.index') }}'>Cadastro de Grupos</a>
@endif


Message has been deleted

Oscar Dias

unread,
Oct 3, 2016, 9:50:37 AM10/3/16
to laravel...@googlegroups.com
Você tem duas opções Marcelo:

Método estático (tem que colocar todo namespace):
@if (\App\Usuario::getPermissao(1))

Ou através da instância, com um método não estático (tem que passar a
variável para view, obviamente):
@if ($usuario->getPermissao(1))

Abraço

Em 1 de outubro de 2016 19:52, Marcelo Gomes
<mar...@mgsistemas.com.br> escreveu:
> --
> Você recebeu essa mensagem porque está inscrito no grupo "Laravel Brasil"
> dos Grupos do Google.
> Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie
> um e-mail para laravel-brasi...@googlegroups.com.
> Para mais opções, acesse https://groups.google.com/d/optout.

Ruver Dornelas

unread,
Oct 3, 2016, 10:18:53 AM10/3/16
to laravel...@googlegroups.com
Acho que o ideal seria já passar para a view a permissão.
Caso não seja possível faça um helper específico para o que você deseja chamando um método estático.
Você pode criar um pasta específica chamada helper.
No seu composer.json você tem que liberar o acesso a essa nova pasta:
"autoload": {
"classmap": [
"app/Helpers"
]
Aí você pode criar uma classe normal, chamando um serviço para comunicar com o banco de dados:
class Permission
{
public static function get($type)
{
        $repository = app()->make('App\Repositories\PermissionRepository');
return $repository->getPermission($type);
}
} 

Para chamar o serviço é necessário registra-lo no provider:
public function register()
{
$this->app->bind(
'App\Repositories\PermissionRepository'
);
}

Daí é só chamar na view ficaria assim:
@if(Permission::get($type))




> Para mais opções, acesse https://groups.google.com/d/optout.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Laravel Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para laravel-brasil+unsubscribe@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.



--
Att...
Ruver de Souza Dornelas

Marcelo Gomes

unread,
Oct 5, 2016, 7:57:39 AM10/5/16
to Laravel Brasil
Bom dia.

Agradeço a todos pela ajuda.

Eu implementei da forma sugerida pelo Oscar e deu certo.

Vou implementar também a forma sugerida pelo Ruver (helpers).

Funcionou

Valeu

> Para mais opções, acesse https://groups.google.com/d/optout.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Laravel Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para laravel-brasi...@googlegroups.com.

Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages