• Composansts perso accès à une table via xpdo impossible#

  • draeya Reply #1, 3 months, 2 weeks ago

    Reply
    Bonjour,

    je souhaites accéder à une table perso par une simple requete comme ci dessous:

    <?php
    $modx=&$modx;
    $modx->addPackage('tecknocracy',$modx->getOption('core_path').'components/','tck_');
    
    $sanitizedRequests = $modx->sanitize($_GET); // recommended, will be applied to all $_GET, $_POST, $_COOKIE
    $_GET = array();
    $_GET = $sanitizedRequests;
    
    $c = $modx->getObject('tckCountry', array('id' => '1'));
    
    return $modx->toJSON($c);
    
    ?>


    mais rien n'y fait je n'y arrive pas
    voici ce que j'obtient dans le log d'erreur:

    [2012-02-10 17:32:02] (ERROR @ /index.php) Could not load class: tckCountry from mysql.tckcountry.
    [2012-02-10 17:32:02] (ERROR @ /index.php) tckCountry::load() is not a valid static method.


    savez vous pourquoi cela me fait cela.
    ayant plusieurs fois créer des composants je n'est jamais eu ce probleme.

    j'utilise MODX Revolution 2.2.0-pl2 (traditional).

    merci pour votre aide


  • romain Reply #2, 3 months, 2 weeks ago

    Reply
    Bonsoir draeya,

    Il semblerait que modx/xpdo n'arrivent pas à accéder à ta classe (qui devrait, je suppose, se trouver dans core/components/ton-composant/model/ton-composant/mysql/tckcountry.class.php).

    Es-tu sûr d'avoir bien renseigné ton schéma de table et correctement généré les classes PHP ?


  • draeya Reply #3, 3 months, 1 week ago

    Reply
    Bonjour,

    voici le modele:

    <?xml version="1.0" encoding="utf-8"?>
    <model package="Tecknocracy" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" tablePrefix="tck_">
    
    <object class="tckCountry" table="country" extends="xPDOSimpleObject">
    	<field key="id" dbtype="int" precision="11" phptype="integer" null="false" default="" index="index" generated="native"/>
    	<field key="class_key" dbtype="varchar" precision="100" phptype="string" null="false" default="tckCountry" />
    	<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" />
    	<field key="iso" dbtype="varchar" precision="5" phptype="string" null="false" />
    </object>
    
    </model>


    la structure de mon composants eest comme ceci:

    -core
    --Tecknocracy
    ---classes
    ---model
    ---- schema.xml
    ---mysql
    ----tckcountry.class.php
    ----tckcountry.map.inc.php
    ---processors
    -- index.php
    -- metadata.mysql.php
    -- tckcountry.class.php

    je ne trouve pas d'erreur à moins que j'ai oublier quelque choses.

    au cas ou cela peux servir.
    le proprietaire est monuserweb:www-data je me demande si cela ne peux pas venir de la ?


  • romain Reply #4, 3 months, 1 week ago

    Reply
    draeya,

    Effectivement, cela pourrait venir d'un problème de droit (empêchant donc modx/xpdo de lire ta classe).
    Aussi, attention aux majuscules dans les noms de dossiers/fichiers. Sous Windows pas de problème, mais les systèmes *NIX ont tendance à ne pas aimer