[html-formfu] Question about DBIC-integration
Andreas Marienborg
omega at palle.net
Wed Feb 13 08:42:08 GMT 2008
On Feb 12, 2008, at 4:34 PM, Carl Franks wrote:
> On 12/02/2008, Andreas Marienborg <omega at palle.net> wrote:
>>
>> On Feb 12, 2008, at 10:57 AM, Carl Franks wrote:
>>
>>> On 11/02/2008, Andreas Marienborg <omega at palle.net> wrote:
>>>> second question:
>>>>
>>>> I need to constraint my options in a select based on the user
>>>> that is
>>>> logged in. Is that possible, or should I start tailing trunk and
>>>> try
>>>> to cook up a patch that lets you specify a token or somesuch
>>>> replaced
>>>> by $c->user->id for instance?
>>>
>>> I've already added support in trunk for adding a DBIC constraint
>>> based
>>> on a value on the form stash.
>>>
>>> So, in your element config:
>>> ---
>>> type: Select
>>> model_config:
>>> DBIC:
>>> condition_from_stash:
>>> $column-name: $stash-key
>>>
>>> Will essentially do:
>>> $row->search({ column-name => $form->stash->{ $stash-key } });
>>>
>>> So if you can get the user id onto the stash easily enough, this
>>> might
>>> be a solution.
>>>
>>
>> I presume I can do this in my controllers and it will be work when I
>> render the form in my controller afterwards?
>
> Um, no.
> The Select is populated during process(), which is called by
> Catalyst-Controller-HTML-FormFu before it puts the form on the stash.
>
> I implemented 'condition_from_stash' for a MultiForm I was working on,
> and hadn't tried using it for anything else yet.
>
> At the moment, if you're using the Cat Attributes, the only way I can
> think of getting something onto the stash before process() is called
> is to create a subclass of Select.
>
> Maybe something more along the line of Roles would be better?
> so in your config you could do something like:
> roles: ['Catalyst::StashUserID']
> which would load the relevant class, and do the dirty work.
>
Another option (and perhaps more easy) is some sort of global stash,
which all forms inherit from.
That way I could (for catalyst) set the owner in that global stash
during Root->auto, and the condition_from_stash would just work
But roles/plugins sounds alot more powerful
- andreas
More information about the HTML-FormFu
mailing list