在 codeigniter 中创建自定义 url
create custom url in codeiginter
我想在 url 中显示我的产品名称
现在我得到了带有 id 的产品,并且我的 url 显示是这样的。
www.mydomain.com/home/single/1
我想展示我的产品 url 并点赞产品名称。
www.mydomain.com/home/single/New-Dell-Laptop
这是我的代码,它得到 post 和它的 ID 号。
控制器
//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>
您可以使用路线。
在你的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'];?>">`
您要人性化的字符串会在字段中,对吗?
www.mydomain.com/home/single/New-Dell-Laptop
因此,如果您 select 在数据库中 "New Dell Laptop"
会return1条记录,对吧?如果是这样,你可以在配置中的路由上配置这样的东西。
$route['single/{product}'] = 'productController/{product}';
然后当你加载productController/New-Dell-Laptop
您可以使用$this->uri->segment(3) 获取值,并在数据库中搜索,检索页面,并显示给用户。
你应该使用这样的东西:
www.mydomain.com/home/single/34/New-Dell-Laptop
其中 34 将是页面的 ID,您可以很容易地在数据库中找到它,但是如果您搜索 "New Dell Laptop"
应该不会遇到麻烦
我想在 url 中显示我的产品名称 现在我得到了带有 id 的产品,并且我的 url 显示是这样的。 www.mydomain.com/home/single/1
我想展示我的产品 url 并点赞产品名称。 www.mydomain.com/home/single/New-Dell-Laptop
这是我的代码,它得到 post 和它的 ID 号。
控制器
//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>
您可以使用路线。
在你的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'];?>">`
您要人性化的字符串会在字段中,对吗?
www.mydomain.com/home/single/New-Dell-Laptop
因此,如果您 select 在数据库中 "New Dell Laptop"
会return1条记录,对吧?如果是这样,你可以在配置中的路由上配置这样的东西。
$route['single/{product}'] = 'productController/{product}';
然后当你加载productController/New-Dell-Laptop
您可以使用$this->uri->segment(3) 获取值,并在数据库中搜索,检索页面,并显示给用户。
你应该使用这样的东西:
www.mydomain.com/home/single/34/New-Dell-Laptop
其中 34 将是页面的 ID,您可以很容易地在数据库中找到它,但是如果您搜索 "New Dell Laptop"
应该不会遇到麻烦