sql >> Database teknologi >  >> RDS >> Mysql

Codeigniter - Adgangsmodeller og database om routing

For at implementere den foreslåede url-struktur skal vi oprette én central dispatcher, der ville

  1. Analyser den anmodede URL.
  2. Ville forespørge en database for at finde og vise kategorien.
  3. Hvis ingen kategori blev fundet, ville den forsøge at finde og vise tekstindlægget.

Det lyder som jobbet for en controller. Men hvordan laver vi en controller, der reagerer på enhver anmodning? Ved hjælp af wildcard-routing!

application/config/routes.php

$route['.*'] = 'default_controller';

Nu vil enhver anmodning, uanset URI, blive dirigeret til Default_controller.php .

Men hvordan skriver vi controller uden at vide, hvilken metode der bliver kaldt? Der er en måde:den indbyggede controller-tjenestemetode _remap .

Fra dokumenterne :

Så jeg har ladet mig fantasere og skabe et koncept Default_controller til dig:

applikation/controllere/Default_controller.php

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

class Default_controller extends CI_Controller {

    // Pseudocode ensues 
    public function _remap()
    {
        // www.mydomain.com/(someTextHere)
        $slug = $this->uri->segment(1);

        $result = $this->load_data($slug);

        echo $result;
    }

    private function load_data($slug)
    {
        // Trying to find a category
        $category = $this->category_model->find($slug);
        if($category !== false)
        {
            // Presumably loads view into buffer
            // and returns it to the calling method
            return $this->load_category($category);
        }

        Trying to find post
        $post = $this->post_model->find($slug);
        if($post !== false)
        {
            return $this->load_post($post);
        }

        // Neither category nor post found
        show_404();
    }

    private function load_category($category)
    {
        // http://www.codeigniter.com/user_guide/general/views.html#returning-views-as-data
        return $this->load->view("category", array("category" => $category), true);
    }
}

Bemærk:testede dette svar på den nyligt downloadede Codeigniter 3.0.3




  1. Sådan opretter og bruger du MySQL-visninger

  2. Indsættelse af data i en MySQL-tabel ved hjælp af VB.NET

  3. COT() Eksempler i SQL Server

  4. Find de maksimale på hinanden følgende år for hvert ID'er i en tabel (Oracle SQL)