[Zope] Instance within Instance
Tim Cook
twcook@iswt.com
Tue, 28 Nov 2000 16:08:51 -0600
Daryl Stultz wrote:
>
> Tim Cook wrote:
> > The problem here is that even though you set REQUEST, it is a
> > string. You need to be in the context of the parent _object_. You
> > should try <dtml-with "_.getitem(parent_id)">.
>
> What's happening now is that my class2 is getting created at the same
> level as class1. What I want is class2 to be INSIDE class1. So I don't
> want the parent context, I want the class1 context.
> <dtml-with "_.getitem(myClass1_id)"> gets me the class2 instance at the
> same level...
>
> How can I get a new context of the newly created class1 instance?
This dtml-with should be in a DTML Method, not in your
constructor. As I recall you are trying to construct the class2
from inside the class1 constructor. There may be a way to get
that to work, I don't know. But if you use a DTML Method like
this:
----------- add_myclass -----------------------
This method contains a form to gather all of your required
property values.
It should POST to add_myclassProcessor.
-----------------------------------------------
----------- add_myclassProcessor ------------------
...
<dtml-call expr="REQUEST.set('id', 'MyClass1ID')">
...
<dtml-with "manage_addProduct['MyCoolProduct']">
<dtml-call expr="Class1_add(_.None, _, NoRedir=1)">
</dtml-with MyCoolProduct>
<dtml-with "_.getitem(MyClass1ID)">
...
<dtml-call expr="REQUEST.set('id', 'MyClass2ID')">
...
<dtml-with "manage_addProduct['MyCoolProduct']">
<dtml-call expr="Class2_add(_.None, _, NoRedir=1)">
</dtml-with MyCoolProduct>
</dtml-with MyClass1ID >
---------------------------------------------------
I guarantee that you will end up with a folder MyClass1ID that
contains MyClass2ID.
This may not be the most spectacular Zope code. There are alot of
things that Zope can do that I don't know yet. But this works and
it's readable when indented properly.
Maybe, someone else can telly you a REALLY COOL way to get it
done from inside the Class1 constructor. But if you want it to
work now. Try this way. <s>
HTH,
-- Tim Cook, President --
Free Practice Management,Inc. | http://FreePM.com
Office: (901) 884-4126
Censorship: The reaction of the ignorant to freedom.