В Silverstripe 3 этого лучше всего достичь, создав DataExtension
класс (в отличие от переопределения класса).(Примечание: это было бы возможно и в 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
.