2016-10-15 35 views
1

我试图提交FORMDATA JavaScript对象线槽Axios公司库,我不能让它工作,因为有一个布尔字段(IS_ACTIVE)谁必须去我的API为布尔并且FormData对象将其转换为字符串!发送布尔与FORMDATA使用Javascript - Vuejs + Laravel应用

我试图让它没有FormData,然后它就完美了!

任何机构都知道使其工作的最佳方式?事实上,我在Laravel要求修复这个领域方面做得非常糟糕......我认为这不是最好的主意,但它现在可行!

有人有很好的解决办法吗?

还有就是我目前的工作代码,但我想使它变得更好!

我的控制器和我的要求:

PS:我曾经提出,如果在$规则功能来修复布尔问题...如果我让他去为字符串我有问题,我的数据库,在那里该字段必须是布尔值,我也不得不删除该字段我的布尔验证

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; 
    }  
} 

现在有我的javascript代码

PS:我与服务工作,所以我createPost触发我的爱可信的客户谁发出请求

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) 

回答

0

FORMDATA只能在字符串或缓冲区的格式发送,所以你不能通过FORMDATA发送布尔值。如果你真的只需要布尔值,只需在服务器端将字符串转换为布尔值即可。

要转换的字符串在PHP

$boolValue = ($stringToTest === 'true'); 

参考from this stackoverflow answer为布尔值用于上述代码