代码点火器RESTful建模和控制器

时间:2013-07-27 10:25:27

标签: php mysql codeigniter codeigniter-2

我使用非框架开发大约3年了,我听说过PHP框架codeigniter。

我想我错过了使用这个框架的东西,它用于我的移动应用程序的API。

我使用Phil的CI框架RESTful插件从数据库中获取数据时遇到了一些问题。我的浏览器显示错误代码:

 {"status":false,"error":"Unknown method."}

使用我的逻辑:

controller:user.php

  <?php

  require(APPPATH.'libraries/REST_Controller.php');

  class User extends REST_Controller{

  public function user_get()  
  {  
    //IF USER NOT EXIST
    if(!$this->get('id'))
    {
        $this->response(NULL, 400);
    }

    //CHECK TO MODEL FUNCTION
    $user = $this->user_model->get_user($this->get('id'));

    //IF USER EXIST
    if($user)
    {
        $this->response($user, 200); // 200 being the HTTP response code
    }
}  

   public function user_put()  
   {  
    // create a new user and respond with a status/errors  
   }  

   public function user_post()  
   {  
    // update an existing user and respond with a status/errors  
   }  

   public function user_delete()  
   {  
    // delete a user and respond with a status/errors  
   }  
 }
?>

model:user_model.php

 <?php

    class User_model extends CI_Model{

    function __construct() {
        parent::__construct();        
    }

    function get_user($id){
        $query = $this->db->get('mt_user', array('idmt_user'=>$id));
        return $query->row_array();
    }

   }
   ?>

我正在访问具有以下行的数据库:

idmt_user,username,password, emails, createdate

使用mozilla访问:

@http://localhost/<project>/index.php/user/<userid>

错误在哪里?

感谢。

更新 我已经定义了数据库的自动加载。但这个问题仍然存在。有什么帮助吗?感谢

如下面的回答所述,我试图访问url,/ user / get_user /但仍显示相同的结果。在数据库中使用idmt_user有什么问题吗?

4 个答案:

答案 0 :(得分:1)

插入控制器:

function __construct() {
        parent::__construct();
        $this->load->model('user_model');
}

尝试这条路线:

  

http://localhost/ / index.php的/用户/用户/ ID /

答案 1 :(得分:0)

我认为您访问的网址错误。尝试使用网址@http://localhost/<project>/index.php/user/<method_name>/<user_id>访问

答案 2 :(得分:0)

另一种方法是使用URI类。

而不是写下以下内容:

//IF USER NOT EXIST
if(!$this->get('id'))
{
    $this->response(NULL, 400);
}

更改为:

$userid = $this->uri->segment(3);

Would be 3 based off the url being http://localhost/<project>/user/<method_name>/<user_id>

URI类的引用:http://www.codeigniter.com/user_guide/libraries/uri.html

为了使用$ this-&gt; get();必须有一个查询参数来获取。示例:id =

如果要传递查询参数,则可以将这些值存储在数组中,如下所示。

if(!empty($this->get()))
{
    $params[] = $this->get();
}

我希望这会有所帮助。

答案 3 :(得分:-1)

您应该尝试使用__construct()函数将模型文件包含到控制器文件中,如下所示:

function __construct(){
        parent::__construct();
        $this->load->model(array('user_model'));
}