2011-10-06 6 views
0

私は運がない数日間調査した問題に悩まされています。ロケーションデータをプログラムで設定する

$edit = array(); 
$edit['uid'] = $user->id; 
$edit['name'] = $user->name; 
$edit['status'] = 1; 
$edit['taxonomy'] = array($term_id); 
$edit['title'] = $Title; 
$edit['body'] = $body; 

など...その後

と一緒に保存:すべてが完璧に動作

node_invoke_nodeapi($edit, $nType); 
node_validate($edit); 
if ($errors = form_get_errors()) { 
     print_r($errors); 
} 

$node = node_submit($edit); 
node_save($node); 

この

は、私は、フォーム供給されたデータからノードを追加するカスタムモジュールのコードを持っています。しかし、私は提供された(墨塗りされた)zipフィールドに基づいて各ノードに位置データを追加しようとしています。

gmapモジュールとlocationモジュールがインストールされ、動作しています。 Drupalコンテンツエディタを使用してzipを直接追加すると、すべて機能します。ビューもgmap。だから私はバージョンと改造がすべて正しいことを知っている。で、国要素なし

$location['country'] = "US"; 
$location['postal_code'] = $zip; 
$locationID = location_save($location); 

$location = array(
'country' => 'US', 
'postal_code' => $zip, 
); 
$locationID = location_save($location); 

と、この:

私はこれを使用しました。 そしてノードデータINITセクション(上記)でこの:

$edit->locations[0]['lid'] = $locationID; 

又は

if($locationID) $edit['field_location'][0]['lid'] = $locationID; 

又は

if($locationID) $edit['location'][0]['lid'] = $locationID; 

しかし、これのどれも動作しません。送信は実際にはOKですが、場所データは保存されません。そして、どんなエラーも投げられません。

これについてのお手伝いがあれば幸いです。

答えて

2

Iは、最初のノードを作成した後でノードに位置データを追加することによって、(場合に誰もが、この際に同じ問題とつまずきを有している)、これは仕事になりました。私は

$locations = array(); 
$locations[0]['postal_code'] = $zip; 

$criteria = array(); 
$criteria['nid'] = $node->nid; 
$criteria['vid'] = $node->vid; 
$criteria['genid'] = 'NAME OF NODE TYPE HERE'; 

location_save_locations($locations, $criteria); 

location_save_locationsはlocation_saveではなく、正しい方法です。

0

あなたのアプローチに続いて、4行目では、より広いlocation_save_locationsによって公開されたとして、あなたが場所を更新することができますが:

location_save($locations[$key], TRUE, $criteria); 

いくつかの注意事項:

  • は、保存した場所の蓋を返すlocation_save場所が空の場合はFALSEを返します。
  • 新しいエンティティの場所(つまり、node_loadデータがキャッシュされている可能性があります)の最新表示については、キャッシュを消去するか、データベース(mysql> SELECT * FROM location ORDER BY lid DESC limit 6)に問い合わせます。

    // A) give to the $node field an updated location 
        $node->field_location['und'][0] = $location; 
        // B) Save node with updated location 
        node_save ($node);  
    
    :あなたは場所フィールドを持つエンティティを処理している場合

あるいは、あなたのようなきれいな何かをしようとします

関連する問題