Thursday, February 21, 2013

Re: Problem with using components when Importing a Controller

Even with Cake1.3 you dont import and abuse controllers this way.
You need to refactor those controller methods into clean model methods and only re-use those.


Am Donnerstag, 21. Februar 2013 11:52:09 UTC+1 schrieb david...@gmail.com:
I have a controller EmailNotifications which I am accessing using App::Import('Controller', 'EmailNotifications');

The EmailNotifications controller uses the Email component
  var $components = array('Email', 'RequestHandler');

When I import the controller I use the following code:
            // Load the Email Notification controller
            App::Import('Controller', 'EmailNotifications');
            $EmailNotification = new EmailNotificationsController();
            $EmailNotification->constructClasses();

Inside of the notify method of the EmailNotificationsController I use the Email component
      $this->Email->reset();
      $this->Email->to = $Notify['EmailNotification']['email_address'];
      $this->Email->subject = ucwords("$Subject ($Activity)");
      $this->Email->replyTo = $Notify['EmailNotification']['email_address'];
      $this->Email->from = $Notify['EmailNotification']['email_address'];
      $this->Email->template = $Template;
      $this->Email->sendAs = 'text';
      // Since this is being used via App::Import the Controller is not properly set
      // so we set it here
      $this->Email->Controller = $this;
      $Ret = $this->Email->send();

If I do not manually set $this->Email->Controller = $this before calling send the variables I have set earlier in the code are not exported to the email view.

From reading the manual I understood that calling constructClasses would initialize any models and components used by the controller.  However, the components do not seem to be initialized correctly.

Is there something else I am supposed to do in order for this to work correctly?  Is this a bug?  I am using CakePHP 1.3.10

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
 
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments: