2013-07-08 2 views
1

Я новичок в работе с CI, и у меня есть вопрос. Больше похоже на предложение метода проектирования. Я хочу создать базовый шаблон для статических страниц. В основном я хочу загрузить тип документа, голову и тело, но ничего больше. Я хочу, чтобы содержимое загружалось любым классом/функцией, которую я вызываю через URL. Я знаю, что могу сделать это с помощью HTML-шаблона и str_replace(), но есть ли лучший способ или какой-нибудь необычный метод CI, с которым я не знаком?Как загрузить базовый шаблон в воспламенителе кода

Вот что у меня есть, и это работает, но это не самое лучшее.

class Sandbox extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     //echo "hello world?"; 
    } 

    public function load($what){ 
     if ($what == 'something'){ 

      if (!file_exists('application/views/content/'.$what.'.php')){ 
       // Whoops, we don't have a page for that! 
       show_404(); 
      } 
      $data = array(); 
      $this->load->view('templates/header', $data); 
      $this->load->view('content/'.$what, $data); 
      $this->load->view('templates/footer', $data); 
     } 
     else { // Default load 

      $data = array(); 
      $data['message'] = 'Hello World'; 
      //$this->load->view('templates/header', $data); 
      $this->load->view('content/sandbox', $data); 
      //$this->load->view('templates/footer', $data); 
     } 
    } 
} 

Когда я загружаю метод просмотра, он работает, но мне нужно было добавить doctype и перейти к шаблону. Я бы предпочел загрузить их отдельно, поэтому не нужно создавать несколько заголовков. То, что я ищу, - это способ специально загружать части страницы и любые сценарии/css, которые требуются для данной страницы.

Спасибо за любой совет.

ответ

0

Ваших имена функций в контроллере ссылка на URL-адрес, например:

www.ci.com/sandbox/load 

выше URL будет загружать function load() внутри контроллера песочницы.

Чтобы создать шаблон, который вы можете просто создать представление с основами, которые вы хотите, а затем передать содержимое этой точки зрения, например:

function home(){ 
$data['content'] = $this->load->view('home_content',,TRUE); 
this->load->view('template', $data) 
} 

Используя TRUE в 3 аргументе вы возвращаете данные, а чем отображать его.

Затем в файле шаблон просто echo $content; Можно также создавать отдельные головки и другие файлы, чтобы включить в своем шаблоне, используя тот же метод, а именно:

function home(){ 
$data['content'] = $this->load->view('home_content',,TRUE); 
$data['head'] = $this->load->view('head',,TRUE); 
this->load->view('template', $data); 
} 

Вы также можете передать переменные данные для представлений, вы возвращаетесь, т.е.:

$data['content'] = $this->load->view('home_content',,TRUE); 
$data['admin_script'] = $this->load->view('admin_script',,TRUE); 
$data['head'] = $this->load->view('head',$data,TRUE); 

Надеюсь, это поможет! :)

ТАКЖЕ

Если вы хотите загрузить различные страницы, которые вы должны создать отдельные функции для них и создать новое правило маршрутизации: Codeigniter: URI ROUTING

+0

$ данных [ «содержание»] = $ this-> load-> вид ('home_content' ,, TRUE); Возвращает данные, включая теги html? – TheSnooker

+0

Он будет содержать все, что вы положили в этот файл. Подумайте об этом, как будто вы используете 'include'. –

+0

Спасибо, что это удобно, и я могу использовать его, чтобы делать то, что хочу. Я только что протестировал: D – TheSnooker

Смежные вопросы