Почему эта проверка всегда требует от меня? - PullRequest
0 голосов
/ 21 июня 2020

наверное я что-то делаю не так, я кодировал инстинктивно хаха. Проверка Laravel кажется очень простой в реализации, но по какой-то причине между моим vuejs компонентом и моей php функцией я всегда получаю «требуется». Я новичок как в Laravel, так и в Vuejs, мне кажется, что моя функция php в порядке (для того, что я могу видеть в Интернете), но, вероятно, мне что-то не хватает в связи между laravel и vue. Подскажите, что не так?

public function createTag(Request $request)
    {
        try {
            $data = request()->validate([
                'title' => 'required'
            ]);

            $tag = new Tag;
            $tag->title = $request->title;
            if($tag->save())
            {
                $tag->usercontracts()->attach($request->usercontractId);
            }

            return response()->success(__('success.showing', ['resource' => 'des Vertrags', 'resourceE' => 'tag']), $tag->id, 200);
        } catch (Exception $e) {
            return response()->error(__('error.showing', ['resource' => 'des Vertrags', 'resourceE' => 'tag']), 400, $e);
        }
    }
<template>
  <div id="relative">
    <button @click.prevent="show = 1" v-if="show == 0">+tag</button>
    <input type="text" v-model="title" name="title" v-if="show == 1">
    <button @click="createTag" v-if="show == 1">add</button>
  </div>
</template>
<script>
import TagService from "@/services/TagService";
export default {
  name: "add-tag-component",
  props: ['usercontractId'],
  data(){
    return {
      title:null,
      show:0
    };
  },
  methods:
  {
    async createTag()
    {
      const {body: {data}} = await TagService.createTag(this.title, this.usercontractId);
      this.$emit('addedTag', this.title, data);
      this.title = '';
      this.show = 0;
    }
  }
};
</script>

А это TagService

export default {
    createTag(title, usercontractId, tagId) {
        return Vue.http.post(`contract/createTag/${title}/${usercontractId}`, tagId);
    }
}

Я тоже получаю эту ошибку. Может быть, вот и ответ?

Vue warn]: Ошибка в обработчике v-on (Promise / asyn c): «[object Object]»

найдено в

---> ресурсы / активы / js / компоненты / контракт / листинг / AddTagComponent. vue ресурсы / активы / js / компоненты / контракт / листинг / ContractListingItemComponent. vue ресурсы / активы / js /components/contract/listing/ContractListingComponent.vue

1 Ответ

2 голосов
/ 21 июня 2020

В вашем TagService

Вам нужно передать ${title} как полезную нагрузку, а не как uri.

export default {
    createTag(title, usercontractId, tagId) {
        return Vue.http.post(`contract/createTag/${title}/${usercontractId}`, tagId);
    }
}

на

export default {
    createTag(title, usercontractId, tagId) {
        return Vue.http.post(`contract/createTag`, {
            tagId: tagId,
            title: title,
            usercontractId: usercontractId
        });
    }
}

Laravel подтверждает передаваемую полезную нагрузку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...