Mysql
 sql >> база данни >  >> RDS >> Mysql

Codeigniter - Модели за достъп и база данни за маршрутизиране

За да приложим предложената URL структура, трябва да създадем един централен диспечер, който да

  1. Анализирайте искания URL адрес.
  2. Ще направи заявка към база данни, за да намери и покаже категорията.
  3. Ако не е намерена категория, тя ще се опита да намери и покаже текстовата публикация.

Звучи като работа за контролер. Но как да направим контролер, който да отговаря на всяка заявка? С помощта на маршрутизиране с заместващи символи!

application/config/routes.php

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

Сега всяка заявка, независимо от URI, ще бъде насочена към Default_controller.php .

Но как да напишем контролер, без да знаем какъв метод ще бъде извикан? Има начин:вграденият в контролера сервизен метод _remap .

От документите :

Така че си позволих да фантазирам и да създам концепция Default_controller за вас:

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);
    }
}

Забележка:тества този отговор на току-що изтегления Codeigniter 3.0.3




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да избягате от въвеждане, но да запазите неекранирано в базата данни

  2. Как ефективно да използвам MySQLDB SScursor?

  3. INSERT и SELECT в единична заявка MySQL

  4. Мога ли да пренаредя селекциите на SQL след прилагане на ограничението?

  5. Качване на CSV с PHP/MySQL