Bundle in Symfony2
Symfony hat das Konzept des Bundles in seiner zweiten Version eingeführt. Nach meinem derzeitigen oberflächlichen Verständnis kann das Bundle hier als der von Ihnen erstellte Webdienst einer Abstraktion betrachtet werden. Darüber hinaus kann das Bundle auch als Bibliothekskonzept für andere Personen verwendet werden. Wenn Sie online nach „Symfony2 führt Drittanbieter-Bundle ein“ suchen, werden Sie feststellen, dass es viele Tutorials dazu gibt.
Okay, was ich heute schreiben möchte, ist nicht, Ihnen zu sagen, wie Sie ein Bundle schreiben, damit andere es verwenden können; es geht darum, ein Bundle für den Zugriff auf die Seite zu erstellen.
Erstellen Sie Ihr eigenes Bundle
Symfony2 ist ein schnelles Entwicklungstool. Es bietet viele Tools, die automatisch etwas generieren können, das mit Symfony2 selbst konsistent ist, wodurch die Probleme von Website-Erstellern beseitigt werden. Um ein Bundle zu erstellen, können Sie den folgenden Befehl verwenden:
<code><span>php</span><span>app/console</span><span>generate:bundle</span><span>-</span><span>-</span><span>namespace=Blogger/BlogBundle</span><span>-</span><span>-</span><span>format=yml</span></code>
Ein sehr einfacher Befehl, nicht wahr? Auf
–namespace folgen der Name des Projekts, das Sie erstellen möchten, und der Bundle-Name. Nach der Erstellung werden der entsprechende generierte Code und die Dateien unter ./src/Blogger/BlogBundle
gespeichert.
–format=yml Dieser Satz gibt an, dass beim Erstellen des Controllers die YML-Konfigurationsdatei verwendet wird, um die URL-Controller-Route zu konfigurieren. Zusätzlich zu dieser Methode bietet Symfony2 auch eine Annotationsmethode zum Definieren von Routen. Ich glaube, dass Studenten, die Java Spring verwendet haben, mit Annotationen vertraut sein werden. Ich persönlich bevorzuge jedoch die Konfigurationsdateimethode, da diese Methode zentralisierter und einfacher zu debuggen ist. Der Annotationsmodus fügt Routendefinitionen und Code zusammen. Obwohl er die Anzahl der Dateien im Projekt zu reduzieren scheint, müssen Sie ständig im Projekt suchen, um die entsprechende Beziehung zwischen Ihrer URL und Ihrem Controller zu finden klar auf einen blick.
In meinem Projekt verwende ich nur die Annotationsmethode in der Entität und die Konfigurationsdateimethode wird in allem anderen verwendet.
文件夹 | 说明 |
---|---|
Controller | 包含了所有controller的代码,这些controller是为了处理客户端发来的请求的。 |
Entity | 其中每个entity代表了一个数据库中的数据表。 |
Form | 表单类,该类主要是为了么个entity生成html的表单,为了后面的增删改查。 |
Resource | 这里面包含了所有的js/css/网页/文档。 |
Security | 如果对用户需要访问进行细粒度的控制,那么就要在这里条件相应的调整了。由于这一次我并没有太用到这个,所以不会做太多介绍。 |
Tests | 显然,里面都是用来测试的。symfony2的测试使用的是phpunit。如果没有安装还是需要自己手动安装一下的。 |
Validator | 这里面包含的对一些字段的验证信息。这一次,我的表单中包含了json数据的输入,我在这里添加了json schema以对用户输入的json数据进行验证。 |
创建数据库实体对象
就像创建一个bundle一样,创建数据库实体也有相应的命令。
<code>php app/console doctrine:<span>generate</span>:<span>entity</span></code>
该命令是交互式的,也就是说运行过程中你需要回答它提出的一些问题。它会根据你的回答来创建你所需要的实体。
我这里的情况比较简单,根据提示,把相应的数据表的各个字段输入进去就可以了。
数据库对象的增删改查
<code>php app/console <span>generate</span>:doctrine:crud</code>
别的不多说,就这一条命令搞定。
可以看到symfony2使用的是doctrine来操作数据的。所以在你的symfony2项目开发中,少不了在网上搜索一些关于doctrine的东西,在这里就不多说了。等项目终于到了,再慢慢了解吧。
不过需要再说一句的是,当你在运行这个项目前,请确认你在数据库中已经创建了相应的数据库跟数据表,如果没有,可以使用下面这两个命令。
<code>php app/console doctrine:database:<span><span>create</span> #根据所创建的实体,来在数据库中创建数据表 php app/console doctrine:<span>schema</span>:<span>update</span> --force</span></code>
项目运行
好了,到现在为止,你一行代码没有写。尝试着运行下自己的项目看看吧。
<code>php app/console <span>server</span>:run</code>
前后端分离 , asset管理
在你的项目开发中,免不了希望前后端分离的。即使没有前后端分离,你可能会引入一些css或者js的库来对你的网页进行美化。
在symfony2中这些都是通过asset这个库来管理的。
如果你是按照我上面这个步骤来创建项目的,那么在app/config/config.yml
中你会发现一个叫做“assetic configuration”的字段。
<code>#Assetic Configuration assetic: ...... assets: base_lib_js: inputs: -<span><span>'@BloggerBlogBundler/Resources/public/js/jquery.js'</span></span> -<span><span>'@BloggerBlogBundler/Resources/public/lib/bootstrap/js/bootstrap.js'</span></span> -<span><span>'@BloggerBlogBundler/Resources/public/lib/bootstrap/js/bootstrap-table.js'</span></span> -<span><span>'@BloggerBlogBundler/Resources/public/lib/angular/angular.min.js'</span></span> -<span><span>'@BloggerBlogBundler/Resources/public/lib/angular/angular-locale_zh-cn.js'</span></span> -<span><span>'@BloggerBlogBundler/Resources/public/lib/angular/angular-resource.min.js'</span></span> -<span><span>'@BloggerBlogBundler/Resources/public/lib/angular/ui-bootstrap-tpls.min.js'</span></span></code>
不要忘记把这些库也放到相应的文件夹下。
好了,再次运行你的项目前不要忘了
<code>php app/console asset:<span>dump</span></code>
这条命令会把一些使用到css或者js文件拷贝到你的web目录下,毕竟web目录才是你的项目的入口。
千万不要忘记,每一次更新css或者js时,都要执行一下上面的命令,否则你的更新将不会生效。
–env
上面的每条命令都接受--env
这个选项,用来指定是生产环境还是开发环境。如果没有指定的话,默认是开发环境。
拿上面的asset命令来说。
<code><span>php app/console asset:dump --env</span>=<span>prod</span></code>
该命令对开发环境进行asset更新。
项目部署
好了,项目开发完了,你不会再使用symfony2自带的这个web服务器了。需要注意的是你的web
文件夹才是nginx需要的root地址。
以上就介绍了symfony2快速指南(二),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。