【问题标题】:Kohana and Javascript pathKohana 和 Javascript 路径
【发布时间】:2010-04-18 16:16:46
【问题描述】:

我有以下 Kohana 设置:

我所有的文件都放在'public_html/koh'下 我的js文件放在'public_html/koh/media/js/'下

我使用 html::script 助手来包含那些生成我以下 html 代码的 javascript 文件:

<script type="text/javascript" src="/koh/media/js/site.js"></script>

在我的 js 中,我访问像“json/getsomething”这样的控制器之一(即http://localhost/koh/json/getsomething)。

只要我保持在控制器的顶部,它就可以正常工作: http://localhost/koh/home

当我转到“http://localhost/koh/home/index”时,它当然会呈现相同的页面,但 'json/getsomething' 不再可以从 Javascript 访问。

我该如何解决这个问题?

使用绝对路径包含 Javascript? 在js中创建一个变量,比如var fullPath = 'http://localhost/koh/'?

最好的做法是什么?

莱昂蒂

【问题讨论】:

    标签: javascript kohana


    【解决方案1】:

    我就是这样做的。

    我创建了一个函数 url_base,它对应于 kohana 的 url::base,因此当我从 localhost 移动到生产环境时它会切换。

    查看模板:

    <script type="text/javascript">
        function url_base() { return "<?php echo url::base();?>"; }
    </script>
    

    然后在config.php中:

    if(IN_PRODUCTION) {
        $config['site_domain'] = '/';
    }
    else {
        //if in localhost redirect to localhost/mysite
        //instead of just localhost
        $config['site_domain'] = '/mysite/';
    }
    

    【讨论】:

    • 像魅力一样工作!正是我需要的!
    【解决方案2】:

    (有点晚,但希望仍然有用)这是我用来更好地组织我的 js-serverside vars 的另一种方法。

    我在一些基本变量的开头放置了一些地方 - 例如。在“之前()”函数中:

        $this->template->appconf = array(
            'url_base' => url::base(),
            'l' => substr(I18n::$lang, 0, 2),
        );
    

    现在我可以在需要任何额外变量时添加:

        $this->template->appconf['page_key'] = 'product_page';
    

    最后在模板中保持这种清洁度:

    <script type="text/javascript">
        var appconf = <?php echo json_encode($appconf); ?>;
    </script>
    

    这样使用:

    <script type="text/javascript">
        console.log(appconf.url_base); // "/mysite/"
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 2023-03-07
      • 2017-12-19
      相关资源
      最近更新 更多