Codeigniter 3 Маршруты и обработка ошибок 404 - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь настроить красивые URL в codeigniter, и это не имеет особого смысла для меня.Я хочу, чтобы мои URL-адреса соответствовали следующей структуре:

example.com / admin / view / form / 123

Я могу успешно просматривать данные при посещенииURL выше.При посещении я вижу те же данные;

example.com / admin / view / 123

Обратите внимание, что третий сегмент /form/ отсутствует, но все равно возвращаетданные.Это почти как игнорирование этого - я думал, что CI должен выдать ошибку 404, или мне нужно проверить это вручную?Если да, то как?

Когда я посещаю этот URL;

example.com / admin / view

Я вижу следующую ошибку;

An uncaught Exception was encountered
Type: ArgumentCountError
Message: Too few arguments to function Admin::view(), 0 passed 

Мой код показан ниже:

Контроллер

defined('BASEPATH') OR exit('No direct script access allowed');
class Admin extends CI_Controller

    {
    public function __construct()
        {
        parent::__construct();
        $this->load->helper('url');
        $this->load->database();
        $this->load->model('Admin_model');
        }

    public function index()
        {
        $this->load->view('template/header');
        $data = array(
            'title' => 'Admin Page'
        );
        $this->load->view('admin/index', $data);
        $this->load->view('template/footer');
        }

    public function view($form_submission_id)
        {
        $this->load->view('template/header');
        $data = array(
            'title' => 'Form View Page',
            'record' => $this->Admin_model->getSubmissionById($form_submission_id)
        );
        $this->load->view('admin/view/index', $data);
        $this->load->view('template/footer');
        }
    }

Модель

class Admin_model extends CI_Model {

    public function getSubmissionById($form_submission_id) {
        $this->db->select('*');
        $this->db->from('submissions');
        $this->db->where('id', $form_submission_id); 
        $query = $this->db->get();
        return $query->row(); 
    }
}

Маршруты // перенаправить любые URL-адреса, содержащие число после / form $ route ['admin / view / form / (: num)'] = "admin / view / $ 1";

Структура папок «Мои представления» выглядит следующим образом:

 - views
 -- admin
     - index.php
     - view
        -- index.php

В идеале я хочу, чтобы мои URL выглядели так и выдавало 404 ошибки там, где их нет.

пример.ru / admin / view / form / 123

example.com / admin / update / form / 123

example.com / admin / delete / form / 123

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете сделать это несколькими способами.

Самый быстрый способ - создать маршруты, подобные этому:

$route['admin/view/form/(:num)']   = "Admin/view/$1"; 

При вводе instancele.com/admin/view/form/9,он будет перенаправлен к администратору контроллера, представлению функции, а «9» будет параметром $ form_submission_id

То же самое для маршрутов ниже.

$route['admin/update/form/(:num)'] = "Admin/update/$1";
$route['admin/delete/form/(:num)'] = "Admin/delete/$1";

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

Это нормально, что вы видите ошибку при вводе example.com/admin/view, потому что функция view принимает 1 параметр $ form_submission_id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...