【发布时间】:2011-09-12 21:20:42
【问题描述】:
编辑:现在使用下面的代码,我不确定如何正确打印出书签和标签
我对 CI 完全陌生,最近遇到了障碍。我非常不确定如何将视图文件中的函数参数传递给控制器,以便在函数上使用它?
我在视图上有一个 foreach 循环,遍历函数 get_latest_bookmarks 传递的所有项目。该函数为每个项目返回一个 ID,我想将它与另一个名为 get_bookmark_tags 的函数一起使用,该函数将从另一个表中获取书签的标签。我在下面提供了到目前为止我所做的代码。
型号:
<?php
class Bookmark_model extends CI_Model {
function __construct()
{
parent::__construct();
}
function get_latest_bookmarks($limit)
{
// Load Database
$this->load->database();
// Query Database
$query = $this->db->get('Bookmark', $limit);
// Return Result
return $query;
}
function get_bookmark_tags($id)
{
// Load Database
$this->load->database();
$query = $this->db->query('SELECT Tag.Title
FROM `Tag`
INNER JOIN BookmarkTag
WHERE BookmarkTag.BookmarkID = "'.$id.'" AND Tag.TagID = BookmarkTag.TagID');
return $query;
}
控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
// Load URL Helper
$this->load->helper('url');
// Load User Library
$this->load->library('ion_auth');
// Is User Logged In
if ($this->ion_auth->logged_in())
{
$data['user'] = $this->ion_auth->get_user_array();
}
else
{
redirect('auth/login');
}
// Load Bookmark Model
$this->load->model('Bookmark_model');
// Create Arrays
$bookmarks = array();
$tags = array();
// Query Database
$query = $this->Bookmark_model->get_latest_bookmarks(4);
//
foreach ($query->result() as $row) {
array_push($tags, $this->Bookmark_model->get_bookmark_tags($row->BookmarkID));
array_push($bookmarks, $row);
}
$data['tags_latest'] = $tags;
$data['bookmarks_latest'] = $bookmarks;
$this->load->view('welcome_message', $data);
}
}
查看:
<h1>Latest Bookmarks</h1>
<?php foreach ($bookmarks_latest as $bookmark): ?>
<?php print_r($bookmark); ?>
<?php print_r($tags_latest->result()); ?>
<?php endforeach; ?>
【问题讨论】:
-
可能有办法做到这一点,但数据应该从控制器流向视图,而不是相反。
-
谁能回答如何将参数从视图传递到控制器,例如在视图中写这个不起作用
<?=form_open("Welcome/bookmark_tags($id)";?>如果$id参数是一个数组,那么我们将如何传递
标签: php codeigniter view controller argument-passing