Маршрутизация всей страницы с одним контроллером с codeigniter - PullRequest
0 голосов
/ 10 октября 2018

Я новичок в области кодирования.

Я хочу создать один контроллер, который будет управлять каждым URL на моем сайте;Я собираюсь объяснить, что я имею в виду:

У меня такая структура папок views:

-front
--parts
    header.php
    footer.php
   index.php
   login.php
   register.php

, поэтому, если на моем сайте example.com я хочу перейти на страницу входа, простоЯ пойду дальше example.com/login.

В папке контроллеров до сих пор у меня был контроллер для каждой страницы (HomeController.php, LoginController.php, RegisterController.php).Теперь я хочу изменить стратегию и иметь один контроллер для управления всеми моими страницами.

После некоторого исследования Google и переполнения стека я нашел эту ветку:

Стратегия для маршрутизациина страницы в codeigniter

Итак, я решил следовать этим советам и собрал контроллер Pages.php:

defined( 'BASEPATH' ) OR exit( 'No direct script access allowed' );

class Pages extends CI_Controller {

    function _remap( $method )
    {
        is_file( APPPATH . 'views/front/' . $method . '.php' ) OR show_404();
        $this->load->view( $method );
    }

}

и в моем route.php:

$route['default_controller'] = 'welcome';
$route['pages'] = "pages/$1";
$route['(:any)'] = "pages/$1";

Но я не смогу заставить его работать.

В нескольких словах я хочу создать один контроллер, который автоматически создает URL, если я создаю новый файл в папке views/front.

Я прочитал документацию по CI и кучу вопросов о StackOverflow, я тестировал разные подсказки и, возможно, где-то ответил, но пока не нашел.

Я вБеда в этом из-за дней, может быть, я упускаю что-то базовое в этой концепции.

Кто-то может помочь мне прояснить этот процесс?

1 Ответ

0 голосов
/ 10 октября 2018

Вы можете сделать следующее:

$route['default_controller'] = 'welcome';

$route['pages']="pages/index";
$route['pages/login']="pages/login";
$route['pages/register']="pages/register";

Ваш контроллер будет выглядеть так:

defined( 'BASEPATH' ) OR exit( 'No direct script access allowed' );

class Pages extends CI_Controller {

function _remap( $method )
{
    is_file( APPPATH . 'views/front/' . $method . '.php' ) OR show_404();
    $this->load->view( $method );
}

  public function index() {
    $this->load->view('front/index', $data);
}
public function login() {

}

public function register() {

}

}

Ваше представление index.php должно выглядеть так:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>XYZ</title>
        <?php $this->load->view('front//header'); ?>
     </head>
     <body>

    <!-- topbar starts -->
    <?php $this->load->view('front/sections/top-nav.php'); ?>
    <!-- topbar ends -->

    <div class="ch-container">
        <div class="row">

            <!-- left menu starts -->
            <?php $this->load->view('front/sections/leftmenu.php'); ?>
            <!-- left menu ends -->


        </div><!--/fluid-row-->

        <!-- Ad ends -->
        <?php $this->load->view('front/sections/footer.php'); ?>
    </div><!--/.fluid-container-->

    <!-- external javascript -->
    <?php $this->load->view('front/sections/footerjs.php'); ?>
</body>

Или вы можете загрузить:

public function index() {
     $this->load->view('front/header');
     $this->load->view('front/index', $data);
     $this->load->view('front/footer')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...