web-dev-qa-db-ja.com

CLIおよびWebバックエンドを介してJINPUTをJTableに保存する

Joomla-CLI-Scriptから呼び出されるヘルパーを使用しています。このスクリプトでは、JTable :: storeを使用してデータベースにアイテムを追加します。

保管プロセスで、データベースに保管されていないいくつかのJINPUT値をチェックしています。入力は、fields.xmlで定義したフィールドから取得されます。

これはこれまでのところ私のソースです:

/**
 * 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;       
}

さて、今私は次の問題を得ました:アイテムISフェッチ可能なJTable::store

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

CLI経由で実行した場合-しかし、admin-backend経由でアイテムを保存した場合(CLIを使用せずに手動でアイテムを作成するフォームがあります)、var_dumpにNULLが表示されます。

その問題を解決する可能性はありますか?

事前にLOTに感謝します! :-)

1
MyFault

入力からのデータをTableObjectにバインドするためのソリューションを見つける必要があります。

$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