Я новичок в codeigniter, у меня есть сайт с тремя страницами. (Главная о контакте) Я хочу поставить привязку к каждому из них и поймать последний сегмент, используя $ this-> uri-> segment () в функции индекса контроллера. Затем с помощью переключателя я хочу перейти к конкретным страницам.
Это один из моих якорей:
<h3 id="anchor_storefront"><?php echo anchor('jstorecontroll/home', 'Home'); ?></h3>
И это мой код в индексе на контроллере:
switch( $this->uri->segment(2) )
{
case "":
case "home":
$this->load->view('public/home');
break;
}
Может ли эксперт помочь мне? Спасибо
1 ответ
Как насчет того, чтобы просто иметь функцию для каждой страницы? Это соответствует обычному шаблону URI CodeIgniter example.com/class/function/id/
- примерно так:
class Jstorecontroller extends CI_Controller
{
function index()
{
//Do what you want... load the home page?
}
//Load the 'home' page
function home()
{
$this->load->view('public/home');
}
//Load the 'about' page
function about()
{
$this->load->view('public/about');
}
//Load the 'contact' page
function contact()
{
$this->load->view('public/contact');
}
}
Маршрутизацию можно использовать для сопоставления URL-адресов: для сопоставления jstorecontroll < / em> в качестве первого сегмента и чего-либо в качестве второго сегмента функции index
в вашем контроллере jstorecontroll
, вы можете использовать этот маршрут (в application / config / routes.php ):
$route['jstorecontroll/(:any)'] = "jstorecontroll/index/$1";
Вы можете использовать регулярное выражение, чтобы ограничить то, что отображается, например:
$route['jstorecontroll/([a-z]+)'] = "jstorecontroll/index/$1";
Тогда у вас может быть функция в вашем контроллере, которая будет фильтровать и загружать соответствующую страницу. Однако будьте осторожны с пользовательским вводом - не верьте им! Убедитесь, что вы продезинфицировали ввод.
class Jstorecontroll extends CI_Controller
{
function index($page = FALSE) //Default value if a page isn't specified in the URL.
{
if($page === FALSE)
{
//Do what you want if a page isn't specified. (Load the home page?)
}
else
{
switch($page)
{
case "home":
$this->load->view('public/home');
break;
case "about":
$this->load->view('public/about');
break;
case "contact":
$this->load->view('public/contact');
break;
}
}
}
}
Использование вышеуказанного маршрута может привести к нежелательным результатам, если у вас есть другая функция в этом контроллере, которую вы хотите вызывать из URI, они не будут вызываться, а вместо этого будут отображаться как параметр функции index
. Если вы не посмотрите на изменение (или добавление) маршрутов, или вы не можете изучить функции переназначения. Лично я бы просто использовал функцию для каждой страницы!
Похожие вопросы
Новые вопросы
codeigniter
CodeIgniter — это среда разработки приложений — набор инструментов — для людей, которые создают веб-сайты с использованием PHP. Созданный EllisLab и поддерживаемый BCIT, теперь он является проектом CodeIgniter Foundation. Платформа реализует модифицированную версию шаблона проектирования Model-View-Controller. Используйте этот тег для вопросов о классах, методах, функциях, синтаксисе и использовании CodeIgniter. Существует две основные версии: 3.x и 4.x, отвечающие различным системным требованиям.