【问题标题】:Why this validation gives me always required?为什么这个验证总是需要我?
【发布时间】:2020-10-11 02:04:40
【问题描述】:

可能我做错了什么,我一直在本能地编码哈哈。 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 警告]:v-on 处理程序中的错误(Promise/async):“[object Object]”

发现于

---> 在资源/资产/js/components/contract/listing/AddTagComponent.vue 在资源/资产/js/components/contract/listing/ContractListingItemComponent.vue 在资源/资产/js/components/contract/listing/ContractListingComponent.vue

【问题讨论】:

    标签: laravel validation vue.js


    【解决方案1】:

    在您的 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 验证你传递的有效载荷。

    【讨论】:

    • 非常感谢!我现在可以去睡觉了哈哈。好的,是的,显然我不知道我在用 vuejs 做什么,我需要时间来适应 javascript。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多