On Tuesday, August 23, 2011 12:14:43 PM UTC-4, Álvaro J. Iradier wrote:
>
> Hi, 
>
> I've created a component mycomponent.load to be used with the LOAD() 
> method. But inside the mycomponent.load I want to have a link to 
> another function in the same controller. 
>
> When I do: {{=URL(r=request, f='otherfunction')}}, the .load extension 
> is automatically added, so I end up being linked to the nonexisting 
> URL "http://.../mycontroller/otherfunction.load";. 
>
> Is this the intended behavior? I can guess there is something about 
> the extension from this fragment of the book: 
>
>
> "If you LOAD a component having the .load extension and the 
> corresponding controller function redirects to another action (for 
> example a login form), the .load extension propagates and the new url 
> (the one to redirect too) is also loaded with a .load extension." 
>
> but is there a way to remove the .load extension when using URL inside 
> a component?

 
Your component isn't redirecting, so this is not due to the propogation of 
the .load extension upon redirect. However, the URL function will 
automatically use the extension of the current request if the extension 
isn't specified (unless the extension of the current request is html). Since 
the request that loads the component has a .load extension, the URL function 
will automatically add a .load extension as well. To avoid this, just 
specify an explicit extension (e.g., extension='html'). Note, if you want 
the link to point to an html page, but you don't want the resulting URL to 
actually include the .html extension, then you can explicitly set 
extension=False. In that case, web2py will default to requesting the .html 
view (as it always does when there is no url extension), but it won't show 
.html in the URL.
 
See near the end of this section in the book: 
http://web2py.com/book/default/chapter/04#URL.
 
Anthony

Reply via email to