CodeIgniter - маршрутизация URL для большего количества случаев - PullRequest
0 голосов
/ 09 июня 2018

Вот чего я хочу достичь:

https://www.example.com/properties
https://www.example.com/properties/properties-in-newyork
https://www.example.com/properties/properties-in-DC/property-for-rent
https://www.example.com/properties/all-cities/property-for-rent
https://www.example.com/properties/all-cities/property-for-sale

Все выше для поиска.Теперь я хочу получить страницу с подробной информацией, например:

https://www.example.com/properties/2br-apartment-for-sale-100

Я хочу провести различие между ссылками на страницу поиска и подробностями.Вот что я попробовал:

$route['properties/index']  = 'properties';
$route['properties(/:any)'] = 'properties/property_details$1';

Как определить, какой URL предназначен для функции properties / property_details, а какой URL для функции properties / index? введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Если я прав, согласно вашему объяснению с разграничением маршрутов, проблема, с которой вы сталкиваетесь, заключается в том, что он всегда выполняет маршрут для index, несмотря на то, что ваш URL имеет после properties.

Вы можете попробовать это, изменив порядок маршрутов следующим образом:

$route['properties(/:any)'] = 'properties/property_details/$1';
$route['properties/index']  = 'properties';

Он всегда работает в соответствии с порядком маршрутов, которые вы разместили.Если есть приемлемые параметры, для программы properties/index также является чем-то похожим на properties(/:any).Итак, чтобы различать эти два, мы должны изменить порядок маршрутов следующим образом.

0 голосов
/ 09 июня 2018

Установите route.php следующим образом:

$route['properties/index']  = 'properties';
$route['properties'] = 'properties/property_details';
$route['properties/(:any)'] = 'properties/property_details/$1';

URL-адрес доступа:

это метод прямого индексации

https://www.example.com/properties/index

этонаправит вам метод property_details

https://www.example.com/properties/

Контроллер:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Properties extends CI_Controller {
    public function __construtct()
    {
        parent::__construtct();
        $this->load->helper('url');
    }

    public function index()
    {
        echo 'index';
    }

    public function property_details($component = NULL)
    {
      echo 'property_details';
      echo $component;
    }

}
...