簡體   English   中英

[Vue警告]:渲染錯誤:“ TypeError:無法讀取未定義的屬性'id'”

[英][Vue warn]: Error in render: “TypeError: Cannot read property 'id' of undefined”

我正在使用Laravel和VueJS構建CRUD。 提交創建表單時,出現此錯誤消息:[Vue警告]:渲染錯誤:“ TypeError:無法讀取未定義的屬性'id'”

在這里,我的createUser方法:

export default {
    data(){
        return {
            user: {
              firstname: '',
              lastname: '',
              email: '',
              password: ''
            },
            errors: [],
            users: [],
            update_user: {}
        }
    },
    mounted(){
        this.readUsers();
    },
    methods: {
        createUser(){
            axios.post('user', {
                firstname: this.user.firstname,
                lastname: this.user.lastname,
                email: this.user.email,
                password: this.user.password
            }).then(response => {
                this.reset();
                if (response.data.message == "Error"){
                  this.errors.push("L'utilisateur que vous tentez d'ajouter existe déjà!")
                }else{
                  this.users.push(response.data.user);
                }
            })
        },
        readUsers(){
            axios.get('user')
                .then(response => {
                    this.users = response.data.users;
                });
        },
    }
}

這里是我從數據庫顯示所有用戶時的表格。 顯示用戶正常工作。

<table class="table table-bordered table-striped table-responsive" v-if="users.length > 0">
  <tbody>
  <tr>
      <th>#</th>
      <th>Nom</th>
      <th>Prénom</th>
      <th>Adresse e-mail</th>
      <th>Action</th>
  </tr>
  <tr v-for="(user, index) in users">
      <td>{{ user.id }}</td>
      <td>{{ user.lastname }}</td>
      <td>{{ user.firstname }}</td>
      <td>{{ user.email }}</td>
      <td>
          <button @click="initUpdate(index)" class="btn btn-success btn-xs">Éditer</button>
          <button @click="deleteUser(index)" class="btn btn-danger btn-xs">Supprimer</button>
      </td>
  </tr>
  </tbody>
</table>

我的Laravel用戶模型在這里:

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'id',
        'firstname',
        'lastname',
        'email',
        'password'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
}

最后,我的UserController方法:

public function store(Request $request)
{
    $this->validate($request, [
        'firstname' => 'required',
        'lastname' => 'required',
        'email' => 'required',
        'password' => 'required'
    ]);

    $user = User::create([
        'firstname'     => request('firstname'),
        'lastname'      => request('lastname'),
        'email'         => request('email'),
        'password'      => Hash::make(request('password'))
    ]);

    return response()->json([
        'user'    => $user,
        'message' => 'Success'
    ], 200);
}

create()方法返回模型。 因此,您需要對用戶集合進行一些轉換,

public function store(Request $request)
{
    $this->validate($request, [
        'firstname' => 'required',
        'lastname' => 'required',
        'email' => 'required',
        'password' => 'required'
    ]);

    $user = User::create([
        'firstname'     => request('firstname'),
        'lastname'      => request('lastname'),
        'email'         => request('email'),
        'password'      => Hash::make(request('password'))
    ]);

    return response()->json([

        'user'    => [
          'id'=>$user->id, 
          'firstname'=>$user->firstname,
          'lastname'=>$user->lastname,
          'email'=>$user->email
        ],

        'message' => 'Success'

    ], 200);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM