【问题标题】:How to load CS, JS dynamically in CodeIgniter?如何在 CodeIgniter 中动态加载 CS、JS?
【发布时间】:2016-06-01 20:27:23
【问题描述】:

我有与不同视图相关的不同 CSS 和 JS 文件。如何根据视图有条件地或动态地加载 CSS 和 JS,以便只有各自的 JS 或 CSS 加载到浏览器?

【问题讨论】:

    标签: php codeigniter-3


    【解决方案1】:

    这很简单。只需为您的功能创造条件。然后发送您的 CSS 或 JS 文件位置以查看。

    控制器:

    public function index() {
        // conditional 
        if (your condition) {
            $this->data = array(
                'css' => site_url() . "your css file",
                'js'  => site_url() . "your js file"
            );
        } else {
            $this->data = array(
                'css' => site_url() . "your other css file",
                'js'  => site_url() . "your other js file"
            );
        }
        $this->load->view('page', $this->data);
    }
    

    查看:

    <link rel="stylesheet" type="text/css" href="<?php echo $css; ?>">
    <script src="<?php echo $js; ?>"></script>
    

    【讨论】:

    • 添加答案的基本部分,而不是在此处提供链接
    • 好的。我会在这里分享。等一下。别忘了给我声誉,因为在谷歌中很难搜索到像这样的好网站
    【解决方案2】:

    将css和js文件从控制器添加到页面,并使用数据数组传递给视图。 For 循环数组并从视图中加载 css 和 java 文件。 下面给出示例,

    控制器部分

    $styles[1]['css'] = 'plugins/select2/select2.css';
    $styles[2]['css'] = 'plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css';
    $data['styles']   = $styles;
    
    $scripts[1]['js'] = 'plugins/select2/select2.min.js';
    $scripts[2]['js'] = 'plugins/datatables/media/js/jquery.dataTables.min.js';
    $data['scripts']  = $scripts;
    

    查看部分

    {if isset($styles)}
        {foreach from=$styles item=v}
            <link href="{base_url()}assets/{$v.css}" rel="stylesheet">
        {/foreach}
    {/if}
    
    {if isset($scripts)}
        {foreach from=$scripts item=v}
            <script src="{base_url()}assets/{$v.js}"></script>
        {/foreach}
    {/if}
    

    【讨论】:

    • 我是 CodeIgniter 新手,这(查看部分)误导了我。 CodeIgniter 不使用模板标签。见CodeIgniter Does Not Require a Template Engine。虽然我不确定是否可以手动添加。所以我用了同样的方法,但是用的是普通的 PHP。
    【解决方案3】:
    $add_js = array(
        'filename'  => array(BASEJS.'themejs/bootstrap-fileinput.js'),
        'type'      => 'import',
    );
    
    $footer = array(
        'set_title'     => MAINTITLE,
        'javascript'    => $add_js,
    );
    
    $get_footer = $this->settings->set_footer($footer);
    

    【讨论】:

    • 我很想对此投反对票。它没有解释任何东西。而且它似乎是从实际代码中复制/粘贴的,这使得它更难理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多