Passagem de parâmetro entre componentes.
Olá Carlos, tranquilo?
Gostaria de compartilhar uma dúvida e pedir uma ajuda com o Livewire.
Criei dois componentes (Index e Save) para cada Model (Curso e Módulo), no componente view "Index" eu exibo uma lista de Curso com um link em cada linha para a view "Index" de Módulos. Nessa lista de Módulos eu tenho um botão Add para incluir um novo Módulo e encontrei dificuldade em passar o id do Curso da component "Index" para o "Save" de Módulos e fiz da seguinte forma:
# VIEW
<a class="btn-secondary mb-3" href="#" wire:click.prevent='createModulo({{$this->curso}})'>Criar</a>
# COMPONENT
public function createModulo(Curso $curso) {
$idCurso = $curso->id;
return redirect()->route('d-modulo-create', ['idCurso' => $idCurso]);
}
#ROUTE
Route::get('/create/{idCurso}', App\Http\Livewire\Modulo\Save::class)->name("d-modulo-create");
Eu consegui fazer funcionar do modo acima e gostaria de saber se essa é a melhor prática ou se existe um outro modo de enviar e receber parâmetros entre components livewire.
Estou tentando também uma abordagem com Event da seguinte forma:
no component view Index do Módulo eu tenho o seguinte botão:
<button wire:click="$emitTo('Components.Curso.Save', 'postAdded', {{ $this->curso }})">ChamaEvent</button>
e no componet controler Save de Módulo eu tenho isso:
protected $listeners = ['postAdded'];
public function postAdded(Curso $curso)
{
dd($curso);
}
porém não rola, talvez pq o component Save de Módulo ainda não foi instanciado e aí fica a pergunta, como melhor prática nesse contexto? A passagem de parâmetros entre componentes só funciona quando os mesmos estão instanciados? Se sim, é comum instanciar todos os componentes que participarão do processo, listar, adicionar, excluir e editar? Ou existe uma forma de separa esses processos por componentes e passar os parametros pela rota e interceptar pelo mount() o componente alvo? Eu tentei isso tb, mas bagunçou as rotas e tive problema com not found...
desculpe a enxurrada de perguntas e dúvidas, estou empenhado em entender como o Livewire trabalha para tirar o melhor proveito da tecnologia.
Desde já agradeço.
Olá, Marcos!
Tudo bem?
Como a sua pergunta é algo muito particular, vou pedir que encaminhe ela para [email protected], porque assim posso te ajudar de forma mais direcionada.
No aguardo amigo! 🙂
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!