laravelbrasil / forum

Ama Laravel? Torne se um Jedi e Ajude outros Padawans
GNU General Public License v3.0
252 stars 13 forks source link

Injetando uma Blade em um modal #123

Open phpiando opened 7 years ago

phpiando commented 7 years ago

Olá galera tudo bem?

Estou com um pensamento de ganhar tempo e reaproveitar algo que já está pronto, sendo assim cheguei no seguinte item.

Hoje possuo o index.blade.php ( que é a página principal que está todos meus CSS e JS da vida.), e também tenho as views que são apenas o 'miolo' das minhas páginas. Até aqui está tudo bem, surgiu a dúvida no seguinte ponto. Tenho a tela de cadastro de usuários, para ir até está tela a pessoa clica no menu "Cadastrar Usuário" e posteriormente abre a tela com o formulário, a minha ideia é simples (até o momento), gostaria que qualquer tela que o usuário estiver, isto é, pode está na tela de monitoramento do sistema porém se ele clicar em um botão "Novo Cliente" ao invés de redirecionar o usuário para tela de fato a mesma seria aberta em um modal.

Não sei se consegui deixar de uma forma clara a minha dúvida, mas a minha ideia é de reaproveitar as telas de cadastro.

Agradeço pela ajuda antecipadamente

elton182 commented 7 years ago

É possível sim. Existe uma técnica que o conteúdo do modal é preenchido dinamicamente (via ajax), e é algo bem simples de fazer.

phpiando commented 7 years ago

@elton182 Obrigado pela dica. Não quero abusar, mas você por acaso não teria o link disso? Ou como que eu poderia pesquisar aqui? Obrigado novamente pela sua resposta!

zabaala commented 7 years ago

Pode fazer com iframe também. Simples e trivial =D

ranierif commented 7 years ago

Uma boa é utilizar o colorbox: http://www.jacklmoore.com/colorbox/

Como o amigo falou acima, é como se fosse um iframe.

omarkdev commented 7 years ago

Não sei a versão que você está usando, então vou separar meu comentário em 2 etapas, uma caso a versão seja o Laravel 5.4 ou maior e outra para as todas as versões.

Laravel 5.4 ou maior

Na versão 5.4 foi desenvolvido uma funcionalidade aonde pode-se criar componentes, que servem para serem reutilizados em várias áreas de sua aplicação.

Para criar um componente é muito simples, basta criar um arquivo na pasta resources/views/ e depois chamar a função @component('nome') dentro de sua view.

Documentação: https://laravel.com/docs/master/blade#components-and-slots

Todas as versões

Pensando no conceito descrito a cima de componentes, que servem para serem reutilizados em sua aplicação, você pode criar um arquivo separado, e incluir ele nas views em que você necessita, usando a função @include. Por exemplo:

Você pode criar um arquivo modal-register-users.blade.php, onde seu conteúdo é o modal que você precisa e nas views em que você precisa desse modal, você usa @include('modal-register-users').

Documentação: https://laravel.com/docs/master/blade#including-sub-views

Essa é são 2 maneiras de se fazer o que você precisa, acredito que vão te servir muito bem. Como seu intuíto é reaproveitar o máximo, você pode ir quebrando suas necessidades em componentes e ir reutilizando durante sua aplicação.

Caso queira utilizar um framework front-end para o desenvolvimento de sua aplicação, recomendo o VueJS, pois ele segue esse conceito de componentização.

ronicec commented 7 years ago

@omarkdev Obrigado pelas sugestões, e estou dando uma olhada no recurso de componentes... e usando um pouco mais para o que preciso, no caso, um formulário de cadastro de usuários. Vamos supor que quero trazer os campos "usuarios, email e demais dados" todos preenchidos, como que passaria um parametro para o component? e dessa maneira dentro dele retornaria os dados?

No demais agradeço a sua ajuda!!!

omarkdev commented 7 years ago

Se tiver usando os components do Laravel, existe a funcionalidade de slots, você pode fazer da seguinte maneira:

No componente:

{{ $title }}

Na hora de chamar o componente:

@component('my-component', ['title' => 'My title'])
@endcomponent

Da uma olhada na documentação: https://laravel.com/docs/5.5/blade#components-and-slots