##1.Hello Word
####(0).symony的安装
首先要保证php-cli可用,没有请自行安装(symfony要求php在5.0版本以上
#安装composer包依赖管理工具,然后就可以使用composer这个命令了
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
#安装symfony
#我安装的是2.6版本,然后安装到当前目录的symfony下
composer create-project symfony/framework-standard-edition ./symfony
####(00).symfony新的安装方式
#linux和mac os
sudo curl -LsS http://symfony.com/installer -o /usr/local/bin/symfony
sudo chmod a+x /usr/local/bin/symfony
#windows
php -r "readfile('http://symfony.com/installer');" > symfony
#然后执行如下即可(需要翻山越岭。。)
symfony new my_project
#将域名指向网站后可能出现报错,提示需要更改logs和cache文件夹的权限,直接更改所有者为apache(推荐线上),本地权限改为777
sudo chmod -R 777 app/logs
sudo chmod -R 777 app/cache
####(1).php-cli运行网站
#在网站根目录下执行,-vvv代表将请求信息都打印出来(此处根目录是symfony里面)
php app/console server:run -vvv
####(2).创建一个新Bundle
app/console generate:bundle
然后输入Scourgen/SppBundle,得到的是在src目录下创建一个Scourgen目录,再在其下创建一个SppBundle目录防止项目
#生成bundle后需要清理一下缓存
php app/console cache:clear --env=prod
php app/console cache:clear --env=dev
#测试
编辑Controller下的DefaultController;hello改成hh
php app/console server:run -vvv启动服务
访问http://127.0.0.1:8000/app_dev.php/hh/abc
或者http://127.0.0.1:8000/hh/abc
####(3).如果建立bundle时选择的是annoation后期转yml方法
#entity
php app/console doctrine:mapping:convert --namespace="xxxBundle\Entity\Blog"
yml src/xxxBundle/Resources/config/doctrine
#router
app/console router:convert yml destination-dir/
#如下命令可查看现有的路由
app/console router:debug
app/console router:dump-apache(任选一个)
#2.实际项目流程
####(1).从头创建一个新项目(参考上面)
sudo curl -LsS http://symfony.com/installer -o /usr/local/bin/symfony
sudo chmod a+x /usr/local/bin/symfony
symfony new my_project
sudo chmod -R 777 app/logs
sudo chmod -R 777 app/cache
app/console generate:bundle --namespace=Xxx/XxxBundle --format=yml
php app/console cache:clear --env=prod
php app/console cache:clear --env=dev
#然后设置Apache、nginx的域名指向到(项目根目录/web)下
然后使用如下测试访问
http://域名/hello/jobeet or http://域名/app_dev.php/hello/jobeet
####(2).数据库的生成
#编辑app/config/parameters.yml(数据库配置)
#如果没有预先创建数据库,执行如下创建
app/console doctrine:database:create
#添加数据库结构文件
创建目录src/xxxBundle/Resources/config/doctrine
在下面创建如Category.orm.yml的文件
#生成entity文件(model文件)
app/console doctrine:generate:entities XxxXxxBundle
#生成数据库的表
app/console doctrine:schema:update --force
####(3).生成测试数据
DoctrineFixturesBundle文档
#安装DoctrineFixturesBundle
1.编辑composer.json
{
"require": {
"doctrine/doctrine-fixtures-bundle": "2.2.*"
}
}
composer update
编辑app/AppKernel.php,在测试环境注册这个bundle,添加如下语句
$bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
2.创建文件夹src/Xxx/XxxBundle/DataFixtures/ORM
例:mkdir -p src/Spk/WebBundle/DataFixtures/ORM
在此文件夹下添加LoadCategoryData.php等数据生成文件(具体格式参照文档)
执行命令生成数据
app/console doctrine:fixtures:load
####(4).生成具备CRUD功能的控制器和表单
解释是使用entity SpkWebBundle:Job,路由前缀是spk_job,添加“write”方法(包括new, update, and delete方法),格式使用yml
app/console doctrine:generate:crud --entity=SpkWebBundle:Job --route-prefix=spk_job --with-write --format=yml
然后可访问如下这些等等
#需要修改下src/Xxx/XxxBundle/Resources/config/routing.yml里面的spk_job为job
http://yymm.com/app_dev.php/job
http://yymm.com/app_dev.php/job/new
http://yymm.com/app_dev.php/job/1/show