Codeigniter: как включить файлы javascript
Здравствуйте, я только начал работать с Framework CodeIgniter. Моя текущая структура каталогов
Demo(Project name)
+System
+Application
-Controllers
demo.php
+Model
-Views
view_demo.php
-Js
ajax.js
jquery.js
Расскажите, как включить файлы .js в view_demo.php.
Спасибо
Радж
Ответы
Ответ 1
Вам нужно использовать base_url()
, чтобы включить javascript файл в ваш просмотр.
Итак, в файле view_demo.php:
<script type="text/javascript" src="<?php echo base_url();?>js/jquery.js" ></script>
<script type="text/javascript" src="<?php echo base_url();?>js/ajax.js" ></script>
Вам понадобится загруженный URL-адрес. Чтобы загрузить помощника, вам нужно надеть контроллер demo.php:
$this->load->helper('url');
Вы также можете выполнить автозагрузку в \config\autoload.php в массиве помощников.
Дополнительная информация о base_url(): http://www.codeigniter.com/user_guide/helpers/url_helper.html#base_url
Ответ 2
Вы не будете включать JS файлы в PHP, они будут выводиться как теги script в HTML файле, который вы создаете, как вывод из PHP скрипт.
Насколько мне известно, встроенная функция CodeIginiter не включает этот вывод, как это есть для CSS, используя функцию link_tag()
, предоставляемую CI. Я добавил функцию с именем script_tag()
в файл system/helpers/html_helper.php
из CI. Функция:
if ( ! function_exists('script_tag')) {
function script_tag($src = '', $language = 'javascript', $type = 'text/javascript', $index_page = FALSE)
{
$CI =& get_instance();
$script = '<scr'.'ipt';
if (is_array($src)) {
foreach ($src as $k=>$v) {
if ($k == 'src' AND strpos($v, '://') === FALSE) {
if ($index_page === TRUE) {
$script .= ' src="'.$CI->config->site_url($v).'"';
}
else {
$script .= ' src="'.$CI->config->slash_item('base_url').$v.'"';
}
}
else {
$script .= "$k=\"$v\"";
}
}
$script .= "></scr"."ipt>\n";
}
else {
if ( strpos($src, '://') !== FALSE) {
$script .= ' src="'.$src.'" ';
}
elseif ($index_page === TRUE) {
$script .= ' src="'.$CI->config->site_url($src).'" ';
}
else {
$script .= ' src="'.$CI->config->slash_item('base_url').$src.'" ';
}
$script .= 'language="'.$language.'" type="'.$type.'"';
$script .= ' /></scr'.'ipt>'."\n";
}
return $script;
}
}
Затем в вашем PHP-коде вы можете:
echo script_tag('content/js/jquery-1.4.2.js');
Ответ 3
Я храню свой javascript в подкаталоге папки просмотра, так что путь к файлу относительно вызываемого представления и я опускаю base_url().
Другой метод, который я принял, заключался в том, чтобы определить массив скриптов для включения в мой контроллер, а затем пропустить массив в моем представлении, чтобы включить их. Это позволяет мне включать специальные функции js только тогда, когда это необходимо.
$data['scripts to load'] = array('edit.js','menu.js', 'contact.js');
$this->load->view('myview');
Тогда в представлении
<?php foreach($scripts_to_load as $script):?>
<script type='text/javascript' src = 'my_js/<?php echo $script;?>'>
<?php endforeach;?>
Если у вас есть файлы script, которые загружаются на каждую страницу, вы можете их скопировать в виде нижнего колонтитула, как описано в других ответах.
Ответ 4
Ознакомьтесь с библиотекой шаблонов Code Scanner Scory. Мы используем модифицированную версию этого на работе.
http://philsturgeon.co.uk/code/codeigniter-template
Ответ 5
Просто используйте стандарт:
<script src="/path/to/file.js" type="text/javascript" charset="utf-8"></script>
внутри вашего просмотра! (Конечно, не внутри тегов PHP.) Я не думаю, что HTML-помощник CodeIgniter имеет любые функции, которые вы могли бы использовать в качестве альтернативы написанию HTML самостоятельно.