1

我使用 codeigniter 生成 JSON。这是我目前的结构:

模型文章:

<?php
class Articles_model extends CI_Model {

 public function __construct()
     {
  $this->load->database();
 }

 public function get_articles()
{
  $this->db->order_by("HdOrder", "asc");
  $query = $this->db->get('articles');

  return $query->result_array();

}
} 

控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Json extends CI_Controller {


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

 public function index()
{
 $data['articles'] = $this->articles_model->get_articles();

 $this->load->view('json', $data);

}
}

而我的观点:

<?php header('Access-Control-Allow-Origin: *'); ?>

<?php
echo '{"articles":'.json_encode($articles).'}';
?> 

现在我需要将两个 get 参数传递给这个 json,以便我可以在页面中返回它。我已经在php中完成了它并且它有效。下面是没有 CI 的 php 代码:

<?php
$link = mysql_pconnect("localhost", "user", "pass") or die("Could not connect");
mysql_select_db("dbase") or die("Could not select database");

//GET page/count
$count=10;$offset=0;
if (isset($_GET['count'])) $count=$_GET['count']*1;
if (isset($_GET['page']))  $offset=$_GET['page']*$count*1;

$arr = array();

$rs = mysql_query("SELECT * FROM bannersright 
                   ORDER BY HdOrder 
                   LIMIT $offset,$count"); #<-HERE

while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}

echo '{"bannersright":'.json_encode($arr).'}';

?>

现在如何在我的 CodeIgniter 结构中执行此操作?我应该如何从我的视图控制器模型中传递我的 $offset 和 $count 变量以将它们设置为 mysql 查询的限制值?实际上我找到了一个关于如何将变量传递给控制器​​的教程但是我仍然不确定如何将相同的值传递给模型,然后将查询返回到同一个控制器。而且我不太确定这是否是解决问题的正确方法。

我想尽可能简单地解决它。

4

2 回答 2

3

你只需要传递这样的参数............

public function controller_name($param1, $param2) {

      $result = $this->model->get_result($param1, $param2);

      $data = array();
      $data['result'] = $result;
      $this->load->view('view_file_name', $data);
}
于 2012-11-19T16:19:22.200 回答
0

否则你可以使用



    // if your url come like controller/someview/1/2
    $this->uri->segment(3) // will get 1
    $this->uri->segment(4) // will get 2


于 2012-11-25T17:49:28.483 回答