【发布时间】:2021-08-09 05:32:13
【问题描述】:
我有这个控制器:
<?php
namespace App\Http\Controllers\API;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Assetgroup;
use App\Models\Asset;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
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', 'API\AssetgroupController');
它是从他的 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
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
需要检查的几件事;你的api前缀下的api组是不是,ID为22的资产组被软删除了?
-
是的,API 组在 'api/' 下,并且资产组在表中没有软删除列。我可以使用“index()”方法中来自同一控制器/路由的“Get”请求来访问它。
-
你正在使用 axios。它是否配置为将 laravel 的 csrf 令牌放在其请求的标头中?我认为默认情况下这是在 resources/js/app.js 或 bootstrap,js 中。另外,您是否在更新方法中进行了一些验证?你能把那个方法的代码和jsonvalidation中间件贴出来吗?
-
它不会让我发布代码,因为它太长了。我把控制器卡在这里:sandbox.onlinephpfunctions.com/code/…
-
我不确定 csrf 令牌,我在这里有点超出我的深度。
标签: reactjs laravel laravel-5 eloquent axios