Gus*_*lli 2 javascript php form-data laravel laravel-5.3
我正在尝试通过 Axios 库提交 FormData javascript 对象,但无法使其工作,因为有一个布尔字段(is_active)必须以布尔值的形式访问我的 api,而 FormData 对象正在将其转换为字符串!
我尝试在没有 FormData 的情况下实现它,然后它就完美了!
有人知道让它发挥作用的最佳方法吗?实际上,我在 Laravel 请求修复该字段方面做得非常糟糕......我不认为这是最好的主意,但它现在有效!
有人有好的解决方案吗?
这是我当前的工作代码,但我想让它变得更好!
我的控制器和我的要求:
PS:我已经在 $rules 函数上做了 IF 来修复布尔问题...如果我把它作为字符串,我的数据库就会出现问题,其中字段必须是布尔值,我还必须删除我的布尔验证那个领域
class PostRequest extends FormRequest
{
public function rules()
{
if (in_array($this->get('active'), ['true', 'false'])) {
$this->offsetSet('active', $this->get('active') == 'true');
}
$rules = [
'title' => 'required|string',
'slug' => 'required|alpha_dash|unique:posts,slug',
'photo' => 'required|image',
'publish_date' => 'required|date_format:d/m/Y',
'summary' => 'required',
'content' => 'required',
'author_id' => 'required|exists:authors,id',
'category_id' => 'required|exists:categories,id,flag,posts',
// 'active' => 'boolean',
];
return $rules;
}
}
class PostsController {
public function store(PostRequest $request)
{
try {
$model = new Post($request->all());
$model = $model->save();
} catch (\Exception $e) {
return response()->json($e->getMessage(), 422);
}
return $model;
}
}
Run Code Online (Sandbox Code Playgroud)
现在有我的 javascript 代码
PS:我正在使用服务,因此我的 createPost 会触发发出请求的 axios 客户端
let data = new FormData()
let record = _.cloneDeep(this.record)
for (var key in record) {
if (record[key] === 'true' || record[key] === 'false')
data.append(key, record[key] === 'true')
else
data.append(key, record[key])
}
return _.isNil(this.record.id) ? createPost(data) : updatePost(data.id, data)
Run Code Online (Sandbox Code Playgroud)
FormData 只能以字符串或缓冲区的格式发送,因此不能通过 FormData 发送布尔值。如果您确实只需要布尔值,只需在服务器端将字符串转换为布尔值即可。
在php中将字符串转换为布尔值
$boolValue = ($stringToTest === 'true');
Run Code Online (Sandbox Code Playgroud)
参考上述代码的stackoverflow 答案
| 归档时间: |
|
| 查看次数: |
6214 次 |
| 最近记录: |