web-dev-qa-db-fra.com

Enregistrez JINPUT sur JTable via CLI ET Web-backend

J'utilise un assistant appelé par un script Joomla-CLI. Dans ce script, j'aimerais ajouter des éléments à ma base de données à l'aide de JTable :: store.

Dans le processus de stockage, je vérifie certaines valeurs JINPUT, qui ne sont pas stockées dans la base de données. Les entrées proviennent de champs que j'ai définis dans mon fields.xml.

Ceci est ma source jusqu'à présent:

/**
 * generateItem function.
 * 
 * @access public
 * @param mixed $jsontable
 * @param mixed $ids
 * @return void
 */
public function generateItem($jsontable, $ids)
{
    $app                        =           JFactory::getApplication();
    $input                      =           $app->input;
    $input->set('creationdate', JFactory::getDate()->toSql());

    // Lets store it!   
    $row                        =           JTable::getInstance('Item','BestiaTable');      
    $row->check();

    $store                      =           $row->store(); 

    if($store == true)                      return $row->id;

    else                                    return false;       
}

Eh bien, maintenant, j’ai le problème suivant: L’élément IS récupérable dans JTable::store avec

$jinput = JFactory::getApplication()->input;
var_dump($jinput->get('creationdate'));

Si je l'exécute via CLI - mais si je sauvegarde l'élément via admin-backend (il existe un formulaire pour créer des éléments de manière manuelle sans CLI), j'obtiens la valeur NULL pour mon var_dump.

Est-il possible de résoudre ce problème?

Merci beaucoup d'avance! :-)

1
MyFault

Vous devez trouver une solution pour lier les données d'entrée à l'objet TableObject, c'est tout.

$dataToStore=array('creationdate'=> $input->get('creationdate'));
$row = JTable::getInstance('Item','BestiaTable'); 
// BIND DATA TO THE TABLE OBJECT!!!
$row->bind($dataToStore);


   $row->check(); // please write an check method which checks the datas before store!
   $store  = $row->store(); 
2
JProof