Kohana и Javascript путь - PullRequest
       13

Kohana и Javascript путь

2 голосов
/ 18 апреля 2010

У меня есть следующие настройки Kohana:

Все мои файлы помещены в 'public_html / koh' Мои js-файлы находятся в папке public_html / koh / media / js /

Я использую помощник html :: script, чтобы включить те файлы javascript, которые генерируют мне следующий HTML-код:

<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/'?

Как лучше всего это делать?

Леонтий

Ответы [ 2 ]

4 голосов
/ 18 апреля 2010

Вот как я это сделал.

Я сделал функцию url_base, которая соответствовала бы url::base Коханы, и поэтому она переключалась, когда я переходил с локального хоста на работу.

Просмотр шаблона:

<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 голосов
/ 23 августа 2011

(Немного поздно, но надежда все еще полезна) Вот еще один способ, которым я использую, чтобы лучше организовать мои переменные js-serveride.

Я положил где-то в начале некоторые основные переменные - например. в функции before ():

    $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>
...