I am using php in my javascript file and my .htaccess looks like
<FilesMatch "\.css$">
SetHandler application/x-httpd-php
Header set Content-type "text/css"
</FilesMatch>
<FilesMatch "\.js$">
SetHandler application/x-httpd-php
Header set Content-type "application/javascript"
</FilesMatch>
I can now use php from within my javascript files but codeigniter functions do not work.For example
$('#example').dataTable( {
"bProcessing": true,
"sAjaxSource": "<?php $CI = get_instance(); echo base_url(); ?>"
} );
gives the error
<b>Fatal error</b>: Call to undefined function get_instance() in <b>C:\xampp\htdocs\_init\assets\js\custom.js</b> on line <b>88</b><br />
I figured maybe i need to load the codeigniter environment in a way similar to the wordpress require( '../wordpress/wp-load.php' );
Is there a way i can load codeigniter in a similar manner so that codeigniter functions are available to my javascript and css files?.
CI relies on the bootstrap system/core/CodeIgniter.php
to kick off the application..
There isn't a magic file that you can include that will give you access to the functions..
Solution 1: The best solution for your base_url
problem is to add a base tag as described by Phil Sturgeon..
<base href="<?php echo base_url(); ?>">
Solution 2: define a js base_url in a view
<script>
var base_url = "<?php echo base_url(); ?>";
</script>
In your js you would access it like..
$('#example').dataTable( {
"bProcessing": true,
"sAjaxSource": base_url
});
What you are asking for:
If you rely on CI functions in your js and css, then your approach should be revisited, nevertheless, here is a possible solution..
Create a controller application/controllers/js.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class js extends CI_Controller {
public function index()
{
$this->load->view('js');
}
}
Create a view application/views/js.php
$('#example').dataTable( {
"bProcessing": true,
"sAjaxSource": "<?php echo base_url(); ?>"
});