2016-05-28 2 views
1

Я создал контроллер с именем index, и я хочу разработать динамические контроллеры, например, это большое препятствие для создания имени страницы снова и снова, поэтому я решил создать, но у меня есть некоторое замешательство, хотя я будет разрабатывать страницы, поскольку я поместил опцию в панель администратора, так как пользователи могут создавать страницы, но большая проблема в том, что я не могу извлечь эти страницы.динамическая страница не работает

Контроллер

public function index($page = 7) { 
     //$page = 7 where 7 is the default page set for home 
     $page_data   = $this->get_data->AllData('pages', $page); 
     $data['title'] = $page_data->row()->pagetitle; 
     $class    = explode("/", $page_data->row()->template); 
     $data['body_class'] = $class[1]; 

     $this->load->view('includes/header.php', $data); 

     if($class[1] == 'home') { 
      $this->load->view('templates/slider'); 
     } 

     $this->load->view('templates/navigation.php'); 

     $page_content = $page_data->row()->template; 
     $this->load->view($page_content, $data); 
     $this->load->view('includes/footer.php'); 
    } 

    public function page($pagename) { 
     $page_data   = $this->get_data->AllData('pages', $pagename); 
     $data['title']  = $page_data->row()->pagetitle; 
     $class    = explode("/", $page_data->row()->template); 
     $data['body_class'] = $class[1]; 

     $this->load->view('includes/header.php', $data); 

     if($class[1] == 'home') { 
      $this->load->view('templates/slider'); 
     } 

     $this->load->view('templates/navigation.php'); 

     if($class[1] == 'home') { 
      $data['slider'] = 'templates/slider'; 
     } 

     $data['content'] = $page_data->row()->template; 
     $this->load->view('index', $data); 
     $this->load->view('templates/footer-form.php'); 
     $this->load->view('includes/footer.php'); 
    } 

Модель

public function AllData($table, $pageid) { 
    $query_data = $this->db->get_where($table, array('pageid' => $pageid)); 
    return $query_data; 
} 

Моя страница навигации

<?php 
     $sql_nav = $this->db->get("menu_navigation"); 
     foreach($sql_nav->result() as $nav) { 
         echo "<li><a href='".base_url()."home/page/".$nav->menu_name."'>".$nav->$menu_name."</a></li>"; 
         //output will be http://localhost:90/kwikrepair/home/page/(menu name which is the page name exist in the database) 
        } 
       ?> 

Теперь я пытаюсь отправить вызов на страницах запрашиваемых данных, поступающих из страниц так что данные страницы будут вызываться, когда пользователи нажимают на навигацию и id страницы, которую я хочу передать i n как параметр для указательного контроллера, как он будет передан?

+0

Вы хотите разработать динамические страницы? ты уверен? ОК, вы выглядите искренне, так что здесь вы идете: http://www.codeigniter.com/user_guide/tutorial/index.html – cartalot

+0

:) Да, я пытаюсь разработать свои собственные cms, где мы можем разрабатывать такие страницы, как мы делаем в wordpress –

+0

can скажите, пожалуйста, какой у вас URL ссылки на странице навигации – Vinie

ответ

1

Неправильный способ разработки динамических страниц с использованием Codeigniter. Codeigniter - это структура MVC. Если вы следуете правильному разделению Model-View-Controller, очень легко разрабатывать динамические веб-страницы с помощью codeigniter.

Руководство пользователя Codeigniter очень легко отслеживается и имеет хорошие примеры. Попробуйте выполнить некоторые из приведенных уроков.

В кодеигниторе представления загружаются в том порядке, в котором они отображаются в контроллере. как:

$this->load->view('header'); 
$this->load->view('body'); 
$this->load->view('footer'); 

Так что, если вы хотите, чтобы дополнительно загрузить сегмент страницы, делать в контроллере:

if($class[1] == 'home') { 
    $this->load->view('templates/slider'); 
} 

Вы не пропустите вид внутри переменной. Его для передачи данных, которые вы получаете из модели базы данных. Чтобы передавать любые данные в целях, сделайте следующее:

$data['title'] = "some title" //any data or variable 

Затем вы можете передать данные в связанном с точкой зрения, как:

$this->load->view('my_view',$data); 

и вы сможете просмотреть название в качестве переменных $ заголовка на мой взгляд.

Аналогично можно сохранить шаблон навигации в папке просмотров/шаблоны и загрузить его как:

$this->load->view('templates/navigation'); 

Вы не делаете:

<?php include('templates/navigation.php'); ?> 

как с обычными страницами PHP. Codeigniter - это веб-среда MVC. Соблюдайте надлежащие руководящие принципы MVC, как описано в отличной документации для руководства пользователя.

По умолчанию формат CodeIgniter URL-адресов, как:

<installation-folder>/index.php/<controller>/<function> 

Если у меня есть контроллер с именем Добро пожаловать.PHP как:

class Welcome extends CI_Controller { 

    /** 
    * Index Page for this controller. 
    * 
    * Maps to the following URL 
    *  http://example.com/index.php/welcome 
    * - or - 
    *  http://example.com/index.php/welcome/index 
    * - or - 
    * Since this controller is set as the default controller in 
    * config/routes.php, it's displayed at http://example.com/ 
    * 
    * So any other public methods not prefixed with an underscore will 
    * map to /index.php/welcome/<method_name> 
    * @see https://codeigniter.com/user_guide/general/urls.html 
    */ 
    public function index() 
    { 
     $this->load->view('welcome_message'); 
    } 

    public function display($Page = 7){ 
     echo $Page; 
    } 
} 

я могу перейти на страницу:

http://127.0.0.1/CI/index.php/welcome/display 

и я буду показан 7, так как это значение по умолчанию присваивается переменным $ Page, если мы не передаем это ничего ,

Если мы идем:

http://127.0.0.1/CI/index.php/welcome/display/2 

$ переменная страница будет получить присваивается значение 2, и он будет отображаться 2.

Здесь приведены комментарии взяты из контроллера по умолчанию, который поставляется с установкой CodeIgniter:

/** 
* Index Page for this controller. 
* 
* Maps to the following URL 
*  http://example.com/index.php/welcome 
* - or - 
*  http://example.com/index.php/welcome/index 
* - or - 
* Since this controller is set as the default controller in 
* config/routes.php, it's displayed at http://example.com/ 
* 
* So any other public methods not prefixed with an underscore will 
* map to /index.php/welcome/<method_name> 
* @see https://codeigniter.com/user_guide/general/urls.html 
*/ 
+0

спасибо, что я ссылался на учебник, но нет ссылки на url, как создание навигации, допустим, что я передал параметр в качестве индекса ($ page = 'home') теперь, как я поместил бы ссылку, как пользователь нажимает на странице о том, как я могу передать ее в навигации? а также, если имя страницы находится в базе данных, так как я могу передать ее моему контроллеру в качестве параметра? –

+0

, пожалуйста, проверьте обновленный код в моем вопросе, где я передаю идентификатор страницы в качестве параметра, и этот идентификатор страницы вызывается навигацией –

+0

, пожалуйста, проверьте обновленный ответ – codefire

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