В Silverstripe 3 это было бы лучше всего достигнуто путем создания DataExtension
class (в отличие от переопределения класса). (Примечание: это было бы возможно в 2.4.x, а также, но код будет совершенно иной.)
Создать новый класс TextFormatter
, который проходит Extension
:
class TextFormatter extends Extension {
public function NL2BR() {
return nl2br($this->owner->value);
}
}
Укажите в конфигурации, что Text
класс должен быть расширен с вашим новым классом. Это можно сделать либо в файле _config.php
, либо (желательно) в файле YAML.
Если вы уже не имеете, создайте новый файл в mysite/_config/extensions.yml
со следующим содержанием (или вы можете добавить это в существующий файл):
Text:
extensions:
['TextFormatter']
Это просто говорит «расширить класс Text
с классом TextFormatter
", который сделает нашу новую функцию NL2BR
доступной на всех объектах Text
.
Теперь в ваших шаблонах вы можете просто позвонить $OfficeAddr.NL2BR
, и выход будет выполнен через вашу функцию перед выходом.
Обратите внимание, что я предположил, что ваша модель использует Text
как тип поля, а не HTMLText
, как предполагал предыдущий ответ. Если вы используете HTMLText
, вы можете просто расширить этот класс, изменив файл extensions.yml
, если это необходимо.
Отлично, это работает для меня. Не уверен, как это работает для отдельного контента и отображения и логических людей, но они никогда не смогут победить ... Спасибо! –
:) Просто добавлена опция, которая придерживается MVC. Еще немного сложнее. –