2015-05-08 3 views
2

Так мои данные сохраняются в MySQL с фактическими апострофов и т.д. Но когда CakePHP выплевывает в представлении, как это: If you're on this pageКак избежать html-сущностей в представлении CakePHP?

Я не хочу, чтобы сделать htmlspecialchars_decode() на каждой строке в моем приложении. Есть ли решение CakePHP для такого рода проблем?

Вот эхо текста:

<?php echo $this->Text->autoLinkUrls(h($item['Item']['post_comment'])); ?>

Вот информационное поле для post_comment: post_comment info

А вот поле формы это представляется как:

echo $this->Form->textarea('post_comment', array('label' => false, 'placeholder' => 'Ask a question or post a link', 'rows' => '3', 'class'=> 'u-full-width')); 

EDIT: Что еще странно - что в других частях приложения апострофы выходят просто отлично.

+0

@sgtBOSE спасибо - как вы думаете, autoLinkUrls это делает? – itamar

ответ

2

autoLinkUrls принимает такие же параметры, как link(). И это могло бы помочь. Попробуйте с -

<?php echo $this->Text->autoLinkUrls(h($item['Item']['post_comment']), array('escape' => false)); ?> 
+0

Ничего себе. Какое красивое решение. Спасибо! – itamar

+0

Добро пожаловать. принимайте ответ, если он работает .. :) –

+0

Это заставило меня подождать, пока я не смог. Вы были слишком быстры. :-) – itamar

3

Я не хочу, чтобы сделать htmlspecialchars_decode() на каждой строке в моем приложении. Есть ли решение CakePHP для такого рода проблем?

Да, вы должны понимать, что все, что проходит через основные хелпер CakePHP является продезинфицировать изнутри перед визуализацией с помощью h() функции CakePHP, которая является функцией удобства для htmlspecialchars(). Помните, что сторонние помощники могут этого не делать! Итак, проверьте их.

Я думаю, что почти все вспомогательные методы имеют возможность отключить вытекание:

$this->Helper->method($foo, ['escape' => false]); 

Убедитесь, что вы случайно не позволяют выдавать malicius строк при отключении его.

Смежные вопросы