Last response I promise!

I read the whole post this time... If you want to change the view that is
rendered for an action you can manually call $this->render .  Also the
target action can be tested for with $this->action if you need to test for
specific cases.

On Thu, Nov 19, 2009 at 2:22 AM, David Roda <[email protected]> wrote:

> I'm sorry its late... I didn't even read your post... please ignore my
> reply! =(
>
>
> On Thu, Nov 19, 2009 at 2:21 AM, David Roda <[email protected]> wrote:
>
>> I think you can use the RequestHandler component for this.
>> http://book.cakephp.org/view/174/Request-Handling
>>
>>
>> On Wed, Nov 18, 2009 at 10:31 PM, Dr. Loboto <[email protected]> wrote:
>>
>>> There is a hack to render view from other folder: $this->render
>>> ('..'.DS.'shared'.DS.'json');
>>>
>>> On Nov 18, 6:13 pm, ddaffy <[email protected]> wrote:
>>> > hi!
>>> >
>>> > i'm using Router::parseExtensions('json') to be able to request data
>>> > delivered in json format, and i've been wondering if there's a way to
>>> > change view file that will be used to render data?
>>> >
>>> > if action test from Examples controller ( /examples/test ) is
>>> > requested, default view (app/views/examples/test.ctp) is rendered with
>>> > default layout (app/views/layouts/default.ctp).
>>> >
>>> > if /examples/test.json is requested app/views/examples/json/test.ctp
>>> > is rendered with app/views/layouts/json/default.ctp layout.
>>> >
>>> > because i use unified way for passing variables to view, i don't need
>>> > every action to have different view for json extension (app/views/
>>> > examples/json/test1.ctp, app/views/examples/json/test2.ctp...), and i
>>> > would like to use e.g. app/views/shared/json.ctp. i know how to
>>> > achieve this for single action, but i need a way to do this globally
>>> > (in AppController).
>>> >
>>> > what i tried:
>>> >
>>> > funciton beforeRender() {
>>> >         if ($this->RequestHandler->ext == 'json') {
>>> >             $this->viewPath = 'shared';
>>> >         }
>>> >
>>> > }
>>> >
>>> > results in rendering app/views/shared/<action_name>.ctp
>>> >
>>> > funciton beforeRender() {
>>> >         if ($this->RequestHandler->ext == 'json') {
>>> >             $this->render('/shared/json');
>>> >             // or: $this->render('shared/json');
>>> >             // or: $this->render(null, null, '/shared/json');
>>> >             // or variations..
>>> >         }
>>> >
>>> > }
>>> >
>>> > result is empty.
>>> >
>>> > also i saw solution with creating new view class that will override
>>> > render function and customising it, but it sounds like overkill to
>>> > me..
>>> >
>>> > ideal solution in addition to setting $viewPath ($this->viewPath =
>>> > 'shared') would be to change name of view file that will be requested
>>> > for rendering, but haven't found a way to do that.
>>> >
>>> > any ideas would be appreciated.
>>> > thanks. :)
>>>
>>> --
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "CakePHP" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<cake-php%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/cake-php?hl=.
>>>
>>>
>>>
>>
>

--

You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=.


Reply via email to