URL-адреса Kohana не работают так, как мне нужно

Итак, у меня есть эта проблема с URL-адресами, которая беспокоила меня довольно долго, например, теперь я создаю iframe с jquery и получаю свой html так, как хочу:

<iframe class="iframe" src="user/upload_image" name="iframeTarget">

И мой текущий URL-адрес: user/messages/kazkoks, но по какой-то причине, когда iframe загружается, я получаю сообщение об ошибке, которое говорит мне, что URL-адрес user/messages/user/upload_image не найден.

Итак, по какой-то причине кохана добавляет мне user/messages, когда мне это не нужно, как я могу это решить?


person Linas    schedule 20.01.2012    source источник


Ответы (1)


Поскольку ваш текущий URL-адрес указывает на ваш каталог user/messages, я думаю, вам следует добавить косую черту / перед вашим URL-адресом.

Таким образом, ваш HTML станет:

<iframe class="iframe" src="/user/upload_image" name="iframeTarget">

РЕДАКТИРОВАТЬ: Другой вариант с использованием помощника url:

<iframe class="iframe" src="<?php echo url::base().'user/upload_image'; ?>" name="iframeTarget">

РЕДАКТИРОВАТЬ 2: Еще один вариант с использованием JS

var url = window.location.pathname.replace(/\/user\/messages\/\w$/g, "/user/upload_image");
document.getElementByName("iframeTarget").setAttribute('src', url);
person SecStone    schedule 20.01.2012
comment
да, ничего не изменилось, и, например, если я использую ‹a href=› в href, я должен использовать url::base(), иначе это создаст ошибки, когда страница усложнится. - person Linas; 20.01.2012
comment
Да, но я не могу его использовать, так как я создаю iframe с js, поэтому я обнаружил, что мне нужно добавить имя папки, содержащей мой веб-сайт, чтобы это было website/user/upload_image, но что, если я перенесу свой веб-сайт на другой host а такой папки нет? - person Linas; 20.01.2012
comment
Хм, может быть, вы могли бы передать url::base() в качестве аргумента вашей JS-функции, которая создает ваш Iframe, и соединить его с user/upload_image в вашей JS-функции. - person SecStone; 20.01.2012
comment
да, я думаю, я мог бы это сделать, но теперь я думаю, может быть, я могу использовать что-то вроде window.location.pathname, мне просто нужно получить имя папки (если оно есть) - person Linas; 20.01.2012
comment
Я думаю, это было бы хорошей идеей. Может быть что-то вроде этого: window.location.pathname.replace(/\/user\/messages\/kozkas$/g, "/user/upload_image") - person SecStone; 20.01.2012
comment
В конце концов я решил обойтись без js и просто пользовательским url::base() спасибо за вашу помощь - person Linas; 20.01.2012
comment
Базовый тег также должен быть опцией - person Darsstar; 21.01.2012