[Résolu] CRUD - retour résultat vide = erreur

Questions concernant spécifiquement les modules

[Résolu] CRUD - retour résultat vide = erreur

Message par julien@quai13 » 01 Août 2013, 23:43

Alors là je commence vraiment à découvrir le potentiel de crud (et à redécouvrir comment ça fonctionne).

Bon j'ai un truc tout bête. Je veux récupérer le résultat d'une requête sql qui hérite de crud. Sauf que la requête peut ne pas renvoyer de résultat, et donc là c'est le drame :
Code : Tout sélectionner
Undefined index: values in C:\Program Files (x86)\wamp\www\easyeventmanagement\gestion\app\share\crud\view\crud\index.php:89
Invalid argument supplied for foreach() in C:\Program Files (x86)\wamp\www\easyeventmanagement\gestion\app\share\crud\view\crud\index.php:89


Je trouve étonnant qu'il n'y ait pas de contrôle d'erreur pour ce cas là, donc quelle est l'astuce pour éviter ça et avoir un joli tableau crud tout vide.
Ci dessous, les surcharges de mon model :
Code : Tout sélectionner
public function _init($params = null)
{
        $this->tables = array('eem_events' => '');
        $this->fields = null;
}

public function getList($params = null)
{
        return parent::getList($params);
}
Dernière édition par julien@quai13 le 28 Mai 2014, 08:44, édité 1 fois.
julien@quai13
 
Message(s) : 21
Inscription : 14 Juin 2013, 10:56

Re: crud : retour résultat vide = erreur

Message par pa-de-solminihac » 03 Août 2013, 15:33

Je jette un coup d'oeil plus poussé dès que j'ai un tout petit peu plus de temps, mais pour le moment, le
Code : Tout sélectionner
$this->fields = null
dans la fonction _init() me surprend un peu.
pa-de-solminihac
Administrateur
 
Message(s) : 20
Inscription : 13 Juin 2013, 00:28

Re: crud : retour résultat vide = erreur

Message par julien@quai13 » 15 Août 2013, 19:33

Hum je pense que j'y me prend déjà mal de base de toute façon : j'ai bien défini que mon module héritait de crud et définie une table dans le _init de mon model (comme spécifié dans la doc du module crud).
Mais je ne passe la table à getList à aucun moment, donc c'est là que ça doit pêcher. Tu as un exemple concret de l'utilisation de cette fonction ? NB : je considère que getList est la fonction sensée renvoyer tous les résultats d'une table sql mais peut-être que son utilisation est autre, je ne trouve pas de surchage de cette fonction dans Andco.

Et je n'ai pas trouvé/compris à quoi servait $this->fields, c'est pour ça que j'ai laissé la valeur à null.
julien@quai13
 
Message(s) : 21
Inscription : 14 Juin 2013, 10:56

Re: crud : retour résultat vide = erreur

Message par pa-de-solminihac » 17 Août 2013, 21:26

Pas besoin de la ligne $this->fields dans ta fonction _init(). Si tu ne sais pas quoi en faire, autant ne pas mettre la ligne ;)

Pour en revenir à getList(), le commentaire au dessus de la définition de la fonction dit :
liste des enregistrements dans un tableau associatif (chaque clé du tableau est la clé primaire correspondante au niveau BD)

Il serait intéressant de voir de quelle façon tu utilises cette fonction, si tu as du code à me montrer, hésite pas. Dans AndCo je ne pense pas avoir eu besoin de la surcharger, je l'utilise telle quelle. Lorsque la requête qu'elle génère ne renvoie aucun résultat, getList() renvoie juste un tableau vide.

Si tu vires la ligne sur $this->fields de la fonction _init() et que tu vires la surcharge de getList() tu as quand même une notice ?
pa-de-solminihac
Administrateur
 
Message(s) : 20
Inscription : 13 Juin 2013, 00:28

Re: crud : retour résultat vide = erreur

Message par julien@quai13 » 19 Août 2013, 21:55

En effet pas besoin de la surcharger. Je l'utilise telle quelle après avoir surcharger le module events dans la config :
Code : Tout sélectionner
class siteEventsController extends siteEventsController_Parent
{
protected $events;

public function __construct($request = null, $params = null)
{
    parent::__construct($request, $params);
    $events = $this->_crud;
}

public function indexAction($request, $params = null)
{
    $this->data['titre'] = 'Vos évènements';
    $auth = $this->users->getAuth();
    if ($auth) {
        $params['where'] = '`clementine_users_id` = ' . $auth['id'];
        $this->data['events'] = $this->events->getList($params);
}

}


Je récupère bien le contenu de la requête dans le tableau $data mais j'ai toujours la notice provenant de mon
Code : Tout sélectionner
$this->getParentBlock($data);
(Je suis dans une page index d'une vue de site).
julien@quai13
 
Message(s) : 21
Inscription : 14 Juin 2013, 10:56

Re: crud : retour résultat vide = erreur

Message par julien@quai13 » 22 Août 2013, 21:01

Finalement j'ai résolu mon problème je poste la réponse ici afin que le forum devienne une doc :

Dans le controlleur indexAction simplement rajouter un :
Code : Tout sélectionner
return parent::indexAction($params);


Merci de ne pas rire.
julien@quai13
 
Message(s) : 21
Inscription : 14 Juin 2013, 10:56

Re: crud : retour résultat vide = erreur

Message par pa-de-solminihac » 29 Août 2013, 18:27

Merci d'avoir posté la solution :)

Ça fait une bonne piqûre de rappel : quand on surcharge un modèle, un controleur ou un helper, à moins d'avoir vraiment une bonne raison, il faut toujours renvoyer le résultat de la fonction parente. Ça peut valoir le coup aussi pour les blocs.
pa-de-solminihac
Administrateur
 
Message(s) : 20
Inscription : 13 Juin 2013, 00:28

Re: crud : retour résultat vide = erreur

Message par julien@quai13 » 29 Août 2013, 20:06

Je commence à m'y faire qu'absolument tout est surchargeable avec ce framework. Une fois qu'on a compris ça c'est d'ailleurs un plaisir, je suis en train de coder un site avec tellement peu de lignes écrite de ma main que ça en devient indécent.
julien@quai13
 
Message(s) : 21
Inscription : 14 Juin 2013, 10:56

Re: crud : retour résultat vide = erreur

Message par pa-de-solminihac » 29 Août 2013, 23:13

C'est bon signe, ça veut dire que tu as saisi la philosophie de ce framework :)
pa-de-solminihac
Administrateur
 
Message(s) : 20
Inscription : 13 Juin 2013, 00:28


Retour vers Questions sur les modules

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)