Trying to get CakePHP work with subfolders for Controllers, Views, or Models is not really working and from what I've read I need to use "Plugins". Right now I have the following folder structure:
/app/Plugin/Manager/
/Controller
CandyController.php
/Models
/View
/Candy
viewCandy.ctp
ManagerAppController.php
ManagerAppModel.php
When I try and set my url to: http://localhost/Manager/Candy/viewCandy/123. I get the error message: "ManagerController does not exist". Why is CakePHP not picking up that it should look in the Manager plugin folder?
Now that 2.0 has been released the docs are fleshed out a bit more. This is described in the Plugin section of the cookbook.
They suggest putting this in bootstrap.php instead of routes.php:
CakePlugin::loadAll(); // Loads all plugins at once
CakePlugin::load('ContactManager'); //Loads a single plugin
Here is the solution:
Go to /app/Config/routes.php and add the line CakePlugin::load(array('YourPluginName')); after the line CakePlugin::routes();. In my case it was line 40.
Basically CakePHP 2.0 doesn't automatically load plugins. I think that's fine and dandy, but there isn't really any documentation for this.
Related
I'm trying to work with this CakePHP 3 plugin which I think does exactly what I need it to do, but am struggling big time! I'm new to CakePHP 3, composer and fiddling with routes etc (previously CakePHP 2.x and manual installation and never played with routes).
The plugin does not appear to be maintained any longer and the package does not exist when trying to install via composer, so I forked it and cloned the files to /plugins/AuditLog/
I've run updated my app composer.json file, loaded the plugin in my bootstrap.php, and run composer install on /plugins/AuditLog/ to load the dependencies from the plugin composer.json file (not sure if this is the right thing to do?)
In plugins/AuditLog/config/routes.php there is the following code
Router::plugin('AuditLog', function ($routes) {
$routes->prefix('admin', function ($routes) {
$routes->fallbacks('DashedRoute');
});
$routes->fallbacks('DashedRoute');
});
So a bit of searching in the CookBook and I read for the first time about 'prefix routing', which from what I can tell means I should be able to reach the pages via /admin/audit-log/audits (for example).
Not surprisingly, I get a missing controller error here
Error: Create the class AdminController below in file: src/Controller/AdminController.php
The instructions for the plugin don't mention anything about creating an admin controller, and there are no controller files anywhere in the plugin at all actually, despite there being views and models.
I'm really out of my depth here, can anyone help me untangle this? Where/how to add which controllers and get them pointing to the right place?
I want to use some CakePHP plugins such as CakeGrid in Croogo 2.
How can i do it?
Cheers
Try:
Open file Config/bootstrap.php and Add code end of file
CakePlugin::load('CakeGrid');
Then add changes according to instruction in croogo controller and view file.
Now I know there is a work around already for this were I can just copy the assets to the projects own webroot. And will probably just do that in a bit however . . .
I do want to know why I keep getting this issue. I was poking around in the AssetDispatcher code and placed some CakeLog::write() statements in there and when I call the page the dispatcher is only called once. Shouldn't it be called for each asset that is being requested? Is there another file that handles the dispatching of assets other than this class I can look at?
I have a fresh install of cakephp 2.5.5 and DebugKit 2.2.4
I followed the instructions in how to load the plugin and indeed the php code is seeing the plugin and tries to load it. It is just not being displayed properly because it can't find the css and js within the plugin.
I did some searching and found somethings stating that the order that the plugins are loaded and the order of the dispatchers withing the bootstrap.php file matters here. I am using a fresh install of cakephp here and that order is already present. DebugKit is loaded and then the dispatchers.
Mostly I could use some help in how to debug the dispatchers since this seems to be where the problem is. Never have had to touch these before. The cakebook gives general information on how to write your own, but I am more interested in the lifecycle here.
Or more like I am making this overly complicated and there is an even easier thing to do here to figure this out. Any information is appreciated.
I've included the relevent code on the initial setup of the DebugKit below in case I missed something simple or overlooked something I thought I had done.
app/Config/bootstrap.php
CakePlugin::load( 'DebugKit' );
Configure::write('Dispatcher.filters', array(
'AssetDispatcher',
'CacheDispatcher'
));
app/Controller/AppController.php
$components = array( 'DebugKit.Toolbar' );
app/View/Layout/default.ctp
bottom of file
<p>
<?php echo $cakeVersion; ?>
</p>
</div>
</div>
</body>
</html>
These are the paths that cake is having trouble resolving
/debug_kit/css/debug_toolbar.css
/debug_kit/js/js_debug_toolbar.js
/debug_kit/image/cake.icon.png
These are the urls that cake is generating itself
I have the same problem before when upgrading to the latest CakePHP. I solve it by adding the following codes in bootstrap.php:
Configure::write('Dispatcher.filters', array(
'AssetDispatcher',
'CacheDispatcher'
));
When upgrading to latest version, you need to also check whether there are changes in index.php and htaccess file.
Here are the steps you follow:
Install CakePHP and check installation.
Download the latest DebugKit 2.2.1, which is compatible with Cake 2.4
Copy the contents to the cake/plugins/DebugKit folder.
Call CakePlugin::load('DebugKit'); in app/Config/bootstrap.php
Include toolbar component by calling public $components = array('DebugKit.Toolbar'); within the class of AppController.php
Set Configure::write('debug', 1); in app/Config/core.php
Remove the 'sql_dump' element from my layout in app/View/Layouts/default.ctp
Copy all contents (folders 'css', 'js', 'img') of app/Plugin/DebugKit/webroot/ in app/webroot/debug_kit/
Appologies if this is something obvious I've missed.
I'm trying to use this Cake plugin to add a twitter feed to my cake app (just display my latest tweet). I've followed the docs in the readme but I get this:
Missing Controller
Error: Twitter.UsersController could not be found.
Error: Create the class UsersController below in file: C:\wamp\www\mysite\app\Plugin\Twitter\Controller\UsersController.php
Heres what I've done so far (as the readme instructs):
Cloned all the files into app/Plugin/Twitter/
Rename Config/twitter.default.php to Config/twitter.php
Updated the config file with my twitter app keys
Visited mysite/twitter/twitter/connect - which gives me the above error.
The readme mentions that the plugin uses - http_socket_oauth, another cake plugin, I trust that this is included in this plugin and that I dont have to install that plugin aswel?
Could someone point me in the right direction?
Thank you
More easy questions - this time, how do I install a CakePHP plugin? I get that I take the plugin folder and put it in the, well, the plugins directory.
so
/app
/plugins
/what is this?
And I ask this, because I just downloaded a plugin - here:
http://milesj.me/blog/read/changelog-forum-2.3
And the name of the folder that everything is in is milesj-cake-forum-29a0699
This doesn't appear to be a good plugin name... is there some place that lists or describes what the plugin should be called? I know i know, I'm going to try it out without the 29stuff, but I like things to be silky smooth, not "trial and error".
Yes, I am a terrible programmer.
Based on the plugin's documentation, they refer to models as Forum.Profile for example which suggests that the plugins should be installed in APP/plugins/forum as that's where the CakePHP autoloader will look unless instructed otherwise (section 2).
for example fb plugin ; Load the plugin in your app/Config/bootstrap.php file:
//app/Config/bootstrap.php
CakePlugin::load('Facebook');
You can use all or some of the Facebook plugin as you see fit. At the very least you will probably want to use the Facebook Helper
public $helpers = array('Facebook.Facebook');