2013-05-11 4 views
0

Я занимаюсь разработкой веб-сайта, который имеет много статических страниц. поэтому я создал контроллер только для динамических страниц (это может быть неправильная практика). Сохранение всех других статических файлов в корневой папке. Теперь я хочу использовать функцию base_url() из codeigniter для статических страниц, которые находятся в корневой папке. Но я не уверен, что я занимаюсь хорошей практикой или нет. поэтому ** Пожалуйста, дайте мне решение для управления многими статическими страницами в codeigniter. **Включите все функции codeigniter в новую статическую страницу (php-файл), которая находится в корневой папке

ответ

1

вы можете создать контроллер с именем 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

+0

Я думаю, что могу получить всю функцию, включив файл CI и расширяя его класс .. Я ищу имя этого файла и имя класса. –

+0

@umefarook ваш класс полезен. :) –

0

Это не так просто, как просто указать путь к вспомогательной/библиотеке, которую вы хотите. Если мы будем использовать 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 особенно полезными.

+0

После просмотра вашего редактирования, что вы делаете, это не лучшая практика. Я бы просто сохранил статические страницы как _views_ и загрузил их из контроллера - не нужно помещать их в корневой каталог. – jleft