I’m having trouble wording my problem, so it’s been tough to search for an answer. Hopefully you’ll know how to help.
I am creating a CakePHP 2.1 Plugin that will interact with a series of its own Models:
– Friend
– Group
– User
Friend and Group are models that are created specifically for the Plugin, and they function within the plugin normally. However, the User model is really just an alias for some other table in the parent app.
So, if “My Awesome Application” decides to use “My Awesome Plugin”, it will have to have its own “users” table (though it may called something else). Let’s say “My Awesome Application” has a Model called MyUser. “My Awesome Plugin” wants to dynamically tell its internal User model to $useTable = “my_users”.
My question is, how do I pass that data to the Plugin? How do I configure “My Awesome Plugin” to understand that User should $useTable “my_users”;
As I understand you would like a Model in a PlugIn to use a table that would typically belong to a Model in your Application – by the conventions. Have you tried statically setting:
in the plugin? All plugins usually get initialized when Cake starts up, so all configurations should be loaded then. Why do you need this – it does really restrict you a lot? Will the table being used by the Plugin model change runtime?
The
Modelclass also has some goodies you may find useful:holds the table name for the model – the table that is currently being used that is**.
Also you can set the source table for the Model (inside a Controller) with:
$this->User->setSource(‘table_name);
** I am not sure if this applies when you use
Model::setSource(). It would be interesting to check out what$this->User->table;holds after aModel::setSource()call.