создать свой URL в codeiginter

я хочу показать название моей продукции в URL
Теперь я получаю свой продукт с идентификатором, и мой URL-адрес, как это.
www.mydomain.com/home/single/1

Я хочу показать свой URL-адрес продукта с названием продукта.
www.mydomain.com/home/single/New-Dell-Laptop

Вот мой код, который получает сообщение с его номером.

контроллер

//get all products
public function index()
{
$data['products'] = $this->front->get_products();
$this->load->view('index',$data);
}

//get single product
public function single($id)
{
$data['product']=$this->front->get_product($id);
$this->load->view('product',$data);
}

модель

//get all products
public function get_products()
{
$this->db->select()
->from('vendor_products')
->where('DESC','date_added');
$data = $this->db->get();
return $data->result_array();
}

//get single product
public function get_product($id)
{
$this->db->select()
->from('vendor_products')
->where('prod_id',$id);
$data = $this->db->get();
return $data->first_row('array');
}

Просмотры

// показать все продукты index.php

<?php foreach($products as $one) : ?>
//create link for single product
<a href="<?=base_url();?>home/single/<?=$one['prod_id'];?>">

<?=$one['product_name'];?>
</a>
<p><?=$one['product_price'];?></p>

// показать один продукт (product.php)

<p><?=$product['product_name'];?></p>
<p><?=$product['product_price'];?></p>
<p><?=$product['product_description'];?></p>

2

Решение

Вы можете использовать маршруты.

В вашем config/routes.php

require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->get('vendor_products');
$result = $query->result();
foreach( $result as $row )
{
$route["home/single/" . $row->product_name] = "home/single/" . $row->prod_id;
}

И тогда, по вашему мнению, изменить

<a href="<?=base_url();?>home/single/<?=$one['prod_id'];?>">`

от

<a href="<?=base_url();?>home/single/<?=$one['product_name'];?>">`
0

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

Строка, которую вы гуманизируете, будет в поле, верно?

www.mydomain.com/home/single/New-Dell-Laptop

Итак, если вы выберете в базе данных «Новый ноутбук Dell»

Вернет 1 запись, верно? Если это так, вы можете настроить что-то подобное на Routes в config.

$route['single/{product}'] = 'productController/{product}';

Потом при загрузке продуктаКонтроллер / Новый-Dell-Ноутбук

Вы можете использовать $ this-> uri-> сегмент (3), чтобы получить значение, выполнить поиск в базе данных, получить страницу и показать пользователю.

Вы должны использовать что-то вроде этого:

www.mydomain.com/home/single/34/New-Dell-Laptop

Где 34 будет идентификатором страницы, и вам будет легко найти его в базе данных, но вы не должны испытывать затруднений при поиске «Новый ноутбук Dell»

1