Задать вопрос
@belyaevcyrill

Является ли хорошей практикой использовать во Views фреймворка CodeIgniter base_url()?

Суть такова, что web-приложение, основанное на PHP-фреймворке CodeIgniter, сначала лежало в корне сайта, но потом попросили убрать её в подпапку subfolder. То есть, приложение лежало в /www, а перенести попросили в /www/subfolder.

В конфиге config.php я изменил параметр base_url:
$config['base_url'] = 'http://domain.com/subfolder/';


А также я настроил правильный роутинг в .htaccess.

Проблема такова, что когда я зашёл в web-приложение, набрав адрес domain.com/subfolder/, все ресурсы у Views стали подгружаться с неправильными путями. Эти пути сохранились прежними не поменялись. А также у форм в атрибутах action="" пути остались абсолютными. Типа /login, /logout и так далее.

Я решил проблему тем, что во всех Views все абсолютные пути я заменил функцией base_url().

То бишь, например, подключался CSS-файл вот так:
<link href="/css/main.css" rel="stylesheet">

А поменял на:
<link href="<?= base_url('css/main.css') ?>" rel="stylesheet">


Или например, была форма входа:
<form id="user-login" action="/login" method="post">
...
</form>


А я поменял на:
<form id="user-login" action="<?= base_url('login') ?>" method="post">
...
</form>


Считается ли такая замена во всех Views приемлемой (правильной) практикой? Делают ли так вообще?

Или есть другие способы сделать без замены? Ведь все пути захардкодены в абсолютные..

Заранее спасибо!
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
dmitriylanets
@dmitriylanets
веб-разработчик
да
Ответ написан
Комментировать
customtema
@customtema
arint.ru
Считается ли такая замена во всех Views приемлемой (правильной) практикой? Делают ли так вообще?


Да. Но это муторно.

Или есть другие способы сделать без замены?


Из href="/* и src="/* убрать слеш - чтобы веб-сервер искал файлы в текущей директории.

В редакторе есть функция автозамены по всем файлам в поддиректории?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы