sql >> Databasteknik >  >> RDS >> Mysql

Codeigniter - Åtkomstmodeller och databas om routing

För att implementera den föreslagna url-strukturen måste vi skapa en central dispatcher som skulle

  1. Analysera den begärda webbadressen.
  2. Skulle fråga en databas för att hitta och visa kategorin.
  3. Om ingen kategori hittades skulle den försöka hitta och visa textinlägget.

Låter som jobbet för en controller. Men hur gör vi en kontrollenhet som svarar på varje begäran? Med hjälp av wildcard routing!

application/config/routes.php

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

Nu kommer varje begäran, oavsett URI, att dirigeras till Default_controller.php .

Men hur skriver vi kontroller utan att veta vilken metod som kommer att kallas? Det finns ett sätt:den inbyggda kontrolltjänstmetoden _remap .

Från dokumenten :

Så jag har låtit mig fantisera och skapa ett koncept Default_controller för dig:

application/controllers/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);
    }
}

Obs:testade det här svaret på den nyligen nedladdade Codeigniter 3.0.3




  1. Exportera dataordbok för min databas med MySQL Workbench CE?

  2. Varför använda en JOIN-klausul kontra ett WHERE-villkor?

  3. Hur man skapar unika begränsningar för flera kolumner i SQL Server - SQL Server / TSQL självstudie del 96

  4. ORA-00903:ogiltigt tabellnamn på PreparedStatement