Drupal Özel Düğüm Formu

3 Cevap php

I want to create an input form for registered user, separated from admin's content creation form. Each submission will create multiple node. To illustrate the case, I will use content type Project, and Review.

Project, Title, Description, Owner, Rating.

Review, Title, Reviewer, Project, Difficulty

Ben kurulum CCK modüllerini kullanarak kendi alanları ile birlikte içerik türleri var. Ben kayıtlı üye (yönetici olmayan) için görüntülenecek bir giriş formu oluşturmak istiyorum. Bu alan içerir Project Name, Description, Owner, Rating, Review, Difficulty .

Form gönderildiğinde, Project Name, Description, Owner, ve Rating değeri, yeni Project düğüm gider , geri kalanı yeni Review düğüme gider nereye.

Ben yapmak istediğim bir başka özelleştirme Rating için ve Difficulty giriş alanı kullanmak için star rating input.

Ne bu başarmak için en iyi yol olacağını? Ben (Herkes bunun nasıl yapılacağını bana işaret edebilir) özel bir modül ve özel bir form oluşturmak gerekir? Veya kullanmak herhangi bir modül var mı?

Teşekkürler

3 Cevap

Bunu yapmanın birkaç yolu vardır:

  1. - Formu kendiniz oluşturmak, kendi doğrulama eklemek ve işleyicileri göndermek ve göndermek, iki düğüm nesneler oluşturmak ve bunları kaydedebilirsiniz Bu theunravelers suggestion (1) aşağı kaynar budur: sıfırdan her şeyi yapın. Sen tam denetim / esnekliğe sahip olacak, ama oldukça bazı iş olduğunu ve bunu doğru almak Drupals iç işleyişini iyi bir anlayış olması gerekir.

  2. 'Aşırı' diğer tarafından ihtiyaç duyulan alanlar ile içerik türlerinden biri ve çimdik 'aşırı bunları gizleme ise' aşırı 'içerik türleri, göndermek (ve kısmen düzenle / ekran) ek alanlardan diğer içerik türü oluşturmak için mantık Ekranda ve düzenleme üzerinde 'tek. You can find an article describing this approach here. Bu # 1'den oldukça kolay bir yaklaşım olduğunu, ama ben çünkü ekran uyumsuzluğu vs içerik türü tanımı, biraz 'hackish' olarak düşünün.

  3. 2. Daha az 'hackish' varyasyon normalde içerik türlerini kurmak olacak ve sadece düzenleme işlemek ve üzeri sürecini sunacağını hook_form_alter() . You'd do more or less the same as with approach #2, but instead of 'overloading' one node with the additional fields upfront, you'd just inject them into the edit form directly on hook_form_alter (ya sıfırdan veya düzenlemeyi yükleyerek diğer arka planda düğüm ve) bundan ilgili alan tanımlarını kopyalama biçimidir. Diğer düğümü oluşturmak için bunları kullanırken form gönderildiğinde, bu ek alanları kaldırın. Bu 2. biraz daha çalışma ve bilgi gerektirir, ancak ekran uyumsuzluğu vs içerik türü tanımı ile uğraşmak zorunda değilsiniz gibi, biraz daha istikrarlı ve daha korumak / ayarlamak için kolay olmalıdır.

Ayrıca, size mevcut düğümleri düzenleme ile uğraşmak istiyorum nasıl belirtmek vermedi - Ben onların dernek takip etmek düğümlerden biri bir nodereference ekleyerek öneririm. İsterseniz bu şekilde, ayrıca, bir form hem düğümleri düzenlemek için mantık, hem de senkronize silinmesini ekleyebilirsiniz.

Bu benim için özel bir iş gibi geliyor. Siz formu yapmak için modül Form API kullanabilirsiniz. Form API nasıl çalıştığını örnekleri görmek için hemen hemen başka bir modül bak. Daha sonra, bu alanların tüm değerleri bir $ düğüm nesnesi oluşturmak ve node_submit() ve node_save() aslında farklı düğümleri oluşturmak için kullanmak isteyeceksiniz.

Ben belki Form API kullanarak ve bu iki düğüm türleri oluşturmak için teslim sürecini kaçırma için Webform modül arıyorum öneririz.

Var olmayan bir düğüme işaret edebilir bir CCK nodereference alanı oluştururken gençten çözümlerinden biri ve göndermek üzerinde kullanarak oluşturmak Seçenek 3,.

Node Reference Create bu projelerin daha kararlı biri gibi görünüyor.

Node Reference Auto-create ve Node Reference Field daha yeni düğüm değerlerini belirlemek için katma değer var görünüyor.

Bu işlenirken, düğümleri entegre Görüntüleme oluşturmak ve daha fazla için kullanabileceğiniz modüller arasında bir nodereference bina ikincil bir avantaja sahiptir.