本文实例讲述了Symfony2框架创建项目与模板设置的方法。分享给大家供大家参考,具体如下:
环境准备与概览
习惯于在windows使用netbean编辑器并使用virtualBox虚拟centos系统, 预将Nginx+PHP-fpm+MysqL,当然apache也是不错的选择, 使用http://symfony在windows与centos上作为开发域名。
一、下载与环境设置
1. 如何于centos上面建立开发环境不再详述, 当然也可以在windows上面建立开发环境。
2. 关于使用 symfony代替127.0.0.1 在liunx系统中修改/etc/hosts文件,win7系统中修改 C:\Windows\System32\drivers\etc\host 文件(需要用管理员权限打开)
加入类似于IP 别名1 别名2的内容即可, 如:
3.手动下载symfony2,也可以参照这个页面用Composer 进行安装。http://symfony.com/doc/current/book/installation.html
唯一需要注意的是: app/cache 和app/logs目录需要设置成777权限。windows的开发环境应该不存在这个问题。
4. 修改apache 或者Nginx配置文件symfony域名指向下载的symfony文件的web目录。
此时应该可以通过 http://symfony/app_dev.PHP 访问到symfony的默认页面, 有几个demo可以参照学习。
app_dev.PHP 默认加载了一个开发工具条在下面, 显示了当前页面的一些信息, 极大地方便了程序的调试, 只有当环境变量为dev时才会显示。
5. 使用composer安装时, 会提示输出MysqL等相关信息, 需要修改这些信息, 或者是直接下载的文件, 可以进入页面的“Configure” 进行相关设置。
Bundles(也许可以称之为包, 束, 程序集,或者项目, 还是用英文吧)是symfony的基础东东, 一个个分享出来可重复利用的代码封装, 甚至于symfony本身是作为一个bundles运行的。 包括控制器、模块、模板, 甚至于图像与js,css样式表等资源。 很杂乱的东西, 区别不同的bundles使用了PHP5.3以后的命名空间,大部分cpenal,da虚拟主机好像只有PHP5.2版本吧, 无法运行symfony2了。
二、创建一个Bundle
在下面的例子中将创建一个博客, Symfony 提供了大量工具来快速地创建项目。 比如我们可以用它来快速创建一个博客的基础bundle.
运行后直接采用所有的默认设置即可。 可以方便地创建我们所需要的基本控制器,模块与模板等。 包含了下面的行为:
注册Bundles
在symfony中所有使用的bundles都要求先被注册, 有些bundles只会使用于开发测试环境(dev or test), 如前文提及的开发工具条. 下面这断代码显示了bundles创建命令如何注册BloggerBlogBundle这个bundle.
路由
作为一个框架, 路由功能被bundler创建器创建于app/config/routing.yml, symfony是用yml格式来保存配置信息。
prefix前缀选项允许我们可以将其放置于如blog、news等子目录下。 文件 除了以上配置文件外, 其它大部分文件生成为src目录下, 如同大部分mvc框架。 在src下生成Blogger目录, 并有BlogBundle子目录存放着各种相关东东。不同的是类似于blogger的目录对应着PHP命名空间。
默认控制器
Bundle生成器在src下面生成了默认了控制器。 通过访问: http://symfony/app_dev.PHP/hello/world 可以看到简单的问候。 关于这个页面是如何生成:
路由
还是路由, 不同的是前面的路由是在整个程序里面注册使用, 这里的路由是控制具体页面使用, src/Blogger/BlogBundle/Resources/config/routing.yml 控制了BloggerBlogBundle, 包含以下程序片断:
参数: 进行url检测, 符合/hello/{name}结构的任意值将被赋予给{name}, 方式: 没有对形式进行限制, 理论可以put,get,post,delete所有的操作都可以进行。 后续: 如果符合以上两条, 那么{name}将会传导至特定文件,以上为src/Blogger/BlogBundle/Controller/DefaultController.PHP文件中的default控制器的index行为将被使用。
控制器
在默认生产的bundler中, 控制器行为相当简单, {name}参数被传入并被传出到模板文件:
BloggerBlogBundle:Default:index.html.twig 会使用 BloggerBlogBundle views文件夹中 Default文件夹下面index.html.twig模板文件.
模板文件
以上就是symfony的整个mvc流程, 这么多文件的作用只是输出一个 “hello world”. 理论上不用bundler创建器, 只是手动创建上述文件也可以实现相同效果。花费的时间就多了去了。
回到正题, 我们是创建博客系统, 所以不需要 hello world,
1.移除控制器 src/Blogger/BlogBundle/Controller/DefaultController.PHP 2.移除模板 src/Blogger/BlogBundle/Resources/views/Default/ 3.最后移除路由 src/Blogger/BlogBundle/Resources/config/routing.yml 整个世界清静了。
三、让我们开始创建博客的主页
Twig的优点
在symfony中我们可以使用 Twig和PHP(这不是废话嘛)作为模板。使用Twig的以下优点:
1. 快: 是编绎过的PHP类, 可以占用更少的资源
2. 简洁:想想看要打, Twig输入的内容要少很多。
3. 可继承: 非常cool的一个功能
4. 安全: 转义功能默认开启, 甚至还可以为重要代码提供沙盒功能。
5. 可扩展: 需要额外的定制功能, 可以随时扩展
更多内容, 请移步:http://twig.sensiolabs.org/
可继承是一个非常好的优点, 我们将使用三级继承结构来定制这个模板, 这将允许我们在三个不同层级修改模板, 方便自由定制。