laravel-5 - Laravel htmlentities()期望参数1为字符串,将其转换为字符串后给出的数组

标签 laravel-5 compiler-errors

试图在laravel中设置并获取 session 。在我的 Controller 中,我正在将数组转换为字符串,如果打印该字符串不会抛出错误,但是如果遇到错误, session 似乎会获取数组而不是字符串。 Controller :

 public function  getQuestions(){

    $questions = DB::table('questions')->orderBy(DB::raw('RAND()'))->get();

    $questions= json_decode(json_encode($questions), true);

    Session::put('questions', $questions);

    return view('test', array('questions' => $questions));
}

刀:
{{ Session::get('questions') }}

一个错误:
htmlentities() expects parameter 1 to be string, array given

最佳答案

“问题”是对象的集合。您不能使用{{placeholder}}直接打印对象。每当您使用{{placeholder}} laravel Blade 引擎时,都假​​定它是字符串。因此它通过htmlentities函数传递了可变性。所以错误来了。如果确实需要打印此代码,则可以编写一个foreach循环。这是 sample

@foreach(Session::get('questions') as $question)
         {{$question-> attribute _to_print}}
      @endforeach

Blade tutorial

Blade {{}}语句通过PHP的htmlspecialchars函数自动发送,以防止XSS攻击。

关于laravel-5 - Laravel htmlentities()期望参数1为字符串,将其转换为字符串后给出的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51280330/

相关文章:

php - 如何为特定 session 设置过期时间

laravel - 如何保护所见即所得的编辑器免受 XSS 攻击?

laravel - 如何在 Laravel 中使用 ->append v. protected $appends

php - Laravel 5.8 - 每个 IP 的速率限制

laravel - Route::auth() 和命名空间

loops - 单元滤波器(4)中的VHDL信号输出[3]连接到以下多个驱动程序:

c++ - 错误编译 boost

c++真的很困惑链接错误

.net - 基本 CLI 库 'mscorlib' 与引用的 F# 核心库二进制不兼容

qt - 尝试为“Open Embedded2设备”构建QT应用程序时出错