Я занимаюсь разработкой веб-сайта, который имеет много статических страниц. поэтому я создал контроллер только для динамических страниц (это может быть неправильная практика). Сохранение всех других статических файлов в корневой папке. Теперь я хочу использовать функцию base_url() из codeigniter для статических страниц, которые находятся в корневой папке. Но я не уверен, что я занимаюсь хорошей практикой или нет. поэтому ** Пожалуйста, дайте мне решение для управления многими статическими страницами в codeigniter. **Включите все функции codeigniter в новую статическую страницу (php-файл), которая находится в корневой папке
ответ
вы можете создать контроллер с именем 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 ваше мнение будет о-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.
Обращаясь к файлам непосредственно в корневом каталоге вашего проекта, вы фактически обходите файл index.php
CodeIgniter. Этот файл гарантирует, что все необходимые пути будут настроены, будут созданы базовые классы, доступны глобальные функции и т. Д. Функция загрузки CodeIgniter ($this->load->helper('url');
), которая также не будет использоваться в этом сценарии, будет загружать/предоставлять доступ к CI экземпляр среди других вещей, которые вы можете увидеть, что требуется в функции base_url
:
function base_url($uri = '')
{
$CI =& get_instance();
return $CI->config->base_url($uri);
}
Короче говоря, это заняло бы много времени и усилий, чтобы гарантировать, что все функциональные возможности CodeIgniter доступен для других файлов в корневом каталоге. Это также отрицает многие полезные функции, предоставляемые каркасом, и поощрительную модель дизайна MVC. Я бы предложил загружать ваши статические страницы в виде представлений, используя контроллер - вы можете найти this tutorial из руководства пользователя CodeIgniter особенно полезными.
После просмотра вашего редактирования, что вы делаете, это не лучшая практика. Я бы просто сохранил статические страницы как _views_ и загрузил их из контроллера - не нужно помещать их в корневой каталог. – jleft
Я думаю, что могу получить всю функцию, включив файл CI и расширяя его класс .. Я ищу имя этого файла и имя класса. –
@umefarook ваш класс полезен. :) –