#php #codeigniter #codeigniter-3
#php #codeigniter #codeigniter-3
Вопрос:
Я работаю над CMS с CodeIgniter 3.1.8 и Bootstrap 4. Я решил добавить к нему темы. Приложение не является HMVC, только MVC.
Каталог themes находится вне приложения, как видно на изображении ниже:
Внутри темы у меня есть каталог темы (конечно), который содержит «мастер-представление», layout.php
:
Как я использую представления темы
В application/core
я добавил MY_Loader.php
файл со следующим содержимым:
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class MY_Loader extends CI_Loader {
function theme_view($folder, $view, $vars = array(), $return = FALSE) {
$this->_ci_view_paths = array_merge($this->_ci_view_paths, array(FCPATH . $folder . '/' => TRUE));
return $this->_ci_load(array(
'_ci_view' => $view,
'_ci_vars' => $this->_ci_prepare_view_vars($vars),
'_ci_return' => $return
));
}
}
В моем index()
методе контроллера Posts я загружаю представление, передавая ему данные:
public function index() {
//more code here
$data['posts'] = $this->Posts_model->get_posts($config['limit'], $config['offset']);
$this->load->theme_view('/themes/caminar/', 'layout', $data);
}
Проблема
В layout.php
я включил таблицу стилей темы:
<link rel="stylesheet" href="<?php echo site_url('themes/caminar/assets/css/main.css')?>">
Файл main.css
действительно http://example.com/themes/caminar/assets/css/main.css
еще не готов, браузер, вместо загрузки файла CSS, загружает представление 404.
Что я делаю не так?
Комментарии:
1. В
caminar
папке нет каталогаthemes
, судя по вашему скриншоту.2. Что показано в исходном коде страницы, на которой находится эта ссылка?
3. @Dave
<link rel="stylesheet" href="http://ciblob.com/index.php/themes/caminar/assets/css/main.css">
4. Обратите
index.php
внимание на этот URL-адрес? Это, по-видимому, является источником вашей проблемы. Вероятно, вам не нужен / не нуженsite_url
вызов in вашего href. Вполне вероятно, что простое эхо/themes/caminar/assets/css/main.css
будет работать так, как вы хотите.5. @Dave Я заметил это, и я не думаю, что это источник вашей проблемы, по причинам, которые я упомянул.
Ответ №1:
Вы используете site_url вместо base_url при загрузке своих ресурсов.
URL-адрес сайта предназначен для ссылок в вашем приложении, обычно это функции контроллера.
base_url используется для ресурсов.
Поэтому измените свои пути на:
<link rel="stylesheet" href="<?php echo base_url('themes/caminar/assets/css/main.css')?>">
Если это не решает проблему, возможно, на вашем сервере что-то мешает этому. В этом случае покажите нам ваш .htaccess, если вы используете apache, или вашу конфигурацию для указанного виртуального хоста, если вы используете nginx.
Если это apache, вы можете попробовать добавить это в свой .htaccess.
RewriteCond $1 !^(index.php|assets|themes|images|js|css|uploads|favicon.png)
Комментарии:
1. Это прогресс, потому что он получил ‘index.php ‘из URL-адреса, но он по-прежнему не загружает таблицу стилей.
2. затем покажите нам конфигурацию вашего сервера на этом хосте. Потому что теперь это не проблема codeigniter.
3. Это сервер XAMPP.
4. Я добавил
themes
в .htaccess, и это работает :RewriteCond $1 !^(index.php|assets|themes|images|js|css|uploads|favicon.png)
. Спасибо за помощь.