Koen,
what you can do here is
$r->gen('Nieuws+rss', array('page' => null));
that will skip the page parameter, which should then be empty since
it's an optional subpattern.
Let me know if that works.
Cheers,
David
Am 24.01.2007 um 10:16 schrieb Van Daele, Koen:
> David,
>
> Thanks for the explanation. Works like a charm.
> One more question: is it possible to have a parameter in a route
> that only appears for a certain ouptut type.
> E.g.: I have the route
> <route name="Nieuws" pattern="^/nieuws/(page:\S+)?"
> module="Algemeen" action="NieuwsTonen>
> <defaults>
> <default for="page">1</default>
> </default>
> </route>
>
> Combined with the rss output type this gives url's like /nieuws/1/
> rss. This is not very elegant and the page parameter is actually
> only relevant for the html output (sine that is paged, but rss just
> displays the latest X news items).
>
> Greetings,
> Koen
>
> P.S.: I already had a baseview, but I did not have the setup with
> executeHtml(). Thanks for the tip.
>
>
>> -----Oorspronkelijk bericht-----
>> Van: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED] Namens David Zülke
>> Verzonden: maandag 22 januari 2007 13:58
>> Aan: Agavi Users Mailing List
>> Onderwerp: Re: [Agavi-Users] Generating a RSS feed
>>
>> Hi Koen,
>>
>> you were right - all you need is a new output type!
>>
>> First, you have to define that new one (e.g. "rss") in
>> output_types.xml. You can define a renderer if you want to
>> use a template to generate the output, or you omit the
>> renderer definition and use a library to generate the RSS
>> content in the view (even though I'm not aware of any PHP
>> libraries that generate RSS).
>> Next, simply define executeRss() in your View and put the
>> necessary code in there.
>> Now all that's left is to decide that we want RSS as the
>> output type and not HTML. To do that, you have several
>> options. You can use the
>> routing:
>> <route name="rss" stop="false" pattern="/rss$"
>> output_type="rss" /> That will set the output type to "rss"
>> for all URLs that end on /rss.
>> You can generate such an RSS variant of a URL using
>> $r->gen('routename
>> +rss', ...);
>> Alternatively, you could use a filter, but that's not very elegant.
>> The last opportunity to change the output type is in your
>> view's initialize method, you could check a request parameter
>> there or something. But using the routing is definitely the way to
>> go.
>>
>> Hope that helps,
>>
>> David
>>
>>
>> P.S: it is recommended that you have a MyBaseView from which
>> all views extend. This base view has an execute() method that
>> throws an exception, or forwards to a 404 action. All your
>> specific views implement only executeHtml(), executeRss() etc
>> methods. That way, you do not need to worry about the routing
>> setting an output type that some of your actions/views do not
>> implement.
>>
>>
>>
>> Am 22.01.2007 um 08:58 schrieb Van Daele, Koen:
>>
>>> Hi,
>>>
>>> I'd like to make a RSS feed for newsitems. I've already got
>> an action
>>> a a view to display the html page with the newsitems, but
>> now I'd like
>>> to generate a feed for this.
>>>
>>> Do I need to define a completely different but identical action for
>>> this or can I reuse the action and e.g. set the output type to rss?
>>> Can anyone give an example of the different files that need to be
>>> altered for this (routing, output_types, view, ...)?
>>>
>>> Greetings,
>>> Koen
>>>
>>> _______________________________________________
>>> users mailing list
>>> [email protected]
>>> http://lists.agavi.org/mailman/listinfo/users
>>>
>>
>>
>> _______________________________________________
>> users mailing list
>> [email protected]
>> http://lists.agavi.org/mailman/listinfo/users
>>
>
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.agavi.org/mailman/listinfo/users
>
_______________________________________________
users mailing list
[email protected]
http://lists.agavi.org/mailman/listinfo/users