【发布时间】:2019-06-13 13:17:51
【问题描述】:
假设我有一个简单的刀片视图表单,只有一个输入字段和一个提交按钮。在此字段中,您只需要写一个名称。之后,您需要单击进行 api 调用的提交按钮。
为了简化,假设 api 调用是 method:post 和 url:'api/user'
调用 api 在数据库中创建一个新用户并使用 json 响应:
{
"id": 1,
"name": "Im a new user",
"created_at": 20190119
}
据我所知,如果我像下面这样实现我的 Blade.view:
<form method="POST" action="/api/user">
@csrf
<div class="form-group row">
<label for="username"
class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>
<div class="col-md-6">
<input id="username" type="text"
class="form-control"
name="username" value="{{ old('username') }}" required autofocus>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Create') }}
</button>
</div>
</div>
</form>
我的页面显示响应。 我想要的是留在实际视图并将响应显示为警报,例如$名称。 '已创建'
API路由(routes/api.php):
Route::post('/user', 'UserController@createUser');
路由配置(routes/web.php):
Route::get('/user' , function () {
return view('user/create-user');
});
我知道可行的解决方案
重定向到同一页面(这意味着再次重新渲染同一页面,这并不是真正的责任 - 此解决方案导致再次加载整个页面)
在 UserController@createUser 方法中返回与数据相同的视图(与上面相同,据我所知,api 调用应以 json 响应而不是视图)
我也可以通过例如使用 Ajax查询。如您所见,有很多解决方案,但哪些是最好的。
你能说在这种情况下有最佳做法吗?
laravel 有没有开箱即用的好解决方案?
【问题讨论】:
标签: php laravel laravel-blade