CodeIgniter: Passage d'Arguments à partir de l'Affichage de Contrôleur?
EDIT: Avec le code ci-dessous maintenant, je ne suis pas certain sur la façon d'imprimer les signets et les balises correctement
Je suis complètement nouveau à CI et j'ai récemment frappé un barrage routier. Je suis pas sûr de comment je pourrais aller sur le passage d'un argument de fonction à partir du fichier de la vue du contrôleur afin que je puisse l'utiliser sur une fonction?
J'ai une boucle foreach sur la vue passant par l'ensemble des éléments transmis par la fonction get_latest_bookmarks. Cette fonction retourne un ID pour chaque élément et je suis désireux de l'utiliser avec une autre fonction appelée get_bookmark_tags qui va faire de la balise de signet à partir d'une autre table. J'ai fourni le code que j'ai fait jusqu'à présent ci-dessous.
Modèle:
<?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;
}
Contrôleur:
<?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);
}
}
Vue:
<h1>Latest Bookmarks</h1>
<?php foreach ($bookmarks_latest as $bookmark): ?>
<?php print_r($bookmark); ?>
<?php print_r($tags_latest->result()); ?>
<?php endforeach; ?>
Quelqu'un pourrait-il répondre à comment passer l'argument de vue de contrôleur par exemple écris ceci en vue de ne pas travailler
<?=form_open("Welcome/bookmark_tags($id)";?>
si $id argument est un tableau, alors comment nous allons passerOriginalL'auteur ritch | 2011-06-11
Vous devez vous connecter pour publier un commentaire.
Vous devriez le faire dans votre Contrôleur avant de transmettre les données à la Vue.
Essayez quelque chose comme:
Non, mais vous pouvez l'ajouter avec
$data['query'] = $bookmarks;
avant le chargement de la vue, si vous le souhaitez.Comment puis-je imprimer les étiquettes? J'ai ajouté édité le code ci-dessus au plus tard.
J'ai mis à jour mon code. Essayez
print_r($tags);
etprint_r($bookmarks);
maintenant dans votre point de vue. Et vous pouvez les parcourir en boucle.OriginalL'auteur Jonas
Vous n'avez pas.
Le point en utilisant un Framework, c'est à défaut de normes appropriées. CodeIgniter suit un lâche modèle MVC, mais vous ne devriez jamais passent les choses dans la vue pour le contrôleur.
Vous pouvez le faire, mais si vous le faites, vous obtiendrez en un spaghetti mess très bientôt.
Saisir le code sur le contrôleur. Même si cela implique l'exécution de la même boucle à deux reprises. Vous vous remercierez dernier.
ma réponse n'est pas vraiment lié à votre code afin de ne pas d'importance si c'était avant ou après le montage. Il suffit de ne pas passer les choses dans la vue pour le contrôleur. Maintenant, si vous avez des doutes sur d'autres choses, il suffit d'ouvrir une nouvelle question pour ceux.
Je suis en désaccord. Vous pouvez passer des "choses" pour les contrôleurs, comment voulez-vous mettre en œuvre-dire un Login, vous avez sûrement besoin d'obtenir des données POST à partir de la vue, cette réponse est un non-sens.
Je peux comprendre votre point de vue, mais sur une application web, il ne fonctionne pas de cette façon. Le client (l'utilisateur) envoie des données à l'apache (le serveur) qui sera ensuite interprète le code PHP (IC App). Comme l'IC App est chargé de vos données est facilement disponible à partir de la valeur de $_SERVER, $_POST quelle que soit... et la première chose que CI fonctionne est de votre contrôleur, vous faites ce que vous avez à faire et à transmettre les données au spectateur le soin de l'interpréter et de le servir au client comme une belle page web. Spectateur dans ce scénario signifie quelque chose de complètement différent que le navigateur de l'INTERFACE utilisateur.
OriginalL'auteur Frankie