Во-первых, я не вижу, как this.id будет переносить идентификатор с маршрутизатора, поскольку созданный файл не гарантированно будет запущен ПОСЛЕ маршрутизатора.
Ваш loadspecialite
должен получить значение из currentRoute
при вызове, и я думаю, что переменная немного ошибочна:
let id = this.$router.currentRoute.params.id;
Ваш ресурс маршрута должен быть:
Route::resource('specialite','API\SpecialiteController');
Запрос URI будет:
axios.get(`/api/specialite/${id}`).then(...)
Точный путь URI для всех зарегистрированных маршрутов в Laravel можно узнать с помощью терминала SSH для запуска консольной команды: php artisan route:list
Это должно привести к следующему:
+--------+-----------+----------------------------------+------------------------+------------------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+----------------------------------+------------------------+------------------------------------------------------------------------+--------------+
| | GET|HEAD | api/specialite | api.specialite.index | App\Http\Controllers\API\ApplicationController@index | api,auth:api |
| | POST | api/specialite | api.specialite.store | App\Http\Controllers\API\ApplicationController@store | api,auth:api |
| | GET|HEAD | api/specialite/create | api.specialite.create | App\Http\Controllers\API\ApplicationController@create | api,auth:api |
| | GET|HEAD | api/specialite/{specialite} | api.specialite.show | App\Http\Controllers\API\ApplicationController@show | api,auth:api |
| | PUT|PATCH | api/specialite/{specialite} | api.specialite.update | App\Http\Controllers\API\ApplicationController@update | api,auth:api |
| | DELETE | api/specialite/{specialite} | api.specialite.destroy | App\Http\Controllers\API\ApplicationController@destroy | api,auth:api |
| | GET|HEAD | api/specialite/{specialite}/edit | api.specialite.edit | App\Http\Controllers\API\ApplicationController@edit | api,auth:api |
P.S. нет необходимости создавать объект формы, если вы не отправляете никаких вложенных файлов, Laravel и axios по умолчанию вернутся для использования JSON с запросами ajax.
Laravel вернет объект JSON по умолчанию в ответ на AJAX-вызов JSON напрямую из ресурса на вашем контроллере:
function show($id) {
return Specialite::findOrFail($id);
}
Fail вернет заголовок 400+, который, в свою очередь, может быть обработан axsios .catch
.catch( error => { console.log(error.response.message) } )
Laravel из проверочных сообщений будет доступен через:
.catch( error => { console.log(error.response.data.errors) } )
Axios опубликует объект / массив как JSON-запрос:
data() {
return {
form: {
id:'',
name:'',
user_id:'',
bio:''
},
}
}
...
axios.post('/api/specialite',this.form).then(...);