Ir ao conteúdo

Posts recomendados

Postado
<template>
  <div class="container">
    <div class="card">
      <div class="card-header">Criar Conta</div>
      <div class="card-body">
        <div class="col-md-6 offset-md-3">
          <form v-on:submit.prevent="onSubmit">
              
              <div class="alert alert-danger" v-if="errors.length">
                  <ul class="mb-0">
                      <li v-for="(error,index) in errors" :key="index">{{error}}</li>
                  </ul>
              </div>
            <div class="form-group">
              <label>Nome</label>
              <input
                type="text"
                class="form-control"
                placeholder="Nome..."
                v-model="name"
              />
            </div>

            <div class="form-group">
              <label>E-mail</label>
              <input
                type="email"
                class="form-control"
                placeholder="E-mail..."
                v-model="email"
              />
            </div>

            <div class="form-group">
              <label>Senha</label>
              <input
                type="password"
                class="form-control"
                placeholder="Senha..."
                v-model="password"
              />
            </div>
            <div class="form-group">
              <label>Confirmação de Senha</label>
              <input
                type="password"
                class="form-control"
                placeholder="Confirme sua senha..."
                v-model="passwordAgain"
              />
            </div>
            <button class="btn btn-success">Registrar</button>
          </form>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: "register",
  props: ["app"],
  data() {
    return {
      name: "",
      email: "",
      password: "",
      passwordAgain: "",
      errors: [],
      
    };
  },
  methods: {
    onSubmit() {
      this.errors = [];
      if (!this.name) {
        this.errors.push("O campo nome não pode ficar em branco");
      }

      if (!this.email) {
        this.errors.push("O e-mail nome não pode ficar em branco");
      }

      if (!this.password) {
        this.errors.push("O campo senha não pode ficar em branco");
      }

      if (this.password !== this.passwordAgain) {
        this.errors.push("Os campos de senhas devem ser iguais");
      }

      if (!this.errors.length) {
        const data = {
          name: this.name,
          email: this.email,
          password: this.password,
        };

        this.app.req.post("auth/register", data)
          .then((response) => {
            this.app.user = response.data;
            this.$router.push("/");
          })
          .cath((error) => {
            this.errors.push(error.response.data.error);
          });
      }
    },
  },
};
</script>

<style >
</style>

 Ao realizar o submit eu recebo o erro: 

"TypeError: Cannot read property 'req' of undefined"

found in

---> <Register> at resources/js/pages/Register.vue
       <App> at resources/js/App.vue

 

Postado

@Alessandro Kennedy Bom se você está passando um props com o nome de app e não coloco o axios no indece req, como você quer acessar isso?

 

Geralmente você defino isso no objeto de inicialização com vue ou declara uma constante com o axios.

 

Você pode import.

 

import axios from 'axios';

export default {
  name: "register",
  props: ['app'],
  data()
  {
    return {
      name: "",
      email: "",
      password: "",
      passwordAgain: "",
      errors: []
    };
  },
  methods: {
    async onSubmit() {
      this.errors = [];
      
      if (!this.name) {
        this.errors.push("O campo nome não pode ficar em branco");
      }

      if (!this.email) {
        this.errors.push("O e-mail nome não pode ficar em branco");
      }

      if (!this.password) {
        this.errors.push("O campo senha não pode ficar em branco");
      }

      if (this.password !== this.passwordAgain) {
        this.errors.push("Os campos de senhas devem ser iguais");
      }

      if (!this.errors.length) {
        const data = {
          name: this.name,
          email: this.email,
          password: this.password,
        };

        await axios.post("auth/register", data)
          .then((response) => {
            this.app.user = response.data;
            this.$router.push("/");
          })
          .cath((error) => {
            this.errors.push(error.response.data.error);
          });
      }
    },
  },
};

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!