Passar parametros entre Props
[Concluído]
Olá Professor,
Eu tenho a seguinte situação no meu projeto de VuejS com Laravel
Existe uma tabela chamada “partners” e existe uma tabela chamada “collaborators”.
Para cadastrar o “collaborator” preciso do “id” da tabela “partner”.
Estou no cadastro de Colaborador onde o FORM recebe através de “props” o parâmetro “partner_id” e além disso o objeto "collaborator" que virá do Componente Pai.
Minha dúvida é como conseguirei passar o parâmetro “partner_id” para o objeto “collaborator” ?
Estou usando Vuex e ao passar os parametros para inserir o registro preciso passar o partner_id.
O projeto esta no git
https://github.com/robertotnoya/financiamento
Voce vai notar que não cosigo passar o parametro partner_id para o vuex mesmo usando watch
Olá, Roberto!
Tudo bem?
Esse exemplo está qual component mesmo? Vou dá uma olhada onde está errando.
Esta dentro de partners.
Dentro de partners é possível cadastrar os collaborators.
Criei esse e exemplo para aprenser como trabalhar com dois forms distintos na mesma página.
O componente EditPartnerComponent (components\backend\pages\partners) inclui o FormCollaboratorComponent.
No vuex de collaborator eu criei um alert so para visualizar o parametro partner_id que não aparece.
Outro ponto, eu gostaria que ao efetuar o store do colaborador volta-se para a tela do parceiro escolhido.
No momento ao cadastrar um parceiro está voltando para a lista de parceiros.
this.$router.push({name: 'admin.partners'})
Eu preciso que volte para tela do parceiro escolhido
this.$router.push({name: 'admin.partners.edit', params: {id: response.data.id}})
Não estou conseguindo direcionar para a tela correta.
Olá Roberto!
Como essa operação é algo especifica desses dois components, não tem a necessidade de levar para o Vuex.
--------------
Vi que no component EditPartnerComponent.vue você está usando o FormCollaboratorComponent.vue:
<collaborator :partnerid="partner.id"></collaborator>
Não entendi muito bem a ideia. O objetivo desse FormCollaboratorComponent.vue não seria incluir um novo collaborator ao partner?
Se sim, porque está recebendo também como props o collaborator? É porque pretende utilizar esse mesmo component para editar também?
Essa lógica aqui teoricamente está correta, está gerando algum erro? Se sim me dê mais detalhes.
this.$router.push({name: 'admin.partners.edit', params: {id: response.data.id}})
Você tem esse valor aqui?
response.data.id
Eu gostaria de ao cadastrar o parceiro o sistema voltar para rota de edição do parceiro.
Se voce olhar o arquivo
(resources/js/components/backend/pages/partners/partials/FormPartnerComponent.vue) vai notar que eu tento realizar esse redirecionamento (this.$router.push({name: 'admin.partners.edit', params: {id: response.data.id}}))
const action = this.updating ? 'updatePartner' : 'storePartner'
this.$store.dispatch(action, this.partner)
.then(() => {
this.$router.push({name: 'admin.partners.edit', params: {id: response.data.id}})
this.$snotify.success('Cadastro efetuado com sucesso')
})
.catch(error => {
this.$snotify.error('Erro no cadastro')
//this.errors = error.response.data.errors
})
Não ocorre erros e o Store ocorre sem problemas
No arquivo VUEX (resources/js/vuex/modules/partners/partners.js)
storePartner (context, params) {
context.commit('PRELOADER', true)
return new Promise((resolve, reject) => {
axios.post(`${URL_BASE}${RESOURCE}`, params)
.then(response => resolve(response.data))
.catch(error => reject(error))
.finally(() => context.commit('PRELOADER', false))
})
},
Voce pode pegar o exemplo da sua aula VUEX + Laravel onde voce cadastra a categoria. Só que em vez de listar as categorias apos o INSERT retorna para a tela de edição da categoria cadastrada
Certo, entendi.
Mas, isso daqui está retornando o id correto?
response.data.id
console.log(response)
Gera algum erro? Se sim, qual?
Olá Carlos,
Finalmente consegui resolver o problema referente ao redirecionamento após a inserção de um registro no caso um parceiro (partner)
Também resolvi a questão dos colaboradores.
O que eu queria e consegui fazer foi a criação dos dos partners e collaborators dentro de TABS.
Quando é cadastrado um parceiro que fica dentro de uma tab, assim que ocorre o INSERT ele abre outra tab com o form dos collaborators.
Tudo isso ma mesma URL http://financiamento.local/api/v1/partners/{id: no caso de edição}
Eu não queria abrir um tela separada só para a criação e edição de collaborators.
Acho que a navegabilidade ficou melhor pois o partner_id é informado automaticamente.
Vou deixar os links de tela para voce me entender:
http://ayontech.com.br/lixo/tela1.jpg
http://ayontech.com.br/lixo/tela2.jpg
Vou em frente no desenvolvimento desse sistema. Aliás é meu primeiro sistema em VueJS. Ainda preciso seguir um longo caminho.
Falo aqui do Japão!
Aqui, como existe uma neura em relação ao corona virus não saio muito e aproveito para aprofundar meus estudos.
Esse é o lado bom dessa situação.
Abraços!
Opa amigo, que bom que conseguiu resolver, meus parabéns!!!
É realmente esse vírus está causando muito medo em todo o mundo, espero que se resolva logo.
Abs;
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!