This post is a part of series of posts dedicated to developping in Symfony2. If you missed the first part I highly recommend you to go and read that one before you continue with this post.
Hello, today I’ll show you how to create your first Symfony2 project in NetBeans and how to push and pull it to/from Github.
Creating the fiRst SYMFONY2 project IN NETBEANS
Ok go File –> New Project –> PHP –> PHP Application. Click Next.
Create the project directly into your XAMPP server, htdocs folder. Click Next.
We should modify the starting URL because in Symfony2 the application starting point is /web/app_dev.php like that we can assure that when we are running the application it is correctly started. Also give it a descriptive name like “FirstApp”.
On PHP Frameworks step select Symfony2 checkbox and click Finish. Now your application should be generated.
RUNNING APPLICATION
Now start your Apache and MySQL from XAMPP Control Panel. Go to NetBeans and click F6 (Run the application).
Hooray!!! Our first application is up and running. Now we need to configure our application, and doing this will change the app/config/parameters.ini
Now here are our new parameters.ini file
working with git. putting the site to github.
Now we need to put the site to github I will show you here the NetBeans integration with Git, but I really prefer the command line way from Git Bash (MsysGit). First I will create a repository at Github. I’ll name FirstSymfony2App.
Next we’ll add a .gitignore file to our project. But what is to ignore actually ? Well I didn’t knew it either so I found a typical ignore file for Symfony2 project. So I found it in http://github.com/github/gitignore/blob/master/Symfony2.gitignore.
# Bootstrap app/bootstrap* # Symfony directories vendor/* */logs/* */cache/* web/uploads/* web/bundles/* # Configuration files app/config/parameters.ini
Copy it and create this file in our project.
Now we can initialize the Git repository directly from NetBeans. Select the project. Right click go to Versioning –> Initialize Git Repository.
- Now we can add the files to Git by “Git –> Add” command.
- Also we can commit now by right click Project –> “Git –> Commit”.
- Also we can see already made commits by “Git –> Show History” command
Now lets push the contents of our site to Github. First we’ll need to use a remote site to which to push. Ok let’s execute Git –> Remote –> Push command.
That’s all folks, our project is on Github. You can see it here https://github.com/Monomachus/FirstSymfony2App
PULLING Project From GiTHUB AND RUNNING IT
Now let’s see the perspective of another developer who wants to use/participate in the project. For the sake of the experiment I will delete all the sources and will use MsysGit to do all Git-related stuff, though I think I could somehow use NetBeans for it.
I will clone the repository directly into XAMPP server, htdocs folder. Also I will name the folder FirstApp to avoid specific problems. Using Git Bash tool run this command
$ git clone https://Monomachus@github.com/Monomachus/FirstSymfony2App.git FirstApp
Import the project into NetBeans using File –> Open Project command. Now start Apache and MySql and run the project. We will also need to specify the project URL : http://localhost/FirstApp/web/app_dev.php .
Now we get an error:
Warning: require_once(D:\xampp_server\htdocs\FirstApp\web/../app/bootstrap.php.cache) [function.require-once]: failed to open stream: No such file or directory in D:\xampp_server\htdocs\FirstApp\web\app_dev.php on line 17 Fatal error: require_once() [function.require]: Failed opening required 'D:\xampp_server\htdocs\FirstApp\web/../app/bootstrap.php.cache' (include_path='.;D:\xampp_server\php\PEAR') in D:\xampp_server\htdocs\FirstApp\web\app_dev.php on line 17
This error is caused by the fact that in our .gitignore file there is this line app/bootstrap* and this means that our bootstrap.php.cache file was ignored and not committed to the Github. So the question is how can we regenerate this file ? Well, thanks to Beeton from IRC channel #symfony from Freenode, I found out that we can generate it using the
php bin/vendors install
command and that vendor/bundles/Sensio/Bundle/DistributionBundle/Resources/bin/build_bootstrap.php is the file that actually creates it.
But before you run that command please note that we also do not have the app/config/parameters.ini file because it is also in our .gitignore file. Is it really a good idea ? Yes it is if you work with other people, it means that your MySql database configuration can actually differ from your mate’s configuration.
So where do you get the sample file, well almost always in open source world the answer is Github. The link to the sample file https://github.com/symfony/symfony-standard/blob/v2.0.9/app/config/parameters.ini
Copy that file and add it to the app/config folder. Modify it and than run the command php bin/vendors install
$ php bin/vendors install > Installing/Updating symfony Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/symfony'... remote: Counting objects: 109718, done. remote: Compressing objects: 100% (35141/35141), done. remote: Total 109718 (delta 68210), reused 102521 (delta 62139) Receiving objects: 100% (109718/109718), 16.38 MiB | 3.49 MiB/s, done. Resolving deltas: 100% (68210/68210), done. f842739d58b649ffbe6543b2eff520327373029d HEAD is now at 3e9d937 updated VERSION for 2.0.9 > Installing/Updating twig Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/twig'... remote: Counting objects: 9859, done. remote: Compressing objects: 100% (2606/2606), done. remote: Total 9859 (delta 6399), reused 9540 (delta 6122) Receiving objects: 100% (9859/9859), 1.28 MiB | 444 KiB/s, done. Resolving deltas: 100% (6399/6399), done. 96596d5c7f6920dc59985c1cba531ae20715baf4 HEAD is now at 5bba149 prepared the 1.5.1 release > Installing/Updating monolog Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/monolog'... remote: Counting objects: 1384, done. remote: Compressing objects: 100% (548/548), done. remote: Total 1384 (delta 748), reused 1322 (delta 695)Receiving objects: 94% ( Receiving objects: 96% (1329/1384), 52.00 KiB | 90 KiB/s Receiving objects: 100% (1384/1384), 174.72 KiB | 90 KiB/s, done. Resolving deltas: 100% (748/748), done. 8e11234066280685e903ea6dcc0d304cd1aec9b9 HEAD is now at b704c49 Only send FirePHP headers to browser advertising support for it in their user agent > Installing/Updating doctrine-common Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/doctrine-common'... remote: Counting objects: 57783, done. remote: Compressing objects: 100% (14404/14404), done. remote: Total 57783 (delta 40513), reused 57588 (delta 40349) Receiving objects: 100% (57783/57783), 15.34 MiB | 834 KiB/s, done. Resolving deltas: 100% (40513/40513), done. 38c854c37d20b1f67c979772089b2cd30908bcb6 HEAD is now at b886898 Release 2.1.4 > Installing/Updating doctrine-dbal Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/doctrine-dbal'... remote: Counting objects: 59701, done. remote: Compressing objects: 100% (15249/15249), done. remote: Total 59701 (delta 41906), reused 59291 (delta 41520)Receiving objects: Resolving deltas: 100% (41906/41906), done. 2a9e9943f33610bfde4637abeafe00edd201803c HEAD is now at ae358bd Merge remote branch 'origin/2.1.x' into 2.1.x > Installing/Updating doctrine Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/doctrine'... remote: Counting objects: 69262, done. remote: Compressing objects: 100% (17611/17611), done. remote: Total 69262 (delta 48424), reused 68330 (delta 47567) Receiving objects: 100% (69262/69262), 17.08 MiB | 2.61 MiB/s, done. Resolving deltas: 100% (48424/48424), done. febfe35c2315a20534630aa9e5b9c72a0047f569 HEAD is now at da0e343 Release 2.1.5 > Installing/Updating swiftmailer Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/swiftmailer'... remote: Counting objects: 9620, done. remote: Compressing objects: 100% (3288/3288), done. remote: Total 9620 (delta 5536), reused 9458 (delta 5388) (9524/9620), 4.93 MiB | 876 KiB/s Receiving objects: 100% (9620/9620), 5.04 MiB | 889 KiB/s, done. Resolving deltas: 100% (5536/5536), done. 0243dc3b18c784adda72e71f6bd34f11fef69b4b HEAD is now at 982b4c9 prepared the 4.1.5 release > Installing/Updating assetic Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/assetic'... remote: Counting objects: 4714, done. remote: Compressing objects: 100% (1665/1665), done. remote: Total 4714 (delta 2787), reused 4492 (delta 2600)Receiving objects: 99% Receiving objects: 100% (4714/4714), 540.18 KiB | 251 KiB/s, done. Resolving deltas: 100% (2787/2787), done. e15a13fe4782caa6566c7f0c34ae10badaf85361 HEAD is now at f829ad2 updated changelog > Installing/Updating twig-extensions Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/twig-extensions'... remote: Counting objects: 297, done. remote: Compressing objects: 100% (148/148), done. remote: Total 297 (delta 108), reused 270 (delta 84)Receiving objects: 7% (21/ Receiving objects: 8% (24/297) Receiving objects: 100% (297/297), 40.25 KiB, done. Resolving deltas: 100% (108/108), done. a05ab5ed18a51ae45f3dcc2d0c4ec9b3a6386987 > Installing/Updating metadata Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor/metadata'... remote: Counting objects: 249, done. remote: Compressing objects: 100% (178/178), done. remote: Total 249 (delta 118), reused 128 (delta 32)Receiving objects: 91% (227 Receiving objects: 93% (232/249) Receiving objects: 100% (249/249), 33.70 KiB, done. Resolving deltas: 100% (118/118), done. 7d97f1725063f04ef1894a86740b261daf229b89 HEAD is now at 8717ad2 release 1.0.0 > Installing/Updating SensioFrameworkExtraBundle Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor//bundles/Sensio/Bundle/Fram eworkExtraBundle'... remote: Counting objects: 1064, done. remote: Compressing objects: 100% (518/518), done. remote: Total 1064 (delta 582), reused 969 (delta 500)Receiving objects: 94% (1 Receiving objects: 96% (1022/1064), 132.00 KiB | 74 KiB/s Receiving objects: 100% (1064/1064), 132.52 KiB | 74 KiB/s, done. Resolving deltas: 100% (582/582), done. 55de01d34c5b95ee07bd511d06e0b171af5fe9ba HEAD is now at 1c7e92f fixed tests config > Installing/Updating JMSSecurityExtraBundle Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor//bundles/JMS/SecurityExtraB undle'... remote: Counting objects: 1665, done. remote: Compressing objects: 100% (718/718), done. remote: Total 1665 (delta 880), reused 1595 (delta 810) Receiving objects: 100% (1665/1665), 273.00 KiB | 228 KiB/s, done. Resolving deltas: 100% (880/880), done. 4dc8223afa9a38cc467e0a858ef5741e6cc3987d HEAD is now at 541a4c2 Merge pull request #36 from everzet/patch-1 > Installing/Updating SensioDistributionBundle Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor//bundles/Sensio/Bundle/Dist ributionBundle'... remote: Counting objects: 423, done. remote: Compressing objects: 100% (201/201), done. remote: Total 423 (delta 211), reused 414 (delta 206)Receiving objects: 70% (29 Receiving objects: 100% (423/423), 60.86 KiB | 87 KiB/s, done. Resolving deltas: 100% (211/211), done. f00c99854ff161b006a200d8dffa0013981d5373 HEAD is now at 20b66a4 fixed version in composer.json > Installing/Updating SensioGeneratorBundle Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor//bundles/Sensio/Bundle/Gene ratorBundle'... remote: Counting objects: 651, done. remote: Compressing objects: 100% (302/302), done. remote: Total 651 (delta 343), reused 609 (delta 317)Receiving objects: 77% (50 2/651), 76.00 KiB | 130 KiB/s Receiving objects: 100% (651/651), 115.97 KiB | 130 KiB/s, done. Resolving deltas: 100% (343/343), done. 67bf607b41f930f93f2032d069be535ecaa21730 HEAD is now at dd37fc4 merged branch gnomii/use_filesystem_component (PR #88) > Installing/Updating AsseticBundle Cloning into 'D:\xampp_server\htdocs\FirstApp/vendor//bundles/Symfony/Bundle/Ass eticBundle'... remote: Counting objects: 1741, done. remote: Compressing objects: 100% (544/544), done. remote: Total 1741 (delta 1056), reused 1671 (delta 992)Receiving objects: 94% Receiving objects: 100% (1741/1741), 229.34 KiB | 86 KiB/s, done. Resolving deltas: 100% (1056/1056), done. ae7f6f4dc252d37c686584576cc92f07b092d06a HEAD is now at 41b5913 Merge pull request #27 from stof/disable_profiler Installing assets for Symfony\Bundle\FrameworkBundle into D:\xampp_server\htdocs \FirstApp/web/bundles/framework Installing assets for Acme\DemoBundle into D:\xampp_server\htdocs\FirstApp/web/b undles/acmedemo Installing assets for Symfony\Bundle\WebProfilerBundle into D:\xampp_server\htdo cs\FirstApp/web/bundles/webprofiler Installing assets for Sensio\Bundle\DistributionBundle into D:\xampp_server\htdo cs\FirstApp/web/bundles/sensiodistribution Clearing the cache for the dev environment with debug true
After these manipulations we can finally run the sample application.
Today we learned how to create and run your first Symfony2 project and push and pull it to/from Github.
Hope you liked it, if you have any concerns, ideas for posts, suggestions please post it here. Good coding guys!
This is a well done tutorial!!!
ReplyDeleteThanks a lot!
thanks for the detailed tutorial
ReplyDeleteThank you so much!! Very good tutorial!
ReplyDeleteIn the part of Working with git. putting the site to github. where is that I do these steps, and where it do this step Copy and create this file in our project. but this part could detail Configuration git?.
ReplyDeletehelp...!!!
Hello, thanks for the comment. Could you please say what is exactly that you need.
DeleteI need to know is how to do the part of -> Working with git. putting the site to github.
DeleteI do with:
# Bootstrap
app/bootstrap*
# Symfony directories
vendor/*
*/logs/*
*/cache/*
web/uploads/*
web/bundles/*
# Configuration files
app/config/parameters.ini
as I do the Copy it and create this file in our project.
need to create a repository on github?. used to work with git and github to the site, as I lay gitignore file to my project?, what should I do with the code you found gitignore?, pa serving Git repository initialized directly from NetBeans?.
ReplyDeletethanks for the answers.
Basically you add that content to a file and name it .gitignore, than you initialize your repository, you can do it either from NetBeans or from msysgit, I prefer msysgit in this case. Than you add everything to git and make your first commit.
DeleteIt is done by 2 commands basically
git init
and
git add .
where dot represents every file in your repository, but git will ignore any file is enumerated in .gitignore file.
thanks, but do not understand, tell me if it is important all over git.
DeleteI am confused about where to put .gitignore. Does it go in the root of the Symfony2 website? As in C:\xampp\htdocs\Symfony\.gitignore ?
ReplyDeleteNo its in the root of your NetBeans project, that you will commit to the Git repository.
DeleteI appreciate the tutorial very much. I'm new to Symfony2 and Git.
ReplyDeleteWhen I try to add to the remote repository (In NetBeans, right-click on project > Git > Remote > Push), I cannot get it to recognize the repository. I get Cannot connect to the remote repository at https://amnotafraid@github.com/amnotafraid/FirstApp.git
Have I botched up the repository? Do I have the wrong repository URL?
Any help very much appreciated.
Well first of all you need to assure that you have the latest version of NetBeans and Git. Because the problem can be from 2 different places:
Delete1. NetBeans - specifically version 7.1.2 is better with Git than 7.0 as an example.
2. The problem could be in your git version. The git instance installed on your local machine. Assure yourself that you have the latest version.
Great tut, but when i try to push, at the 2nd-point (Select Local Branches) is blank and there is an error "No branch selected". Any solution? I have netbeans 7.1.2, and my git release is : (Git-1.7.11-preview20120710)
ReplyDeleteGo to the project folder from command line and try the command
Deletegit branch
What is the output?
there is no output.. nothing happens
DeleteOk. Recently NetBeans 7.2 came out. Install it and see if you got the same problem, and post the screenshot of the problem please.
Deleteplease help me to create a simple login page in symfony2 and netbeans using a database... i m new to symfony. plz help me...
ReplyDeleteCan I do this using netbeans 6.8 and symfony 1.0 ?
ReplyDeleteI don't know specifically about NB 6.8, but there is a plugin for PHP Symfony Framework, in Tools->Plugins for 7.2, try to see there if it is available for NB 6.8, although in your place I would definitely make an upgrade.
Deletethanks a lot
ReplyDelete