http://localhost/project/main/getproduct/24
在我的主控制器的getproduct()方法中,我可以将变量发送24,没有问题。
但是我现在想通过URL传递两个变量,但我不知道如何做到这一点或者CodeIgniter是否允许我这样做。有人可以告诉我如何在CI中传递2个变量,以及可以检索它们的方法我尝试过:
http://localhost/project/main/getproduct/24/45
然后在我的getproduct方法中:
public function getproduct($productID, $factoryID){
.....
}
但是我发现我的方法可以获得第一个变量而没有问题,但不是第二个变量。任何人都可以指出我正确的方向。非常感谢提前。
答案 0 :(得分:24)
接受的答案适用于此特定问题,但如果网址发生变化则无效。要访问控制器中的多个变量,只需添加到函数定义中。
http://localhost/project/main/getproduct/24/45
class Main extends CI_Controller {
public function getproduct($productID = 0, $factoryID = 0)
{
// ProductID will be 25
// Factory ID will be 45
}
}
答案 1 :(得分:21)
您可以使用uri
检索网址中的值
这是一个例子
public function getproduct()
{
$productID = $this->uri->segment(3);
$factoryID = $this->uri->segment(4);
// ProductID will be 25
// Factory ID will be 45
}
然后您可以随意使用这些值
答案 2 :(得分:9)
您必须在config / routes.php中设置路由以解析项目。
看起来像:
$route["getproduct/(:any)/(:num)"]="main/changequestion/$1/$2"
然后我希望它会奏效。
答案 3 :(得分:3)
如果其他人使用CI3遇到此问题。在CodeIgniter 3中,不需要特殊的路由。现在不确定它是否也适用于CI2。
您可以使用以下参数访问这些URI段:
public function getproduct($productID, $factoryID){
.....
}
答案 4 :(得分:0)
http://example.com/project/main/getproduct/24/45
要获得'45',您可以这样做:
$id1 = $this->uri->segment(3);
echo $id1; //output is 45
答案 5 :(得分:0)
将URI细分传递给您的方法
如果您的URI包含两个以上的段,它们将作为参数传递给您的方法。
例如,假设你有一个像这样的URI:
example.com/index.php/products/shoes/sandals/123
您的方法将传递URI段3和4(“凉鞋”和“123”):
<?php
class Products extends CI_Controller {
public function shoes($sandals, $id)
{
echo $sandals;
echo $id;
}
}
重要!!! 强> 如果您使用URI路由功能,则传递给您的方法的段将是重新路由的段。
请参阅此链接作为Codeigniter官方指南。 Codeigniter Official Guide.
答案 6 :(得分:0)
此问题的解决方法是使用 _remap()函数。您只需要在index()函数
之前添加此函数function _remap($method, $args)
{
if (method_exists($this, $method))
{
$this->$method($args);
}
else
{
$this->Index($method, $args);
}
}
我希望这能解决你的问题。
答案 7 :(得分:0)
您可以使用uri
来获取网址中的值
http://localhost/project/main/get_product/12/23
这是一个例子
public function get_product(){
$product_id = $this->uri->segment(3); // Product id will be 12
$factory_id = $this->uri->segment(4); // Factory id will be 23
}
然后,您可以随意使用这些值