我犯了这个错误:
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']但仍然相同...... 请帮忙吗?
答案 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%工作的最佳方法。