3

複数の関連ノードを同時に作成できるフォームが必要です。すべてのノードに CCK フィールドが含まれます。

CCK の組み込みの検証、送信、入力ウィジェット、およびセキュリティ機能を可能な限り/実用的に使用したいと考えています。

Drupal 6 でこれを達成するための最良の方法は何ですか? 「ベストプラクティス」やドキュメントはどこにありますか?

ここに私が見ることができる3つの可能性があります。これらのいずれかが機能するかどうか、またはさらに優れたオプションがあるかどうかについてのフィードバックをお待ちしています.

1.

  • コンテンツ タイプ foo の標準ノード作成フォームから始めます。
  • フック form_alter を使用して、コンテンツ タイプ バーのフィールドを追加してフォームを変更します [コンテンツ タイプ バーのウィジェットを直接挿入できますか?]
  • カスタム送信ハンドラーを使用して、フォームが送信されたときに bar タイプのノードを作成します [標準の cck ハンドラーを呼び出すことができますか? または、ノードオブジェクトを「手動で」構築し、独自の検証を行い、node_save を使用する必要がありますか?]

2.

  • 関連するコンテンツ タイプの「通常の」ノード作成フォームを連結する新しいカスタム フォームを作成します。
  • 次に、フック form_alter を使用して、必要に応じてフォームを変更します。
  • 標準の cck 送信ハンドラーがノードを作成する作業を実行できるようにします。

3.

  • カスタム フォームを最初から作成する
  • ノードの準備、ノードの保存などを使用して、独自の送信ハンドラーでノードを作成します。

標準のノード作成フォームの再利用に関するドキュメントが見つかりましたが、同時に複数のノードを作成することについては言及されていません。

フック nodeapi とフック form_alter の使用については、Advomatic のサイトの投稿に記載されていますが、特定のメソッド descrube では、コンテンツ タイプの 1 つを「ダミー」フィールドで汚染する必要があるようです。

ご助力ありがとうございます!

4

3 に答える 3

0

特定のコンテンツ タイプのノード作成を処理するために hook_nodeapi を使用しないのはなぜですか。

$node->type = 'foo' かどうかを確認するテスト条件を設定してから、定義済みフィールドの値を使用して 2 つまたは多くのノードを作成する関数を実行します。$op がノードをデータベースに挿入する準備がほぼ整ったときにのみ実行するように hook_nodeapi を設定することもできます。これにより、作成する必要がある新しいノードに渡される前に、オブジェクトが適切な検証を経て実行されることが保証されます。

http://api.drupal.org/api/function/hook_nodeapi/6 このページには、$op 変数で使用できるすべての操作とその操作のリストがあります。

それが役立つことを願っています

于 2009-08-15T10:17:52.837 に答える
0

2 番目のタイプのバーにユーザーからの追加の入力 (フィールド) が 1 つまたは 2 つしか必要ない場合は、アプローチ 1 を使用します。

しかし、あなたの明確化を考えると、foobarは十分に異なっていて複雑であるように思われるので、アプローチ2はより合理的です。

両方のフォームを 1 つに連結し、データを入力するbarフィールドをfooフィールド (または作成後のノード) から非表示にします。フォームの検証機能と送信機能では、両方の標準の検証/送信ハンドラーを個別に呼び出すことができるように、フォームを再度分離する必要があります。

私はまだこれを行っていないので、これが cck 機能とどの程度うまく機能するかはわかりませんが、試してみるとかなりうまくいくと思います。

于 2009-08-17T23:48:08.987 に答える