Archive for the ‘HOWTOs’ Category

Configure PhpStorm to Auto-complete CakePHP Models, Views, and Controllers

Posted on the August 24th, 2011 under HOWTOs,Technology / Computing by

After playing around a bit today I finally figured out how to get PhpStorm to auto-complete methods for models and controllers. Here’s what you need to do.

 

Removing Multiple Definitions

First, let’s tackle the multiple definitions problem that we see below.

Multiple Definitions Exist

 

There are multiple places defining AppController. We need to remove the ones that are included in the following locations from our ‘Directories’ in the project’s settings.

The two locations are:

  • $CAKEHOME/cake/console
  • $CAKEHOME/cake/tests

Exclude Directories

Next we need to mark the following file as plain text.

  • $CAKEHOME/cake/libs/controllers/app_controller.php

Mark as Plain Text

You should now see that PhpStorm is no longer complaining about multiple definitions. If it is you may want to check your plugins/components to see if they’re mucking it up. If they are, just mark the file with the definition as plain text.

Multiple Definitions Resolved

Auto-completion should now work for the controller. However, it’s still not working correctly on our model.

Auto-complete works, but not on the model

Adding the Model

To fix the model we need to add a magic property to the class.

/**
 *@property ModelName $ModelName
 */

Here’s an example from the controller we’ve been working in.

@property ModelName $ModelName

 We can now auto-complete on our models in the controller.

Auto-complete works on the model

Defining Model Relationships

Lastly, we need to add magic properties to our models to define its relationships with other models. Basically, for each “belongs to” relationship defined in the model’s file you need to add the magic property comment.

Define belongs to relationships

We can now auto-complete these relationships.

Auto-complete model relationships

Setting Up Helper Auto-completion in Views

To get auto-completion working in views we need to include a file created by junichi11 over at GitHub.

Download this file and save it in a directory somewhere outside of your current project. I did this so I could use the same file on multiple projects.

Now add that directory to your current project.

Open a view file and add the following variable definition.

/**
 *@var $this View
 */

You should now be able to auto-complete helpers in your view!

Auto-completion of Helpers

Core Component Auto-Completion

Add the following to your app_controller.php file and this will add component auto-completion.

/**
 * CakePHP Component & Model Code Completion
 * @author junichi11
 *
 * ==============================================
 * CakePHP Core Components
 * ==============================================
 * @property AuthComponent $Auth
 * @property AclComponent $Acl
 * @property CookieComponent $Cookie
 * @property EmailComponent $Email
 * @property RequestHandlerComponent $RequestHandler
 * @property SecurityComponent $Security
 * @property SessionComponent $Session
 */

SABnzbd URL Bookmarklet (NZBMatrix)

Posted on the April 21st, 2010 under HOWTOs,Technology / Computing by

Here’s a simple bookmarklet that will take the URL of the current page you’re on and tell SABnzbd to download it. It works great if you’re using NZBMatrix and on the page for the post you’re wanting to download. Perfect for your mobile browser.

javascript:location.href='http://yourhost:8080/api?mode=addurl&name='+encodeURIComponent(location.href)+'&apikey=yourapikey';

Be sure to insert your SABnzbd API key and hostname (or IP address) into the bookmarklet’s code.

Perl Find and Replace One Liner

Posted on the January 20th, 2010 under HOWTOs,Sys Admin by

I’m constantly needing a way to easily change a line in a bunch of configuration files. I thought I’d share the way I do it here.

perl -p -i -e 's/oldstring/newstring/g' *

This allows you to use a regular expression and perform the find and replace.