使用DataMapper OverZealous版本在CodeIgniter中用逗号分隔的列表对象属性

时间:2010-11-15 11:13:05

标签: codeigniter many-to-many codeigniter-datamapper

我有2个班级 - 学生和小组有多对多的关系。在学生页面上,我想显示他所有的详细信息,并列出他所属的所有组,用逗号分隔。 这是我的学生管理员:

class Students extends Controller {

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

  function index() {
      $this->get_all_students();
  }

  function get_all_students() {
      $s = new Student();
      $data['students'] = $s->select('id, name, email')->get();

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

  function view($id) {
      $s = new Student();
      $s->get_by_id($id);
      $s->groups->get();

      $data['student'] = $s;

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

我可以在student_view中获取学生的详细信息:

Name: <?php echo $student->name; ?>
E-mail: <?php echo $student->email; ?>
Groups: 
<?php foreach ($student->groups as $group) : ?>
  <?php echo anchor("/groups/$group->id", $group->name) ?>
<?php endforeach; ?>

那么,如何列出用逗号分隔的组?我尝试将组名添加到控制器中的数组中,然后在视图中添加<?php echo implode(', ', $groups); ?>。但是这样我就无法使用组ID建立链接。

2 个答案:

答案 0 :(得分:0)

<?php echo anchor("/groups/$group->id", $group->name) ?> 
应该成为

(参见行尾的逗号)

<?php echo anchor("/groups/$group->id", $group->name) ?> ,

或将用户组显示为列表:

<?php foreach ($student->groups as $group) : ?>
  <?php echo anchor("/groups/$group->id", $group->name) ?>
<?php endforeach; ?>

应该成为

<ul>
<?php foreach ($student->groups as $group) : ?>
  <li><?php echo anchor("/groups/$group->id", $group->name) ?></li>
<?php endforeach; ?>
</ul>

答案 1 :(得分:0)

<?php
  $first = true;
  foreach ($student->groups as $group) :
    if (! $first) echo ', ';
    echo anchor("/groups/$group->id", $group->name);
    $first = false;
  endforeach;
?>