Custom panel for the CakePHP DebugKit allowing for interactive sessions with your app
Switch branches/tags
Nothing to show
Latest commit 31d1865 Mar 4, 2011 Matt Curry Matt Curry merged from josegonzalez-master


 * Interactive panel for the CakePHP DebugKit
 * Copyright (c) 2009 Matt Curry
 * @author      Matt Curry <>
 * @author      Sandu Lungu <>
 * @license     MIT

This version of the plugin is compatible with CakePHP 1.3 and the latest DebugKit
/* About */
This plugin adds easy interactions with your CakePHP app using the console or through a custom panel for the CakePHP DebugKit.  
It handles simple PHP commands, SQL queries and PHP using your Cake objects.

/* Examples */
10 % 4 (returns 2)
is_array(49) (returns false)
SELECT id FROM users WHERE email = '' (retuns the id of the matching record)
User::findByEmail('') (returns the entire matching user record)

/* Power Usage */
When using in the DebugKit panel you can stack commands, just make sure to end each with a ";" as you would in your code.

If you're having trouble getting results for a particular command and can't figure out why try turning on debug as the first command:
Configure::write('debug', 2);
Facebook.Page::findByEmail(''); // here we use a plugin

/* Warning */
There isn't any sort of error detection or validation on the input.  Also there isn't any pagination for long result sets.  If you enter in a query that returns a million records, you're going to get a million records.

You can't declare a variable and use it across commands. For example this doesn't work:
$i = 10;
$i ++;

/* Instructions */
1) Download the plugin to /app/plugin/interactive

/* Console Instructions */
1) Run the cake console passing the "interactive" shell
   from /app: ../cake/console/cake interactive

2) Enter commands as needed.  Enter 'Q' to exit.  

3) You can also commands as parameters.  The interactive shell will run the command and exit
   ../cake/console/cake interactive Post::find('first')

/* DebugKit Instructions (trunk) */
1) Include the panel:
   $components = array('DebugKit.Toolbar' => array('panels' => array('Interactive.interactive'));