Hallo zusammen,
im Netz bin ich auf das Beispiel Personenverwaltung gestoßen, wie man eine eigene Edit-Form für Archetypes CTs erstellt.
http://www.nabble.com/Re%3A-Seeking-…-p10885580.html
Dieses Beispiel habe ich bei mir probiert und komme nun leider nicht weiter.
Als erstes der Code des Personen-Schemas/-Klasse. Um den CT zum Laufen zu bringen, musste ich im Vergleich zum Code auf obiger Seite noch einige Imports einfügen.
# CMF imports  
from Products.CMFCore import CMFCorePermissions
# Archetypes imports
from Products.Archetypes.public import BaseSchema, Schema
from Products.Archetypes.public import IntegerField, StringField
from Products.Archetypes.public import IntegerWidget, StringWidget
from Products.Archetypes.public import BaseContent, registerType
from Products.Archetypes.Marshall import PrimaryFieldMarshaller
from Products.Archetypes.TemplateMixin import TemplateMixin
# Product imports
from config import PROJECTNAME
# Schema definition
schema = BaseSchema.copy() +  Schema((
  IntegerField('person_id',
                widget = IntegerWidget(label = "Person Id"),
            ),
  StringField('first_name',
                widget = StringWidget(label = "First Name"),
            ),
  StringField('last_name',
                widget = StringWidget(label = "Last Name"),
            ),
),           marshall=PrimaryFieldMarshaller(),
                              )
class Person(BaseContent):
    """An Archetype for a Person"""
    schema = schema
    portal_type = meta_type = 'Person'
    archetype_name = 'Person'
    _at_rename_after_creation = True
    actions = TemplateMixin.actions
    aliases = {
        '(Default)'  : 'person_view',
        'view'       : 'person_view',
        'edit'       : 'person_edit',
        'properties' : 'base_metadata',
        }
registerType(Person, PROJECTNAME)
	
			Alles anzeigen
	An der person_edit.cpt habe ich nichts geändert:
<html metal:use-macro="here/main_template/macros/master"
      i18n:domain="plone" >
<body>
<div metal:fill-slot="main">
        <form method="POST" tal:attributes="action string:${here/absolute_url}/${template/id};">
                <input type="hidden" name="form.submitted" value="1" />
                <p class="error_message" tal:define="err errors/n|nothing"
                tal:condition="err"></p>
                <div class="field">
                 <label i18n:translate="">FIRST Name:</label>
                 <div metal:use-macro="python: here.widget('first_name',mode='edit')" />
                </div>
                <div class="field">
                 <label i18n:translate="">LAST Name:</label>
                 <div metal:use-macro="python: here.widget('last_name',mode='edit')" />
                </div>
                <div class="field">
                 <label i18n:translate="">PERSON Id:</label>
                 <div metal:use-macro="python: here.widget('person_id',mode='edit')" />
                </div>
<input type="submit" name="form.button.submit" value="Save"
                        tal:attributes="tabindex tabindex/next" /></p>
        </form>
</div>
</body>
</html>
	
			Alles anzeigen
	Das Problem ist nun, dass statt der person_edit immer noch die base_edit aufgerufen wird. Allerdings steht auch bei /Plone/portal_types/Person unter Initial view name noch base_edit. Ändere ich dies nun auf person_edit, bekomme ich den Fehler Nameerror/name 'errors' is not defined. Irgendwo muss also noch ein Fehler sein. Allerdings wird im obigen Link auch gesagt, dass nachdem alle Fehler beseitigt wurden, trotzdem die base_edit aufgerufen wird.
Lange Rede, kurzer Sinn... könnte bitte jemand mal dieses Beispiel ausprobieren und das person_edit zum Laufen bekommen?
Tausend Dank! ![]()
Greets, Moerz