2012-09-21 6 views
1

저는 ZF를 처음 접했습니다.HtmlEntities and Zend TextArea

젠드 프레임 워크에서 웹 사이트를 구축했습니다. 다 잘 보입니다.

하지만 1 문제를 해결하는 방법을 알 수는 없지만 기사 관리 모듈을 개발할 때 실제로 필요합니다. 나는 다음과 같습니다 ZEND_TextArea이 형태있어

:

$full_text = new Zend_Form_Element_TextArea('full_text'); 
    $full_text->setLabel('Description:') 
      ->setOptions(array('rows' => '28','cols' => '40')) 
      ->setRequired(true) 
      ->addValidator('NotEmpty', true) 
      ->addFilter('HTMLEntities')    
      ->addFilter('StringTrim'); 

그것은 잘 작동, 그것은 필터링 텍스트 영역 정말 필수적인 필터를 htmlentities 있습니다.

웹 사이트에 저장된 데이터를 표시 할 때 나는 html_entity_decode($item['full_text'])을 사용하고 있습니다. 괜찮습니다.

하지만 최대한 빨리 편집을 시도로서, 그것이 내 이미 인코딩 된 텍스트를 인코딩 편집 한 후, 내 텍스트 영역으로 인코딩 된 텍스트를로드 - 전면 페이지에 내가 좋아하는 끔찍한 일 수 : 어쩌면

p;quot;color: #ff0000;">asdasda</ 
span>sdas <strong>sdfsdf& 
lt;/strong>& 

을 누군가가이 문제를 처리하는 방법을 알아낼 수 있습니다. 특히 디코딩 된 데이터를 TextArea의 편집 양식으로로드하여 내 문자열이 두 번 인코딩되지 않도록하고 편집 할 때 인간의 방식으로 표시되고 인코딩 된 코드로 표시되지 않도록 할 수 있습니다.

코드 예제를 제공 할 수 있다면 정말 대단 할 것입니다 !!

감사합니다.

+0

데이터를 표시하기 전에 데이터를 디코딩하는 경우 왜 데이터를 인코딩해야합니까? –

+0

사용자를 위해 웹 사이트에서 디코딩 중입니다. 'cuz 인코딩 된 데이터를 편집하는 동안 디코드하고 싶습니다. 양식에서 처리 한 후에 다시 인코딩됩니다. 인코딩 된 데이터도 편집 할 수 없습니다. – mrGott

+1

textarea 요소에 HtmlEntities 필터를 적용하지 마십시오. 데이터베이스에 삽입하기 전에 모델에서 HtmlEntities를 적용하십시오. 이 필터는 HtmlEntities를 언제든지 (심지어 다른 엔티티) 텍사 영역에있는 모든 항목에 적용합니다. – RockyFord

답변

1

작성 양식에서 HtmlEntities 필터를 편집 양식으로 사용하지 마십시오. 데이터를 업데이트 할 때

$elements[] = $this->createElement('text','name',array(
    'label'  => 'test', 
    'value'  => html_entity_decode($value) 
)); 

당신의 일의 html_entity_decode() 사용자에게 바로 '이름'을 보여주기 위해, 값을 설정합니다 ..

:

$elements[] = $this->createElement('text','name',array(
    'label'  => 'test', 
    'filters' => array('HtmlEntities'), 
)); 

양식 편집 :

양식을 만듭니다 모델에서는 htmlEntities 필터를 다시 사용합니다.

$data['name'] = $HtmlEntities->filter($data['name']);