CodeIgniter не любит методы в представлениях?

Играю с CodeIgniter; в надежде преобразовать часть моего старого уродливого PHP в более удобный фреймворк. Однако я столкнулся с довольно неприятным препятствием - я не могу определять методы в своих представлениях. Каждый раз, когда я пытаюсь, я получаю совершенно пустую страницу, и когда я смотрю в журнал отладки, обработка, кажется, останавливается после загрузки представления. Могу ли я определять методы в представлениях? Если нет, то почему и какие обходные пути вы бы предложили?

Примечание: метод связан с форматированием строк вывода.

Можно определять функции в представлениях - я делал это раньше без проблем. Мне нужна дополнительная информация для диагностики проблемы.

Steven Oxley 08.12.2008 15:10

Возможно. Я знаю, это то, что я делаю ради своих взглядов.

Teej 20.03.2009 09:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
2 162
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я не знаком с CodeIgnitor, но он мог включать ваши шаблоны несколько раз. Попробуйте обернуть свою функцию чеком:

if (!function_exists('myfunc'))
{
    function myfunc() {}
}

CodeIgnitor, вероятно, проглатывает ошибки, поэтому вы также можете попробовать очистить буферы непосредственно перед своей функцией:

while(ob_end_flush()){}
error_reporting(E_ALL);
ini_set('display_errors', 1);

На самом деле вам, вероятно, следует сделать код форматирования строк более общим. Ваш шаблон - не лучшее место для начала добавления функций. Вы начнете дублировать код, а это вообще лишает смысла наличие шаблонов. Предлагаю поэкспериментировать с CodeIgnitor's Помощники и Плагины

Ответ принят как подходящий

Определите свои функции в помощник и загрузите их из контроллера. Таким образом, вы также можете повторно использовать функции в других представлениях.

Представления не предназначены для вызова действий контроллера. Измените свою логику, вызовите эту функцию в контроллере и установите для нее переменную, которую вы отправили в представление. Затем вы можете использовать оператор if для проверки этой переменной в шаблоне представления.

Если это не сработает, возможно, вам нужен помощник: http://codeigniter.com/user_guide/general/helpers.html

Другие вопросы по теме