Codeigniter - сегмент Ури - PullRequest
0 голосов
/ 03 января 2012

Мне нужно создать URL-адрес следующим образом: www.example.com/index.php/scheda/name-surname-id.html

поэтому я создаю контроллер Scheda, это код:

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

class Scheda extends CI_Controller{

    function __construct(){
        parent::__construct();
    }

    function index(){
        $name_scheda = $this->uri->segment(2);
        //i need only the id for the search into db
        $id = substr($name_scheda, strripos($name_scheda,'-')+1, strlen($name_scheda));

        echo "name:".$id;
    }
}

но когда я пишу URL в адресной строке, я получаю 404 error ... может кто-нибудь помочь мне понять, почему?

1 Ответ

5 голосов
/ 03 января 2012

Ваш URL:

www.example.com/index.php/scheda/name-surname-id.html

Должно быть:

www.example.com/index.php/scheda/index/name-surname-id.html

index() - метод по умолчанию, но сегмент index может отсутствовать только в URL, если естьаргументы отсутствуют, в противном случае Codeigniter будет думать, что вы пытаетесь вызвать метод name-surname-id.html().

. Вы можете использовать routes.php или _remap() для очисткиURL и удалите сегмент index.

// routes.php
$routes['scheda/(:any)'] = 'scheda/index/$1';

ИЛИ:

class Scheda extends CI_Controller{

    function _remap($method, $args) {
        $name_scheda = $method;
        $id = substr($name_scheda, strripos($name_scheda,'-')+1, strlen($name_scheda));
        echo "name:".$id;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...