#reactjs #laravel #laravel-5 #eloquent #axios
Вопрос:
У меня есть этот контроллер:
<?php
namespace AppHttpControllersAPI;
use IlluminateHttpRequest;
use AppHttpControllersController;
use AppModelsAssetgroup;
use AppModelsAsset;
use IlluminateSupportFacadesAuth;
use IlluminateSupportFacadesDB;
class AssetgroupController extends Controller
{
public function __construct()
{
$this->middleware(['jsonvalidation:CreateAssetGroupResource'])->only('store');
$this->middleware(['jsonvalidation:CreateAssetGroupResource'])->only('update');
}
public function update(Request $request, Assetgroup $assetgroup, Asset $asset = null)
{
**********
}
Этот маршрут в api.php
Route::apiResource('/assetgroups', 'APIAssetgroupController');
И это называется по его просьбе axios
Axios.put(`${API_URL}assetgroups/${division.id}`, {
added
}).then(r => {
// DETECT ERROR
toast('Users assigned!', {
type: toast.TYPE.SUCCESS,
autoClose: 2500
});
this.setState({
added: [],
selectedUsers: r.data.selected_users,
saving: false,
users: r.data.users
});
});
Я новичок в laravel и не могу понять, почему это не работает. Браузер возвращает
Request URL: http://127.0.0.1:8000/api/assetgroups/22
Request Method: PUT
Status Code: 400 Bad Request
Remote Address: 127.0.0.1:8000
Referrer Policy: strict-origin-when-cross-origin
Любая помощь будет признательна. Спасибо.
Комментарии:
1. Нужно проверить пару вещей: ваша группа api под префиксом api, удалена ли группа активов с идентификатором 22?
2. Да, группа API находится в разделе » api/», и в группе активов нет столбца «мягкое удаление» в таблице. Я могу получить к нему доступ с помощью запроса «Get» от того же контроллера/маршрута в методе » index ()».
3. Вы используете axios. Настроен ли он для размещения маркера csrf laravel в заголовке своих запросов? Я думаю, что по умолчанию это было в resources/js/app.js или бутстрэп,Джей си. Кроме того, вы проводите некоторую проверку в методе обновления? Можете ли вы опубликовать код этого метода, а также промежуточное программное обеспечение jsonvalidation?
4. Это не позволит мне опубликовать код, так как он слишком длинный. Я засунул контроллер сюда: sandbox.onlinephpfunctions.com/code/…
5. Я не уверен в маркере csrf, я немного не в себе здесь.
Ответ №1:
измените это :
Axios.put(`${API_URL}assetgroups/${division.id}`, {
к этому и попробуем:
Axios.put(`${API_URL}/assetgroups/${division.id}`, {