Как обновить данные в Vue js и Laravel? - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь обновить свою форму. По какой-то причине он работает в Postman, но не в браузере. Я использую ax ios, чтобы делать запросы, и у меня есть v-модель на всех моих полях формы. Я пробовал как с PUT, так и с PATCH, и я получаю эту ошибку соответственно:

The PATCH method is not supported for this route. Supported methods: GET, HEAD.

Вот мой код для загрузки данных в форме и функция обновления:

editProfile(profile) {
                this.editProfileData = {...profile};
                this.showEditProfileModal();
            },

updateProfile: async function() {

                axios.patch(this.uri + '/' + this.editProfileData.id, {

                    employment_type: this.editProfileData.employment_type,
                    date_of_birth: this.editProfileData.date_of_birth,
                    experience: this.editProfileData.experience,
                    skills: this.editProfileData.skills,

                }).then(response=>{

                    this.hideEditProfileModal();
                    this.$toast.success(response.data.message);

                })

                    .catch(error=>{
                        this.$toast.error(error.response.data.message);
                    });

            },

Вот мои маршруты api. php:

Route::group(['middleware' => 'auth:api'], function() {

    Route::post('candidate/profile', function() {
        return response()->json([
            'message' => 'Candidate access',
            'status_code' => 200
        ], 200);
    })->middleware('scope:candidate');

    Route::post('candidate/profile/create', function() {
        return response()->json([
            'message' => 'Candidate access',
            'status_code' => 200
        ], 200);
    })->middleware('scope:candidate');

    // Route For Candidate Profile Pages
    Route::resource('/candidate/profile', 'CandidateProfileController', ['names'=>[

        'index'=>'candidate.profile.index',
        'create'=>'candidate.profile.create',
        'store'=>'candidate.profile.store',
        'edit'=>'candidate.profile.edit',
        'update'=>'candidate.profile.update'

    ]])->middleware('scope:candidate');


});

1 Ответ

0 голосов
/ 20 апреля 2020

Как говорит Раду Дикэ, вам нужно отредактировать файл маршрута (route / web. php). Что-то вроде

Route::prefix('/form')->group(function(){
  Route::get('/','FormController@index'); //for view
  Route::post('/','FormController@form'); //for send post data 
});

в FormController@form Вы можете проверить данные формы из запроса ax ios POST. Я обычно возвращаю json сообщение с

if($validate){
  \json_encode(["sucess" => "Sucessfull message!");
}
else{
  \jso0n_encode(["error" => "Invalid credentials.");
}

И в ответ на запрос в Vue action ...


   axios({
         method: 'post',
         url: '/signin',
         data: {
            _token: this.$el._token.value, //laravel csrf_token input form
            email: this.$el.email.value,
            password: this.$el.password.value,
            checked: this.$el.remember.checked
          },
          config: { headers: {'Content-Type': 'multipart/form-data' }}
          })
          .then(function (response) {
             if(response.data.error){
                alert(response.data.msg);
             }
             else if(response.data.sucess){
                console.log(response.data.sucess);
                window.location = "/";
             }
             else{
                console.log(response.data);
             }
          })
          .catch(function (response) {
             console.log("Fatal error.");
          });
          e.preventDefault();

Не забывайте csrf токен в запросе.

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