Yii 1.1: NetBeans IDE and Yii projects

74 followers

This page is created to supply short directions and general tips for managing a Yii application in NetBeans IDE.

1. Code completion

To get context sensitive code completion, follow these steps:

  • Include Yii folder (assuming it is properly placed outside project directory)
    • Open "File > Project properties > PHP Include Path" and add the Yii framework root path
  • Ignore yiilite.php to avoid doubled/missing documentation
    • Open "Tools > Options > Miscellaneous > Files"
    • Add to the front of "Files Ignored by the IDE" the file "^(yiilite\.php|CVS|SCCS|...."
    • Restart NetBeans
  • Code completion in view files
    • Add the following PHPDoc statement at the head of the file to use code completion in view files. (you may add additional passed parameters as well)
/* @var $this PostController */
/* @var $model Post */
$this->getSomeProValue(); // possible with code completion
$model->author; // possible with code completion

Usage:

  • Typing suggestions: Ctrl-Space
  • Show Function parameters: Ctrl-P
  • Comment your own code with PHPDoc style. Here's a good example.

2. Code templates

You can create code templates for commonly used/overridden function in Yii. For example, if you want to add an beforeSave() function in your model, by typing a shortcut you can automatically have the function template in place. There are additional shortcuts for common stuff like Yii::app(), Yii::t(), Yii::app()->user->checkAccess(), and more!

  • Download this template set to get started: http://fbe.am/hly (version 2). View all available commands in this printable cheat sheet.
  • Go to "Tools > Options > Editor > Code Templates"
  • Hit "Import", select the file, and choose "Code Templates"
    • You might get an error message "invalid zip file" if you are importing to a older/newer version of NetBeans. Open up the zip file, edit build.info, and set the correct path to Userdir.

Usage:

// typing: ybeforesave + TAB
// expands to:
 
/**
 * This method is invoked before saving a record (after validation, if any).
 * @return boolean whether the saving should be executed. Defaults to true.
 */
protected function beforeSave()
{
 
    return parent::beforeSave();
}

3. Testing

To run functional tests and unit tests in Yii, recommended is installing PHPUnit and SeleniumRC.

  • Install PHPUnit
  • Install SeleniumRC by getting the NetBeans plugin
    • Open "Tools > Plugins > Available Plugins"
    • Install "Selenium Module for PHP"
  • Configure project options
    • Open "File > Project properties > Sources" and set "Test Folder" to [PROJECT ROOT]/protected/tests (If the whole project testing doesn't work, try [PROJECT ROOT]/protected/tests/unit)
    • Open "File > Project properties > PHPUnit" and set "Use Bootstrap" to [PROJECT ROOT]/protected/tests/bootstrap.php, and "Use XML Configuration" to [PROJECT ROOT]/protected/tests/phpunit.xml

Usage:

  • Test whole project: Alt+F6
  • Test single file: Shift-F6
  • Check code coverage (right click project > Code Coverage)

4. Debugging

  • Install Xdebug (usually already available in your installation):
  • Include the Xdebug extension for PHP:
    • In php.ini enable (by removing ; prefix) these settings:
      zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
      xdebug.remote_enable = 1
      xdebug.remote_handler = "dbgp"
      xdebug.remote_host = "localhost"
      xdebug.remote_port = 9000

Usage:

  • Debug project: Ctrl-F5
  • Use breakpoints, walk through running code, and watch variables and objects in real-time. :)
  • If you want to stop the debugger from pausing on the first line for every request, simply turn that "feature" off by clicking: Tools > Options > PHP > Debugging > Stop at First Line (uncheck)

5. Navigation, wizards, additional code completion

Install a special Yii plugin.

Got problems or questions?

Do NOT post a comment on this wiki page, but go to the forums: http://www.yiiframework.com/forum/index.php?/topic/11735-netbeans-ide-and-test-driven-development/

Total 20 comments

#13070 report it
Lloyd at 2013/05/01 04:54pm
Does this work with phpStorm

I currently have a plugin for Yii installed in my installation of phpstorm, but it does not include a lot of what is available with this plugin. Can I install this with phpStorm and will it work the Yii plugin for phpStorm, I already have installed?

.

#12132 report it
pmaselkowski at 2013/02/28 07:02am
Re:

@Juan Pablo Sala - Exactly, you can have separate open projects, and netbeans will also search other projects. Also there is even possibility to not make framework project at all!

Here is how:

Click on application project, choose properties then from categories choose PHP include path and then Add folder and navigate to framework folder. This way Open file dialog will completely ignore framework files, but code completition still works.

#12128 report it
Juan Pablo Sala at 2013/02/28 05:29am
Can I ask?

hi, pmaselkowski at 2012/11/22 01:21pm sayd

Separate Application And Framework Projects I Found Usefull To Have Separate Projects For Application And Yii, So In Example When You >open Go To File Dialog There Is Checkbox Prefer Current Project, So Your Project Files >are First On The List. My Folder Layout Is:

MyApplication/app // Project MyApplication/framework // Framework project

do you mean that if you have the framework in a project you don't have to include it in your real projects? sorry for me english, home you understood, thanks

#12098 report it
PrplHaz4 at 2013/02/27 08:28am
NetBeans 7.3 Yii Plugin released!

NetBeans 7.3 now has an "official" Yii Plugin that includes some nice features: - Badge icon - Go To Action - Go To View - Code Completion on the view file - Init Action - PHPUnit Test Init Action - New Yii Project Wizard

