【问题标题】:Displaying content from text editors in React App在 React App 中显示来自文本编辑器的内容
【发布时间】:2020-07-05 23:42:33
【问题描述】:

我正在尝试使用 React 和 Laravel 制作一个简单的博客,并且我使用了一个文本编辑器来插入博客的内容。现在,当我尝试在我的 React 应用程序中显示这些博客时,它会将内容完全显示为字符串,而不是 html 元素。这是我所做的(代码和屏幕截图):

我的表单

Laravel 控制器

public function save(Request $request) {

    $validatedData = $request->validate([
        'language' => 'required',
        'body' => 'required',
    ]);

    $post = new Posts;
    $post->language = $request->input('language');
    $post->body = htmlspecialchars($request->input('body'));
    $post->save();

    return redirect('dashboard');

}

public function posts($id) {
    $posts = DB::table('posts')
    ->select('id', htmlspecialchars_decode('body'))
    ->where([['language', '=', $id]])->get();
    return response()->json($posts); 
}

这是我的看法:

谁能帮助我在这里做错了什么?很感谢任何形式的帮助。谢谢你

【问题讨论】:

    标签: javascript php reactjs laravel


    【解决方案1】:

    你不能在select里面使用htmlspecialchars_decode,你需要在获取数据后使用它,最好的方法是使用eloquent accessors

    //POSTS CLASS:
    
    public function getBodyAttribute(){
      return htmlspecialchars_decode($this->body);
    }
    
    //----------------------
    
    //CONTROLER CLASS:
    
    public function posts($id) {
        $posts = Posts::select('id','body')
        ->where([['language', '=', $id]])->get();
        return response()->json($posts); 
    }
    
    

    附:最好为模型使用单数名称

    【讨论】:

    • 嗨,谢谢Anas,它确实会解码内容,但不会将样式应用于正文。现在它会吐出如下内容:

      博客内容

    • 输出结果如何?
    • 你试过htmlspecialchars($request->input('body'),ENT_NOQUOTES)
    • 谢谢@AnasBakro,我确实解决了这个问题。您的回答帮助我使我的 laravel 代码更好,并发现问题出在反应方面。
    • 欢迎您,您能否在答案中发布您的解决方案,以便其他人可以从中受益。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    相关资源
    最近更新 更多