Calling a DirectAction with values from a WORedirect

WORedirect is useful when you need a regular Component action (i.e. non DA) to lead somewhere other than another WOComponent (i.e. If you need to perform some cleanup and return a company homepage when a logout link is clicked).

Luckily for us, a WORedirect can also easily allows us to redirect to a DirectAction, as the following code demonstrates:

This hypothetical action is bound to a WOSubmitButton in a WOForm on a WOComponant. It is important to note that its return type is WORedirect instead of the usual WOComponent.

It function is pretty clear, it creates a new NSMutableDictionary and populates it with the values and keys that we need to append to our DirectAction URL. The single line of code does most of the heavy lifting:

It creates the DirectAction url (in this case for the searchAction) for us and append the values from our NSMutableDictionary. Finally we set the url for the WORedirect and return it.

The directActionURLForActionNamed comes from WOContext and it’s API can be found here.

Well, I think this will be the last DirecAction specific post. I’ve covered pretty much everything I set out to, so I think I’ll take a break an look for a different topic to examine. If anyone has any suggestions, let me know.

The directActionforURLNamed() function returns parameters with & separating the dictionary values. Passing this directly to WORedirect does not work. Am I doing something wrong, or is there something missing above?

Hello David LeBer, I watched your WO tutorials about login and done the way you told. However I have an issue with logout. I am not sure how to do it. Is it possible for you to make small tutorial as continuation to the previous one, which demonstrates the logout process.

For logout, you can terminate the session, and than redirect to a Direct Action logout page where there you may tell users like “you log out successfully blah blah blah and perhaps provide a link to the login page.