Как определить используемое правило маршрутизации, направленное на мой контроллер Codeigniter?

В моем приложении
У меня есть 3 правила маршрутизации (определенные в routes.php файл), который направлен на один контроллер

$route[urlencode('news')]       = "news/show-news";
$route[urlencode('letters')]    = "news/show-news";
$route[urlencode('papers')]     = "news/show-news";

так
если какой-либо пользователь перейдет на любой из этих URL
http://example.com/news/
http://example.com/letters/
http://example.com/papers/

Целевой контроллер будет news/show-news

Моя потребность
Как определить используемое правило маршрутизации, направленное на мой контроллер Codeigniter?

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class News extends CI_Controller {
public function show-news(){
// came from [news OR letters OR papers]  ??

}
}

2

Решение

Вы можете сделать это с помощью чего-то подобного, но есть разные методы для достижения того, чего вы хотите. В основном, чтобы дать вам толчок, проверьте код ниже:

В вашем контроллере вы поместите этот код:

class News extends CI_Controller {
public function show_news( $method = '' )
{

switch ( $method )
{
// If news requested
case 'news':
// your code here
echo 'news requested';
break;

// If letters requested
case 'letters':
// your code here
echo 'letters requested';
break;

// If papers requested
case 'papers':
// your code here
echo 'papers requested';
break;

// Default landing if nothing provided
default:
// your code here
echo 'select one of the show method';

}

}
}

И в твоем routes.phpнабираешь это:

$route['news'] = "news/show_news/news";
$route['letters'] = "news/show_news/letters";
$route['papers'] = "news/show_news/papers";

Таким образом, у вас есть 4-й вариант, что, если ничего не предоставлено, вы можете перенаправить на некоторую страницу, где пользователи могут выбрать один из доступных типов новостей в default раздел.

1

Другие решения

Первое спасибо @aspirinemaga
Его ответ правильный
Но если мы хотим сделать это без использования параметрической функции контроллера
Мы можем это сделать

public function show-news(){

// came from [news OR letters OR papers]  ??
$requested_URI_segment = $this->uri->segment(1);
$requested_URI_segment = urldecode($requested_URI_segment);

switch ( $requested_URI_segment ){
// If news requested
case 'news':
// your code here
echo 'news requested'. '</br>';
break;

// If letters requested
case 'letters':
// your code here
echo 'letters requested'. '</br>';
break;

// If papers requested
case 'papers':
// your code here
echo 'papers requested'. '</br>';
break;

// Default landing if nothing provided
default:
// your code here
echo 'select one of the show method'. '</br>';

}
1

Попробуй это :

$route['news'] = "controller/method_name";
$route['letter'] = "controller/method_name";
$route['papers'] = "controller/method_name";

У меня есть проект, который я сделал с помощью CI раньше, и у меня есть раздел, который предназначен для студента & нет на месте. Так что в моем маршруте я установил так:

$route['student/page'] = "student/index";
$route['student/page/(:num)'] = "student/index/$1";
$route['absent/page'] = "absent/index";
$route['absent/page/(:num)'] = "absent/index/$1";

И с некоторыми настройками на htaccess.

-2
По вопросам рекламы [email protected]