Plugin Portal: http://plugins.netbeans.org/plugin/47246/php-yii-framework-netbeans-phpcc Github/docs: https://github.com/nbphpcouncil/nb-yii-plugin/tree/nb73dev

#11888 report it
marcovtwout at 2013/02/11 10:25am
Code templates version 2

I created a new version of the code template set. It contains new commonly used function calls, and example code in some of the already existing methods.

Added the new download and a link to hoplayann's cheat sheet to the wiki page. :)

#11884 report it
hoplayann at 2013/02/11 08:27am
Cheat sheet for 2. Code templates

Hi,

for those interested, I have created a cheat sheet in order to learn a bit faster those code templates :-)

Yii + Php code templates for NetBeans: http://www.cheatography.com/hoplayann/cheat-sheets/php-yii-code-templates-for-netbeans/

Only Yii code templates for NetBeans: http://www.cheatography.com/hoplayann/cheat-sheets/yii-code-templates-for-netbeans/

Good luck !

#10771 report it
pmaselkowski at 2012/11/22 01:21pm
Separate application and framework projects

I found usefull to have separate projects for application and yii, so in example when you open Go to file dialog there is checkbox Prefer current project, so your project files are first on the list. My folder layout is:

MyApplication/app // Project
MyApplication/framework // Framework project
#10167 report it
Ashish Kulkarni at 2012/10/08 05:57pm
Re: Do you still have to use command-line to create controllers, views and models in Yii?

@marcovtwout - Thanks so much.

#10156 report it
marcovtwout at 2012/10/08 03:51am
Re: Do you still have to use command-line to create controllers, views and models in Yii?

I think pretty much everyone is using the standard Gii-tool since two years now ;)

http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app#implementing-crud-operations

#10143 report it
Ashish Kulkarni at 2012/10/07 07:32am
Do you still have to use command-line to create controllers, views and models in Yii?

Hi guys,

I have just managed to get NetBeans configured for an existing Yii demo project I created.

But now I intend to use this for commercial projects.

Do I still need to do bulk of the work from command-line? Or is there a plugin that can help?

Best Regards,

Ashish.

#8387 report it
marcovtwout at 2012/05/30 10:51am
Re: Code templates

I forgot beforeValidate(), added now to the file.

#8272 report it
marcovtwout at 2012/05/22 10:41am
Code templates

I discovered the advantages of using code templates and added some information to the wiki page about it. See if you like it. :)

#7475 report it
oxo at 2012/03/24 02:29pm
Code completion in view files

I had to play with the order of the PHPDoc definitions to get code completion work. Tweak the lines of your definitions if you encounter any problems.

/* @var $matters Matters */
/* @var $model Order */
/* @var $this OrderMatters */
#6078 report it
Ben at 2011/12/10 11:01am
Code completion for attached behaviors

This won't work out of the box, it requires some additional typing. But at least you can make it work. Consider one of your model has some behaviors attached:

class MyModel extends CActiveRecord
{
  public function behaviors()
  {
    return array(
      'someBehavior' => 'MyBehavior'
    );
  }
}
 
class MyBehavior extends CActiveRecordBehavior
{
  public function foo()
  {
  }
}

With this, the IDE has no idea about instances of "MyModel" providing a method "foo". You won't get suggestions for:

MyModel::model()->f <Ctrl> + <Space>

But what you can do is adding some PHPDoc to your model class:

/**
 * @method void foo()
 */
class MyModel extends CActiveRecord
{
  public function behaviors()
  {
    return array(
      'someBehavior' => 'MyBehavior'
    );
  }
}

Now, the the code completion should show the method.

#5760 report it
apotter at 2011/11/10 05:13am
Awesome

thank you for the setup explanation

#5311 report it
David T at 2011/10/03 02:33pm
Selenium and chrome

How to run selenium with google chrome? IE is too slow.

#4368 report it
TechBundle at 2011/06/29 04:00pm
Manual Install of PHPUnit

If you are using 64bit windows with WAMP or XAMPP install then you most likely don't have pear so go to this site and follow the instructions for installing PHPUnit manually.

http://www.unclecode.com/2010/05/install-phpunit-on-wamp-xamp-manually-without-pear/

This is an old article so I am not sure about it's download location, I used the following site to download the current version.

https://github.com/sebastianbergmann/phpunit/

#3757 report it
naser at 2011/05/05 10:47am
error

i did all steps but when i test whole project i get this error

PHP Fatal error: Cannot redeclare class CActiveRecord in /srv/http/weblog/framework/db/ar/CActiveRecord.php on line 1832

#3368 report it
RainMonk at 2011/04/06 01:23pm
NetBeans and PHPUnit

Hi! i'm newbe... What does meands the message: "Test were not generated for the following files: Review the log i Output window"?

I have totally new XAMPP (:) ) installed in Win7. New NetBeans 6.9.1, PHPUnit installed with XAMPP, then must be new.. 3.6 I doing step by step with this tuts "NetBeans IDE and Yii projects", and... i don't see any files with log, why its not generated? Whitch one window is "Output window" when i see "the log"? I'm very flustrated... ;) Sorry for my lang, and bad mood... :) Help me please.

Thanks and regards

Ykee

#3257 report it
mbi at 2011/03/29 02:01pm
PHP_CodeSniffer

Leave a comment

Please to leave your comment.

Write new article