las propiedades del objeto lista delimitada por comas en CodeIgniter con exceso de celo DataMapper Edición
-
10-10-2019 - |
Pregunta
Tengo 2 clases - estudiantes y grupos con la relación de muchos a muchos. En una página estudiante, quiero mostrar todos sus detalles y la lista de todos los grupos al que pertenece, delimitados por comas. Este es mi controlador de estudiantes:
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);
}
}
Puedo obtener detalles de los estudiantes de este tipo en 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; ?>
Entonces, ¿cómo puedo obtener una lista grupos delimitados por comas? He intentado añadir nombres de grupo a una matriz en el controlador y a continuación, sólo <?php echo implode(', ', $groups); ?>
en la vista. Pero de esta manera no se puede crear un link usando los IDs de grupo.
Solución 2
<?php
$first = true;
foreach ($student->groups as $group) :
if (! $first) echo ', ';
echo anchor("/groups/$group->id", $group->name);
$first = false;
endforeach;
?>
Otros consejos
<?php echo anchor("/groups/$group->id", $group->name) ?>
debe convertirse (ver la coma al final de la línea)
<?php echo anchor("/groups/$group->id", $group->name) ?> ,
o usuario Pantalla grupos como una lista:
<?php foreach ($student->groups as $group) : ?>
<?php echo anchor("/groups/$group->id", $group->name) ?>
<?php endforeach; ?>
debe convertirse
<ul>
<?php foreach ($student->groups as $group) : ?>
<li><?php echo anchor("/groups/$group->id", $group->name) ?></li>
<?php endforeach; ?>
</ul>