Эти ответы не дают достаточно информации, и принятый ответ просто ужасна ...
Лучший способ справиться с этим было бы настроить маршрутизацию сделать следующее (если вы хотите контролировать страны, которые пользователи могут использовать:
это в вашем файле маршрутов:
foreach(array('country1', 'country2') as $country) { // array with allowed countries
$routes[$country.'/(:any)'] = "country/view/{$country}/$1";
$routes[$country] = "country/view/{$country}";
}
, что это делает принимает ваш массив разрешенных стран, а затем создает правила маршрутизации для каждой страны, так что если пользователь переходит к http://example.com/japan/naruto
, это ro utes на адрес http://example.com/country/view/japan/naruto
. Это предполагает, что «Япония» находится в вашем массиве «разрешенных стран».
Второй просто перенаправляет URL http://example.com/japan
в http://example.com/country/view/japan
в контроллере country.php
:
class Country extends CI_Controller {
function view($country, $username = false) { // $username=false allows you to show just a 'country' page if you want to
if ($username) {
$this->load->view('users_view', array('country' => $country, 'username' => $username));
} else {
$this->load->view('countries_view', array('country' => $country))
}
}
}
, что я сделал здесь позволило вам создать страницу только для страны, которая отображается, которая загружает countries_view.php
из вашей папки просмотра или вы можете просмотреть страницу для пользователя, который загружает страницу users_view.php
.
- это работа, если у меня есть все страны всего мира? У меня есть имена графств, хранящиеся в базе данных, когда я активирую одну страну, она должна быть видимой пользователям. –
Да, вам нужно поместить их в массив и запустить foreach() в этом массиве. –
Таким образом, вы предпочитаете вручную поддерживать массив стран в вашем файле маршрутов, чем иметь базу данных (которая уже содержит ту же информацию), что ваш контроль доступа для вас? Теперь вы не только нарушили принцип DRY (не повторяйте себя) и принципы управления архитектурой MVC, на которой построен CodeIgniter, но вы сделали намного больше работы для себя. – njbair