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モジュールとロケーションモジュールがインストールされ、機能しています。drupalコンテンツエディターを使用してzipを直接追加すると、すべて機能します。ビューのgmapですら。だから私はバージョンと改造がすべて正しいことを知っています。

私はこれを使用しました:

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

この:

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

国の要素がある場合とない場合。そして、ノードデータの初期化セクション(上記)では、次のようになります。

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

また

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

また

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

しかし、これはどれも機能しません。送信は実際には正常に行われますが、位置データは保存されません。そして、エラーはスローされません。

これに関する助けをいただければ幸いです。

4

2 に答える 2

2

私はこれを機能させました(誰かが同じ問題を抱えていてこれに遭遇した場合)、最初にノードを作成し、次に次のコマンドでノードに位置データを追加します:

$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ではなく、正しい方法だと思います。

于 2011-10-09T00:36:54.767 に答える