views:

593

answers:

2

I'm playing around with CodeIgniter, hoping to convert some of my old, ugly PHP into a more maintainable framework. However, I've come across a rather frustrating roadblock - I can't seem to define functions in my views. Any time I try I get a completely blank page back, and when I look in the debug log the processing seemed to stop after the view was loaded.

Can I define functions within views? If not, why not, and what workarounds would you suggest? (the function has to do with formatting output strings)

A: 

I'm not familiar with CodeIgnitor, but it could be including your templates multiple times. Try wrapping your function in a check:

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

CodeIgnitor is probably swallowing errors, so you could also try flushing buffers immediately before your function:

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

In reality though, you should probably make your string formatting code a bit more general. Your template is not really a good place to start adding functions. You'll begin duplicating code, and it defeats the purpose of having templates at all. I'd suggest experimenting with CodeIgnitor's Helpers and Plugins

Josh
+7  A: 

Define your functions in a helper and load them from the controller. That way you can reuse the functions in other views, as well.

Christian Davén
Worked like a charm. :)
Kyle Cronin