블레이드 템플릿의 모든 HTML 이스케이프 Larabel
저는 라라벨에 작은 CMS를 만들고 있는데 (DB에 저장되어 있는) 콘텐츠를 보여주려고 했습니다.HTML 태그를 실행하는 대신 표시하고 있습니다.인쇄된 모든 데이터에 대해 자동 html_entity_decode가 있는 것과 같습니다.
<?php
class CmsController extends BaseController
{
public function Content($name)
{
$data = Pages::where('CID', '=', Config::get('company.CID'))
->where('page_name', '=', $name)
->first();
return View::make('cms.page')->with('content', $data);
}
}
나는 그 내용을 곱슬곱슬한 괄호로 인쇄하려고 했다.
{{ $content->page_desc }}
트리플 컬리 브레이스.
{{{ $content->page_desc }}}
그리고 그들은 같은 결과를 낸다.나는 그 HTML 태그를 탈출하지 않고 실행할 필요가 있다.
다음에서 구문 변경{{ }}
로.{!! !!}
.
The Alpha가 위의 코멘트에서 말했듯이 (답변이 아니라 글을 올리려고 생각했다), Larabel 5에서,{{ }}
(이전에는 비표준 출력 구문)이 로 변경되었습니다.{!! !!}
.교체하다{{ }}
와 함께{!! !!}
효과가 있을 거야
이 태그를 사용하다{!! description text !!}
저도 같은 문제가 있었어요.위의 답변에 감사드리며 문제를 해결했습니다.같은 문제에 직면한 사람이 있는 경우는, 다음의 2개의 방법으로 해결할 수 있습니다.
- 사용할 수 있습니다.
{!! $news->body !!}
- 다음과 같이 기존의 php 오픈(권장하지 않음)을 사용할 수 있습니다.
<?php echo $string ?>
도움이 됐으면 좋겠어요.
콘텐츠를 에 포함{! <content> !}
.
블레이드 템플릿에 HTML 코드를 표시해도 문제가 없습니다.
테스트용으로 루트에 추가할 수 있습니다.php 1개의 루트만:
Route::get('/', function () {
$data = new stdClass();
$data->page_desc
= '<strong>aaa</strong><em>bbb</em>
<p>New paragaph</p><script>alert("Hello");</script>';
return View::make('hello')->with('content', $data);
}
);
및 인hello.blade.php
파일:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
{{ $content->page_desc }}
</body>
</html>
다음 코드의 경우 이미지와 같이 출력됩니다.
그래서 아마page_desc
당신의 경우는 기대했던 것이 아닙니다.단, 예를 들어 '태그'를 사용하면 위험하므로 블레이드템플릿 필터에 태그를 할당하기 전에 경로를 설정해야 합니다.
편집
또, 같은 코드를 데이타베이스에 입력해 테스트했습니다.
Route::get('/', function () {
$data = User::where('id','=',1)->first();
return View::make('hello')->with('content', $data);
}
);
이 경우 출력은 완전히 동일합니다.
편집 2
저도 잘 모르겠어요Pages
고객님의 모델 또는 벤더 모델입니다.예를 들어 내부에는 다음과 같은 접근기가 있습니다.
public function getPageDescAttribute($value)
{
return htmlspecialchars($value);
}
그리고 나서 당신이page_desc
수정되는 속성page_desc
와 함께htmlspecialchars
데이터베이스 내의 데이터가 raw html(스케이프되지 않음)로 되어 있는 것이 확실하다면, 이것을 참조해 주세요.Pages
학급
{{html_entity_decode ($post->content()}}}}: Larabel 4.0에서 문제를 저장하였습니다.이제 내 HTML 콘텐츠는 정상적으로 해석됩니다.
언급URL : https://stackoverflow.com/questions/26023823/laravel-escaping-all-html-in-blade-template
'source' 카테고리의 다른 글
이름에 점(.)이 있는 경우 systemd 오류가 발생합니다.사용자/그룹 이름 또는 숫자 ID가 잘못되었습니다. (0) | 2022.11.15 |
---|---|
그룹화된 Panda 데이터 프레임을 어떻게 루프합니까? (0) | 2022.11.05 |
Mockito는 여러 번 호출된 메서드의 인수를 캡처할 수 있습니까? (0) | 2022.11.05 |
예외를 발생시킨 예외 설명 및 스택 추적을 모두 문자열로 가져옵니다. (0) | 2022.11.05 |
QUERY 패킷을 보내는 중 오류 발생 (0) | 2022.11.05 |