If you are learning CakePHP then you should know some basic & small snippets that are very useful while developing app with CakePHP.This post contains such small but very useful cakephp tips.
Remove plugin name and controller name from url
If you want to remove plugin and as well as controller name from URL , just add below line on your's routes.php file.
Router::connect( '/plugin-name/*', array( 'plugin' => 'plugin-name', 'controller' => 'controller-name', 'action' => 'view' ) );
Render specific view
You can render a different view than what would conventionally be done. This can be done by calling render() method directly. Once render() is called ,CakePHP will not try to re-render the view:
class PostsController extends AppController { function your_action() { $this->render('test_file'); } }
This would render app/View/Posts/test_file.ctp instead of app/View/Posts/your_action.ctp
To create a static page
Say for example you want to add about us page.In cakephp you have to create a .ctp file for the page.In this case simply create about.ctp in the /app/views/pages/ folder.Now you can access the page from www.yoursite.com/pages/about.
Setting page title for the static page
Now to give this new page a custom page title copy-paste following code anywhere in 'about.ctp' file:
$this->set("title_for_layout", "My page title");
Create route for the static pages
add below code in the /app/config/routes.php file.
Router::connect('/about', array('controller' => 'pages', 'action' => 'display', 'about'));
Now you can access it at www.yoursite.com/about
To display the schema of the model
If you want to disply the schema of particular model then you just need to add the following single line of code.For example we have “Posts” Controller.
pr($this->Post->schema());
How to set an array index to record ID.
In the below video you will learn how you can set an array index to the fetched record id.Link : http://youtu.be/RXIreHSgOxI
How to change the extension of .ctp file
In order to change the extension of the .ctp file, add the following line of code in your AppController.php file,public $ext = '.yourextension';
Notice : If you use atrribute $ext = '.php' but view file has extension .ctp then, cakephp extention .ctp will use by default.
Leverage Browser Caching CakePHP
First of all check your website’s performance here : http://gtmetrix.com.
It may display a critical error “Leverage browser caching”. Its simple meaning is expiration times are not set for different types of files. Say for example if we have jquery min file and perhaps we will not change it that often, so in this case we can put its expiration time at least 1 month. Doing this means that as soon as the browsers access the page for the very first time, after that during one month accessing the same page they will use the cached version of js file (Note: If the cache was not cleared by the user).
To implement the same scenario in cakephp for Leverage Browser Caching you just need to add the following code in .htaccess (Note : Please do not delete anything what is already there in the files.) file located in app/webroot.
ExpiresActive On ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType text/css "access plus 1 month" ExpiresByType application/pdf "access plus 1 month" ExpiresByType text/x-javascript "access plus 1 month" ExpiresByType application/x-shockwave-flash "access plus 1 month" ExpiresByType image/x-icon "access plus 1 year" ExpiresDefault "access plus 2 days"
If we make any changes in css or js file then we can urge the browser to download the edit css or javascript file adding or editing the version like this. So, these will be considered as new script.js and style.css files by the browser and they will be downloaded, so the changes will take into effect.
<?php echo $this->Html->script('script.js?v=1'); <?php echo $this->Html->css('style.css?v=1');