Laravel - htmlspecialchars()期望参数1为字符串,给定对象

时间:2017-04-04 21:18:27

标签: php laravel

我犯了这个错误:

htmlspecialchars() expects parameter 1 to be string, object given

我在控制器中使用:

$data = '{"pr":{"code":"1"},"ac":[[{"icon":"web","action":"link","url":"asd"}]]}'
$newData = json_decode($data);

我将它作为数组发送到视图:'data'=> $ newData 当我尝试在视图中使用$ data时,它会给我错误

尝试使用$ data-> ac OR $ data ['ac']但仍然相同...... 请帮忙吗?

6 个答案:

答案 0 :(得分:14)

当您使用刀片回显{{ $data }}时,它将自动转义输出。它只能逃脱字符串。在您的数据中$data->ac是一个数组,$data是一个对象,它们都不能按原样回显。您需要更具体地说明如何输出数据。究竟是什么看起来完全取决于你想要完成的事情。例如,要显示您需要执行的链接{{ $data->ac[0][0]['url'] }}(不确定为什么您有两个嵌套数组,但我只关注您的数据结构)。

@foreach($data->ac['0'] as $link)
    <a href="{{ $link['url'] }}">This is a link</a>
@endforeach

答案 1 :(得分:4)

如果您打算将完整数组从html发送到控制器,可以使用:

来自blade.php的

 <input type="hidden" name="quotation" value="{{ json_encode($quotation,TRUE)}}"> 
控制器中的

    public function Get(Request $req) {

    $quotation = array('quotation' => json_decode($req->quotation));

    //or

    return view('quotation')->with('quotation',json_decode($req->quotation))


}

答案 2 :(得分:4)

您可以使用serialize

<input type="hidden" name="quotation[]" value="{{serialize($quotation)}}">

但是在这种情况下,最好的方法是在刀片中使用json_encode方法,在控制器中使用json_decode

答案 3 :(得分:1)

这是访问laravel中数据的正确方法:

@foreach($data-> ac as $link) 

   {{$link->url}}

@endforeach

答案 4 :(得分:0)

尝试在您的收藏中使用 json_encode()

https://www.php.net/manual/pt_BR/function.json-encode.php

public static function getTeamMemberInto($user_id){
    
    $team = DB::table('members_team')
                ->join('teams', 'teams.id', '=', 'members_team.teams_id')
                ->join('employees', 'employees.id', '=', 'teams.leader_employees_id')
                ->where('members_team.employees_id', '=', $user_id)
                ->select('*')->first();
    // dd($team);
    if($team){
        return json_encode($team, true);
    }else{
        return false;
    }
                        
}

答案 5 :(得分:-1)

Laravel-htmlspecialchars()期望参数1为字符串(给定对象)。

以后谢谢我...................

当您从控制器或函数发送或获取数组但尝试在laravel刀片文件中打印为单个值或单个变量时,会引发错误

->使用任何将数组转换为字符串的想法都可以。

解决方案: 1)运行foreach循环并获取单个单值并打印。 2)implode()函数从数组的元素返回一个字符串。 {{implode($ your_variable,',')}}

内爆是实现它及其100%工作的最佳方法。