thanks majna!

I sure didn't know you actually can use the same method names in extended
classes and that then parent classes use them!

I now have renamed back my controller::MYrender() into controller::render()
and now cake uses my render method instead the default one.

By the way, what exactly do the

var $autoRender = true;
var $autoLayout = false;

both in controller and view classes do? I see them set all the time in
controller and set also in view, but I don't see them checked anywhere...
Controller says about autoRender:
 * Automatically render the view (the dispatcher checks for this variable
before running render())
But I don't see anything happening really if I turn this off. (that is,
anything happening WITHOUT my hack)

As this two vars could make the code even more beautiful I would appreciate
any Ideas...


D


On 9/13/07, majna <[EMAIL PROTECTED]> wrote:
>
>
> View this
> snippethttp://cakeforge.org/snippet/detail.php?type=packagever&id=44
> There is custom view class cjsView.php.
>
> On Sep 13, 7:23 pm, DanielSun <[EMAIL PROTECTED]> wrote:
> > I am extreemly sorry for this mess. I must say I posted all the
> > messages ONCE. even google isn't what it used to be :)
> >
> > I know that hacking core is not the thing to do. That is why i am
> > trying hard to think of the way arround.
> > Thanks Cris. But only passing variables TO the view doesn't help much
> > here...
> >
> > I think I have thought out something interesting. Here it goes:
> >
> > - Copy paste entire controller::render() method into app_controller,
> > renamed it  (e.g. MYrender())
> >        - renamed the instance of viewClass object and renamed the last
> > call to the view::render() method  (now renderNOT)
> > - copy paste entire view::render() function into myCustomView.php and
> > renamed it (to e.g. renderNOT)
> > - called myCustomView on the beginning of app_controller var
> > $view=myCustom;
> > - put $this->MYrender($this->action); into afterFilter in
> > app_controller
> >
> > NOW I get all I wanted. I haven't messed with cake core code AND all
> > the code (except for app_controller) is now "no-hack" competible.
> >
> > And the sweetness of the controller controlled layout objects?
> >
> > any_controller {
> >
> > function home(){
> >
> >     $this->leftBlock= render('leftBlockView');
> >      $this->rightBlock=render('rightBlockView');
> >
> >     $this->MainMenu=renderElement('MainMenu');
> >
> >     $this->PageTitle=$this->action;
> >
> > }
> > }
> >
> > default.thtml (layout)
> >
> > ***
> > <div id="mainmenu">  <?=$this->controller->'MainMenu';?></div>
> > <div id="leftBlock">
> >             <?=$this->controller->leftBlock;?>
> > <div>
> > <div id="rightBlock">
> >         <?=$this->controller->rightBlock;?>
> >
> > <div>
> > **********
> >
> > Isn't that beautifull??
> >
> > I only hope everything else will work. Have to do some testing, will
> > comeback.
> >
> > d
> >
> > [I hope this is not gonna post 100times again]
> >
> > On 13 sep., 15:30, "Chris Hartjes" <[EMAIL PROTECTED]> wrote:
> >
> > > On 9/13/07, DanielSun <[EMAIL PROTECTED]> wrote:
> >
> > > > Meaning I cannot at all make my own view class and I should instead
> > > > use the allready instantiated view object __viewClass? Or should I
> > > > make a new instance of view just for the purpose of rendering
> layout.
> >
> > > You can create your own view class if required.  Nate is talking about
> > > how to use your custom class.  Here's a code snippet that might help:
> >
> > > * in the controller*
> >
> > > function foo() {
> > >      $this->view = 'bar';
> > >      $this->set('baz', $this->Baz->findAll());
> >
> > > }
> >
> > > This will tell Cake that for this action in the controller, you want
> > > to use your 'bar' class for the view, which you should put in a file
> > > named 'bar.php' that you place in your views directory.  Then you can
> > > pass stuff to it just like it was any other view and Cake will then
> > > execute your custom view for you.  We have used custom views to spit
> > > out images for an internal project at CDC so that you can do things
> > > like <img src=/controller/view/imageId> and have it display the image
> > > you want.
> >
> > > > And therefore I cannot bypass hacking of the core?
> >
> > > Hacking the core is *always* a last resort because 99% of the time it
> > > is done by people who do not understand how CakePHP works internally,
> > > and 1% of the time it's to handle a legitmate problem with the code.
> > > Spend some time learning how to create a custom view (I'm not aware of
> > > any links off the top of my head) and I'm pretty sure that will handle
> > > everything you need.
> >
> > > Hope that helps.
> >
> > > --
> > > Chris Hartjes
> > > Senior Developer
> > > Cake Development Corporation
> >
> > > My motto for 2007:  "Just build it, damnit!"
> >
> > > @TheBallpark -http://www.littlehart.net/attheballpark
> > > @TheKeyboard -http://www.littlehart.net/atthekeyboard
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" 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=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to