【问题标题】:Call to a member function store() on null on Laravel with Nuxt使用 Nuxt 在 Laravel 上调用 null 上的成员函数 store()
【发布时间】:2021-04-25 18:54:25
【问题描述】:

我目前在从我的 Nuxt 应用程序中保存 Laravel 时遇到问题。我试图从我的邮递员那里执行创建数据并且它有效。我不知道我在这里错过了什么。

控制器

    $book = Book::create([
        'name' => $request->name,
        'about' => $request->about,
        // dd($request->file('image')),
        'image' => $request->file('image')->store('images'),
    ]);

在我的 Nuxt 模板中,我有这个

              <form method="POST" enctype="multipart/form-data" @submit.prevent="save">
                <div class="form-group">
                  <label for="name">Book Name</label>
                  <input
                    id="name"
                    v-model="editedItem.name"
                    type="text"
                    class="form-control"
                    placeholder="Book Name"
                  >
                </div>
                <div class="form-group">
                  <label for="image">Upload Book Cover</label>
                  <input
                    id="image"
                    name="image"
                    type="file"
                    accept="image/*"
                    class="form-control-file"
                    @change="onUpload"
                  >
                </div>
                <button type="submit" class="btn btn-primary">
                  Create Book
                </button>
              </form>

我的 nuxt 方法

async save () {
  try {
    const formData = new FormData()
    formData.append('name', this.editedItem.name)
    formData.append('image', this.editedItem.imageurl.name)

    await this.$axios.post('http://127.0.0.1:8000/api/createbookapi',
      formData,
      {
        headers: {
          enctype: 'multipart/form-data'
        }
      }
    )
},
onUpload (e) {
  this.editedItem.imageurl = e.target.files[0]
},
data: () => ({
    editedItem: {
      name: '',
      imageurl: ''
  }),

当我尝试使用邮递员保存时,它可以工作。 我不知道我在这里错过了什么。

【问题讨论】:

    标签: laravel vue.js nuxt.js


    【解决方案1】:

    在 null 上调用成员函数 store()

    因为您的文件为 null 以避免此添加验证或使其可选

    可选图片示例

    确保数据库字段可以为空

    
    $book = Book::create([
        'name' => $request->name,
        'about' => $request->about,
        'image' => $request->hasFile('image')
            ? $request->file('image')->store('images')
            : null,
    ]);
    

    用于验证示例

    'image' => 'required|file', // it should check for file because file have class have store method
    

    【讨论】:

    • 我不希望它可以为空。我必须同时上传图片。在我的验证中,我实际上有这个 'image' => 'required'。不想发布太多代码。
    • @xtremeCODE 我也添加了验证码
    猜你喜欢
    • 2017-04-08
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2020-10-28
    • 2018-11-19
    • 2020-09-08
    相关资源
    最近更新 更多