symfony2快速指南(二)
来源:互联网 发布:网络用语lg是什么意思 编辑:程序博客网 时间:2024/05/29 03:59
symfony2中的Bundle
symfony在它的第二版中引入了Bundle的概念,根据我现在粗浅的理解,这里的bundle可以看做是你所创建的web service的一个抽象。另外bundle还可以作为一个库的概念,供其他人使用。你再网上搜索“symfony2 引入第三方bundle”,就可以看到大家有很多教程再将这个事情。
好了,我今天要写的,并不是让你如何写一个bundle供别人使用;而是创建一个用来有访问页面的bundle。
创建自己的bundle
symfony2是一个快速开发工具,它提供了很多工具,可以自动生成一些符合symfony2自己的东西,这样免去了建站者的麻烦。创建一个bundle,可以使用以下命令:
php app/console generate:bundle --namespace=Blogger/BlogBundle --format=yml
很简单的一个命令,不是吗?
–namespace后面跟的是你要创建的项目名,还有bundle名。创建好之后,生成的相应代码和文件将被保存在./src/Blogger/BlogBundle
下面。
–format=yml 这句将制定,在创建controller时,使用yml的配置文件的方式,对url–controller路由进行配置。symfony2除了这种方式,还提供了annotation的方式来对路由进行定义,相信使用过java spring的同学一定不会对annotation陌生。但是我个人还是更喜欢使用配置文件的方式,因为这种方式更集中,更方便于debug。annotation的模式把路由定义跟代码放到了一起,虽然看起来减少了项目中的文件数目,但是你需要不停的在项目中搜索才能定位到你的url跟你的controller的对应关系,而通过配置文件,这些事情变得一目了然。
在我的项目中,我只有在entity中使用了annotation的这种方式,其他的一概使用配置文件的方法。
文件架结构
创建数据库实体对象
就像创建一个bundle一样,创建数据库实体也有相应的命令。
php app/console doctrine:generate:entity
该命令是交互式的,也就是说运行过程中你需要回答它提出的一些问题。它会根据你的回答来创建你所需要的实体。
我这里的情况比较简单,根据提示,把相应的数据表的各个字段输入进去就可以了。
数据库对象的增删改查
php app/console generate:doctrine:crud
别的不多说,就这一条命令搞定。
可以看到symfony2使用的是doctrine来操作数据的。所以在你的symfony2项目开发中,少不了在网上搜索一些关于doctrine的东西,在这里就不多说了。等项目终于到了,再慢慢了解吧。
不过需要再说一句的是,当你在运行这个项目前,请确认你在数据库中已经创建了相应的数据库跟数据表,如果没有,可以使用下面这两个命令。
php app/console doctrine:database:create#根据所创建的实体,来在数据库中创建数据表php app/console doctrine:schema:update --force
项目运行
好了,到现在为止,你一行代码没有写。尝试着运行下自己的项目看看吧。
php app/console server:run
前后端分离 , asset管理
在你的项目开发中,免不了希望前后端分离的。即使没有前后端分离,你可能会引入一些css或者js的库来对你的网页进行美化。
在symfony2中这些都是通过asset这个库来管理的。
如果你是按照我上面这个步骤来创建项目的,那么在app/config/config.yml
中你会发现一个叫做“assetic configuration”的字段。
#Assetic Configurationassetic: ...... assets: base_lib_js: inputs: - '@BloggerBlogBundler/Resources/public/js/jquery.js' - '@BloggerBlogBundler/Resources/public/lib/bootstrap/js/bootstrap.js' - '@BloggerBlogBundler/Resources/public/lib/bootstrap/js/bootstrap-table.js' - '@BloggerBlogBundler/Resources/public/lib/angular/angular.min.js' - '@BloggerBlogBundler/Resources/public/lib/angular/angular-locale_zh-cn.js' - '@BloggerBlogBundler/Resources/public/lib/angular/angular-resource.min.js' - '@BloggerBlogBundler/Resources/public/lib/angular/ui-bootstrap-tpls.min.js'
不要忘记把这些库也放到相应的文件夹下。
好了,再次运行你的项目前不要忘了
php app/console asset:dump
这条命令会把一些使用到css或者js文件拷贝到你的web目录下,毕竟web目录才是你的项目的入口。
千万不要忘记,每一次更新css或者js时,都要执行一下上面的命令,否则你的更新将不会生效。
–env
上面的每条命令都接受--env
这个选项,用来指定是生产环境还是开发环境。如果没有指定的话,默认是开发环境。
拿上面的asset命令来说。
php app/console asset:dump --env=prod
该命令对开发环境进行asset更新。
项目部署
好了,项目开发完了,你不会再使用symfony2自带的这个web服务器了。需要注意的是你的web
文件夹才是nginx需要的root地址。
- symfony2快速指南(二)
- Symfony2快速指南(一)
- Oracle Rman快速入门指南(二)
- Laravel RESTful快速部署指南(二)
- UnityShader快速上手指南(二)
- Oracle WebCenter 11g 快速开发指南--翻译(二)
- Secure Delivery Center快速入门指南(二):交付软件包
- LaTeX快速指南(二)LaTex的结构
- Symfony2
- Symfony2
- Word公式编辑器快速上手指南(二)
- Django官方教程(二)【快速安装指南】
- symfony2 Event Listener(2)
- Boost.Interprocess使用手册翻译之二:快速指南 (Quick Guide for the Impatient)
- Boost.Interprocess使用手册翻译之二:快速指南 (Quick Guide for the Impatient)
- Boost.Interprocess使用手册翻译之二:快速指南 (Quick Guide for the Impatient)
- Boost.Interprocess使用手册翻译之二:快速指南 (Quick Guide for the Impatient)
- Echo指南(二)
- Network: Over-Wall
- vs2012快捷键
- 基于http协议的app缓存机制
- java学校笔记(IO字符流)
- Tableau desktop(二)--数据连接及数据字段
- symfony2快速指南(二)
- 开始iOS 7中自动布局教程(一、二)
- Jquery插件编写,关于实现左侧目录列表关闭开启
- Linux - 终端
- JavaScript特效实例012-网页拾色器
- 算法导论--红黑树
- Linux常用命令总结(三)
- 第11周 【项目2 - 职员有薪水了】(2)
- Windows线程消息队列