代码之家  ›  专栏  ›  技术社区  ›  Andy

Laravel 5.6控制器后处理方法截断布尔值

  •  0
  • Andy  · 技术社区  · 6 年前

    我正在给Laravel控制器发Ajax帖子,如下所示。

    <script>
        let data = {
           a: true,
           b: false
        }
    
        this.axios.post(this.url, data)
          .then (result => console.log(result) )
          .catch (result => console.log(result) )
    </script>
    

    在Laravel5.6控制器post-action方法的后端,我试图检查前端的Ajax调用所发布的值。然后我把它记录到Laravel日志文件中。

    <?php
    
       public function myPostHandler(Request $request) {
             $data = $request->all();
            \Log::info("Posted data = " . print_r($data, true));
       }
    ?>
    

    在laravel.log文件中…它显示值为空,如下所示-

    [a] =>
    [b] => 
    

    所以我的问题是,我应该如何将布尔数据发送到控制器,以便它不会丢失?还想了解为什么Laravel的行为是这样的,为什么我的布尔值会被修剪?是中间件造成的吗?

    附:以下是我的路线,没有任何问题:

     Route::get('something/{catchall}', [
                'uses' => 'myController@index'
            ])->where('catchall', '(.*)');
    
     Route::post('something/{catchall}', [
                'uses' => 'myController@update'
            ])->where('catchall', '(.*)');
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Vitalii    6 年前

    在方法“myPostHandler”中,接收到的数据正常。 我猜\log::info用cast to string写入布尔类型/ 尝试在日志前转换数据

        $data = $request->all();
        foreach($data as $key => $elem){
            if (is_bool($elem)) {
                $data[$key] = ($elem) ? 'true' : 'false';
            }
        }
        \Log::info("Posted data = " . print_r($data, true));