Page 1 sur 1

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

Message Publié : 01 Août 2013, 23:43
par julien@quai13
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);
}

Re: crud : retour résultat vide = erreur

Message Publié : 03 Août 2013, 15:33
par pa-de-solminihac
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.

Re: crud : retour résultat vide = erreur

Message Publié : 15 Août 2013, 19:33
par julien@quai13
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.

Re: crud : retour résultat vide = erreur

Message Publié : 17 Août 2013, 21:26
par pa-de-solminihac
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 ?

Re: crud : retour résultat vide = erreur

Message Publié : 19 Août 2013, 21:55
par julien@quai13
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).

Re: crud : retour résultat vide = erreur

Message Publié : 22 Août 2013, 21:01
par julien@quai13
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.

Re: crud : retour résultat vide = erreur

Message Publié : 29 Août 2013, 18:27
par pa-de-solminihac
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.

Re: crud : retour résultat vide = erreur

Message Publié : 29 Août 2013, 20:06
par julien@quai13
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.

Re: crud : retour résultat vide = erreur

Message Publié : 29 Août 2013, 23:13
par pa-de-solminihac
C'est bon signe, ça veut dire que tu as saisi la philosophie de ce framework :)