<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                說明:本篇學習筆記是學習http://www.chrisyue.com/symfony-in-action-day-3.html 記錄的,作者用的是symfony2.7-的版本,本篇用的是symfony3的版本。 用 KnpPaginatorBundle 實現翻頁 我們已經創建好了新聞的首頁。今天我們來實現添加新聞并且顯示新聞的功能,并且學會使用 [Composer](http://getcomposer.org) 添加第三方 Bundle 來加速開發。 創建業務數據模型 新聞數據算是我們業務模型里必不可少的模型之一。根據我們之前對需求的分析,我們可以很容易想到,新聞模型News需要的屬性: 標題屬性 文本屬性 接下來,我們要在 AppBundle 里創建它,但是這些數據還需要一個持久層來保存數據,例如之前配置的 Mysql。目前流行的開發方式,無論是 Java 還是 ROR,都會使用 ORM 將數據庫字段和類屬性關聯起來。 Symfony 框架本身并不包含 ORM 工具(嚴格意義上來說,Symfony 框架,即 FrameworkBundle,不包含 ORM,安全組件,模板引擎,日志工具,郵件組件等一系列工具),只不過 Symfony installer 將一些推薦的,Web 開發常用的工具,都默認安裝了。如果你已經知道如何用 Mysql 來存儲/獲取數據,也不一定非要用 ORM。這里我們為了快速開發,也為了省一些精力,就使用默認提供的 Doctrine2 ORM,它會給我們的開發帶來許多便利。 注:ORM(Object Relational Mapping)用元數據來描述對象映射細節 決定了使用 Doctrine2,我們除了定義好 News 類,還需要寫配置文件,讓 Doctrine2 ORM 將 News 類同數據庫某個表關聯起來。聽起來要做的工作不少,不過且慢,DoctrineBundle 里自帶的代碼生成工具能讓我們的開發再快一點點: `$php bin/console doctrine generate:entity ` ![](https://box.kancloud.cn/7c8d895eba60ee7b70b588b85b97c393_1134x502.png) 此時會有歡迎提示出現,并且讓你輸入一個模型的“短名字”,為什么說是要輸入短名字?News 并不是全名,全名應該是包含命名空間的,比如我們的 News 全名應該是 AppBundle\Entity\News,Entity 是什么?Entity 只是一個習慣性叫法。在 Doctrine2 的世界里,只要是 ORM 過的模型,都叫 Entity(除此之外還有用 MongoDB 作為存儲方案的 ODM,ODM 過的模型習慣稱之為 Document)。 后面我們就按照他們的提示,分別輸入 ![](https://box.kancloud.cn/96b7c34c5e5fe1de2477fb5956ba6abc_1658x1442.png) 刷新 src/AppBundle 目錄, 多了兩個 目錄,Entity,Repository, 包含了兩個文件:News.php 和 NewsRepository.php。 ![](https://box.kancloud.cn/49263f199527517e4b002248ba9a762d_586x390.png) 打開 News.php 我們可以看到,News 類已經生成好了,并且還有用注解格式寫的 ORM 配置。我的建議是可以用生成代碼工具盡量用,一是快,二是不容易寫錯字。 此時,我們就可以用 DoctrineBundle 的數據庫操作工具來生成數據的數據庫和表了: `$php bin/console doctrine:database:create` Created database `symfonynews` for connection named default $php bin/console doctrine:schema:create ATTENTION: This operation should not be executed in a production environment. Creating database schema... Database schema created successfully! ![](https://box.kancloud.cn/2838780d021da65b55925a52d35b01ab_1070x360.png) 數據庫創建好之后,我們應該創建“新建新聞”頁和“新聞詳情”頁、以及更新我們之前寫的“新聞首頁”。不過且慢,DoctrineBundle 不僅僅能生成 Entity,它還能根據 Entity 直接生成相關的 Controller!這里我們先把之前的 NewsController 類文件刪掉。然后使用下面命令: `$php bin/console doctrine:generate:crud` ![](https://box.kancloud.cn/c21d8ea5960497dfaa9371224d42ffa8_1196x608.png) ![](https://box.kancloud.cn/c5ba8d2b50b3be46cbd0be13e2032047_1326x840.png) ![](https://box.kancloud.cn/00dc547545c3eaac431f1d77470fad38_1238x856.png) 我們會發現,被刪除的 NewsController 又被重新生成,并且多了好多代碼。先不管每個控制器方法里寫了啥,我們先檢查路由配置。我們會發現,一切都很好,除了首頁的路由名字從以前的 news_index 變成了 news,此時我們可以將 news 改回 news_index,也可以考慮將之前的 news_index 定為 news。我們這里選擇后者,畢竟已經為我們定義了一套規則,并且也不賴,何必再去折騰別的命名方式?還好代碼也不多,目前我們只用把首頁模板 default/index.html.twig 里的 news_index 改成 news 就行了。 因為 ![](https://box.kancloud.cn/28c172be5231c9f123672f7cdc1cb94d_1370x538.png) base.html.twig里的news_index改為news. doctrine:genearte:crud 做的事情就比較多了,它不僅生成了控制器,所有的模板文件也都生成了,并且還生成了表單類。我們先不管表單類,先訪問新聞首頁 /news/ 試試,沒有意外的話,你們可以看到一個從新建、顯示、編輯、刪除都完全可用的新聞功能。 - 先擱筆于此。忙些工作再來繼續。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看