Включите все функции codeigniter в новую статическую страницу (файл php), которая находится в корневой папке
Я занимаюсь разработкой сайта, на котором много статических страниц. поэтому я создал контроллер только для динамических страниц (это может быть неправильной практикой). Хранение всех других статических файлов в корневой папке. Теперь я хочу использовать функцию base_url() из codeigniter для статических страниц, которая находится в корневой папке. Но я не уверен, что делаю хорошую практику или нет. Итак ** Пожалуйста, дайте мне решение для управления многими статическими страницами в codeigniter. **
2 ответа
Вы можете создать контроллер с именем Static_page, отправлять все ваши запросы на статические страницы этому контроллеру.
Статический контроллер
class Static_Page extends CI_Controller{
function index(){
$page = $this->uri->segment(1,'default_static_page');
if (!file_exists(APPPATH."views/{$page}.php"))
{
show_404();
}
$this->load->view($page);
}
}
сохраните все свои статические страницы как представления с тем же именем, что и uri, на который вы будете звонить, как если бы вы позвонили по адресу http://your-site.com/about-us ваше представление будет about-us.php, http://your-site.com/contact ваш взгляд будет contact.php
Это не так просто, как просто указать путь к файлу, который вам нужен. Если мы используем URL Helper в качестве примера, вы заметите в верхней части файла следующую строку:
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Это означает, что если BASEPATH
не определено, вы не сможете получить доступ к файлу. Предположим, у вас есть статическая страница в корне, называемая my_static_page.php
, Вы могли бы определить BASEPATH
и включите файл, например так:
define('BASEPATH',true);
require_once 'system/helpers/url_helper.php';
Это позволит вам получить доступ к сценарию, но это не обязательно означает, что все функции будут работать. Например, anchor
функция будет работать, но base_url
не будет. Некоторые функции могут иметь определенные зависимости, требующие функциональности от других компонентов CodeIgniter.
Получая доступ к файлам прямо в корне вашего проекта, вы эффективно обходите CodeIgniter. index.php
файл. Этот файл будет гарантировать, что все необходимые пути настроены, базовые классы созданы, глобальные функции доступны и т. Д. Функция загрузки CodeIgniter ($this->load->helper('url');
), который также не будет использоваться в этом сценарии, будет загружать / предоставлять доступ к экземпляру CI среди прочего, что, как вы можете видеть, требуется в base_url
функция:
function base_url($uri = '')
{
$CI =& get_instance();
return $CI->config->base_url($uri);
}
Короче говоря, потребуется много времени и усилий, чтобы гарантировать, что все функции CodeIgniter доступны для других файлов в корне. Он также сводит на нет многие полезные функции, предоставляемые платформой, и рекомендуемый шаблон проектирования MVC. Я бы посоветовал загружать ваши статические страницы в виде представлений, используя контроллер - вы можете найти это руководство из руководства пользователя CodeIgniter особенно полезным.