symfony2 のバンドル
symfony は、その 2 番目のバージョンでバンドルの概念を導入しました。私の現在の表面的な理解によれば、ここでのバンドルは作成した Web サービスの抽象化と見なすことができます。さらに、バンドルは他の人が使用できるライブラリの概念としても使用できます。 「symfony2 でサードパーティバンドルが導入されました」をオンラインで検索すると、これを行う方法に関するチュートリアルがたくさんあることがわかります。
今日私が書きたいのは、他の人が使用できるようにバンドルを作成する方法を説明することではなく、ページにアクセスするためのバンドルを作成することです。
独自のバンドルを作成する
symfony2 は、symfony2 自体に準拠したものを自動的に生成できる多くのツールを提供する迅速な開発ツールであり、ウェブサイトビルダーの手間を省きます。バンドルを作成するには、次のコマンドを使用できます:
<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>
非常に簡単なコマンドですね。
– 名前空間の後に、作成するプロジェクトの名前とバンドルの名前が続きます。作成後、対応する生成されたコードとファイルは ./src/Blogger/BlogBundle
の下に保存されます。
–format=yml この文は、コントローラーを作成するときに、yml 構成ファイルを使用して url-controller ルートを構成します。このメソッドに加えて、symfony2 はルートを定義するためのアノテーションメソッドも提供しています。Java Spring を使用したことのある学生はアノテーションに精通していると思います。ただし、私は個人的には構成ファイルを使用することを好みます。これは、この方法の方が集中化されており、デバッグが容易であるためです。アノテーション モードでは、ルート定義とコードがまとめられるため、プロジェクト内のファイルの数が減るように見えますが、設定ファイルを通じて URL とコントローラーの対応関係を見つけるためにプロジェクト内を常に検索する必要があります。一目瞭然。
私のプロジェクトでは、エンティティでアノテーション メソッドのみを使用し、他のすべてでは構成ファイル メソッドを使用します。
フォルダー | 説明 |
---|---|
コントローラー | には、クライアントからのリクエストを処理するために使用されるすべてのコントローラーのコードが含まれています。 |
エンティティ | 各エンティティはデータベース内のデータテーブルを表します。 |
Form | フォーム クラス。このクラスは主に、エンティティの HTML フォームを生成し、後続の追加、削除、変更、チェックを行うために使用されます。 |
リソース | これには、すべての js/css/web ページ/ドキュメントが含まれます。 |
セキュリティ | ユーザー アクセスをきめ細かく制御する必要がある場合は、ここでの条件をそれに応じて調整する必要があります。今回はあまり使っていないのであまり紹介しません。 |
テスト | 明らかに、内部にあるものはすべてテスト用です。 Symfony2 は phpunit を使用してテストされます。インストールされていない場合でも、手動でインストールする必要があります。 |
Validator | これには、いくつかのフィールドの検証情報が含まれています。今回、フォームには json データの入力が含まれており、ユーザーが入力した json データを検証するためにここに 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教程有兴趣的朋友有所帮助。