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






Я не знаком с 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
Можно определять функции в представлениях - я делал это раньше без проблем. Мне нужна дополнительная информация для диагностики проблемы.