Подтвердить что ты не робот

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.

Спасибо Радж

4b9b3361

Ответ 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 самостоятельно.