2016-10-05 2 views
1

다른 필드들 중에서도 HTMLText 데이터 유형 필드를 보유하고있는 DataObject와 GridField가 있습니다. HTML에서 제거한 GridField에 미리보기를 표시하고 싶습니다.summary_field에서 SilverStripe 사용자에게 익숙한 HTML 값

비 이상적인 솔루션 Content.Summary 사용

private static $summary_fields = array(
    'Title' => 'Title', 
    'Content.Summary' => 'Content' 
); 

좋게 원래 값에서 HTML 스트립. 그러나 줄 바꿈은 제거되어 모든 줄이 공백없이 서로 연결됩니다.

HTML은 제거 할 수 있지만 줄 바꿈은 그대로 두십시오 (HTML
태그 숨기기).

+0

을 수행하면 새 줄 당신의 맥락에서 문자 또는
태그가 있나요? –

답변

3

요약에
태그를 유지하려면 :

private static $summary_fields = array(
    'Title' => 'Title', 
    'ContentSummary' => 'Content' 
); 

private static $casting = array(
    'ContentSummary' => 'HTMLText' 
); 

public function getContentSummary() { 
    $content = $this->dbObject('Content'); 
    $value = str_replace('<br>', '__br__', $content->getValue()); 
    $content->setValue($value); 
    return str_replace('__br__', '<br>', $content->Summary()); 
} 
+0

제 의도는 HTML 태그
을 실제 linebreak로 변환하는 것입니다. 그게 가능하니? – Faloude

+0

그건 그렇고,'$ casting'은 치명적인 오류 (예기치 않은 화살표)를 일으켜 제거했습니다. 코드는 여전히 작동하지만
은 실제 줄 바꿈이어야합니다. – Faloude

+1

당신의 의도가 html 페이지에 요약을 표시하는 것이라면 실제 줄 바꿈은 공백으로 취급 될 것입니다.하지만 여전히 그렇게하고 싶다면''__br __ ''을''\ n "'로 대체하십시오. 그리고 오타가 수정되었습니다 '$ casting' 행에 있습니다. –