Wednesday 27 October 2004 4:38:44 pm
Hi there, I don't know if you solved your problem, but I figured it out.
The main problem is that you are trying to access variable that your browser passes to "/content/action".
Now, take a look at your address bar. You'll see something like '/content/edit/640/1'. This is because the kernel/content/action.php does a redirect and does not pass the vars in $_POST. My solution (dirt...) consists in modifying the kernel/content/action.php file:
if ( $http->hasPostVariable( 'RedirectURIAfterPublish' ) )
{
$http->setSessionVariable( 'RedirectURIAfterPublish', $http->postVariable( 'RedirectURIAfterPublish' ) );
}
/* Start here @line 111/461 as of eZp 3.4.2 */
if ( $http->hasPostVariable( 'InternalUse' ) )
{
$http->setSessionVariable( 'InternalUse', $http->postVariable( 'InternalUse' ) );
}
/* Stop here */
$module->redirectTo( $module->functionURI( 'edit' ) . '/' . $contentObject->attribute( 'id' ) . '/' . $contentObject->attribute( 'current_version' ) );
return;
With this trick everything that is inside the "InternalUse" POST var, is stored in the session and you can get it with ezhttp('InternalUse','session')
. My form looks like:
<form method="post" action="/content/action">
<input type="hidden" name="NodeID" value="665" />
<input type="hidden" name="ClassID" value="43">
<input type="hidden" name="InternalUse[]" value="TEST">
<input type="submit" class="button" name="NewButton" value="ButtonLabel">
</form>
On the next template, using ezhttp('InternalUse','session'), returns an "Array" response, that is right. You can access the information passed with something like this:
{let InternalUseArray=ezhttp('InternalUse','session')}
{$InternalUse.0} {* if you are not using associative array *}
{$InternalUse.key} {* if you are using associative array in your form *}
Hope this helps.
Ciao, Roberto
|