<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 創建和編輯帖子 多么美好的時光。 我們有一個超酷的新博客,人們在評論中爭論,我們終于有更多的時間編程。 雖然我們喜歡Adminer,它不是那么舒服寫博客文章。 也許是我們應添加一個簡單的表單,直接從我們的應用程序添加新的帖子。 好的,我們開始吧。 讓我們從設計UI開始: 在首頁上,我們添加一個“寫新帖子”鏈接。 它將顯示一個帶有標題和文本區域的表單。 當您單擊保存按鈕時,它將保存博客帖子。 稍后,我們還將添加身份驗證,并僅允許已登錄的用戶添加新帖子。 但是我們需要寫什么代碼才能使它工作? 1、將鏈接添加到首頁模板(app / presenters / templates / Homepage / default.latte) 2、創建一個將顯示表單的新頁面(模板) 3、定義添加新帖子的表單 4、定義處理程序,將在表單提交時執行,這將保存帖子。 # 新增帖鏈接 您應該已經知道如何添加一個新的鏈接到首頁。 所以試試自己。 如果您不確定,請將此代碼添加到 app/presenters/templates/Homepage/default.latte: ~~~ <a n:href="Post:create">Write new post</a> ~~~ 刷新主頁后應出現下圖 ![](https://box.kancloud.cn/a49731a5247a45b8b7e660e45d34f6b8_522x467.png) # 創建新帖子的頁面 我們剛剛創建的鏈接指向PostPresenter及其操作create。 我們可以添加一個新的方法renderCreate,但實際上沒有必要。 我們不需要從數據庫中提取任何數據并將其放入模板中,因此方法將為空。 在這種情況下,它不需要存在。 **如果你想,你可以有空的方法; 也許它以后會有一些代碼。 隨你便。** 讓我們創建模板(app / presenters / templates / Post / create.latte): 全部內容如以下 ~~~ {block content} <h1>New post</h1> {control postForm} ~~~ 一切都應該是顯而易見的。 最后一行試圖渲染我們要創建的表單。 # 保存帖子的表單 當我們添加了對評論的支持時,表單和組件已經被覆蓋。 如果你對該主題感到困惑,請查看表單和組件如何重新工作(文章評論這節),我們將在這里等待;) 現在將此方法添加到PostPresenter: ~~~ protected function createComponentPostForm() { $form = new Form; $form->addText('title', 'Title:') ->setRequired(); $form->addTextArea('content', 'Content:') ->setRequired(); $form->addSubmit('send', 'Save and publish'); $form->onSuccess[] = [$this, 'postFormSucceeded']; return $form; } ~~~ # 從表單保存新帖子 通過添加處理程序方法繼續。 ~~~ public function postFormSucceeded($form, $values) { $post = $this->database->table('posts')->insert($values); $this->flashMessage("Post was published", 'success'); $this->redirect('show', $post->id); } ~~~ # 編輯帖子 讓我們添加編輯現有帖子的功能。 它應該很簡單 - 我們已經有postForm,我們可以使用它編輯以及添加一個新的編輯頁面,并更新表單處理程序,它可以添加一個新帖子(如現在),或者編輯現有的帖子。 將以下方法添加到PostPresenter: ~~~ public function actionEdit($postId) { $post = $this->database->table('posts')->get($postId); if (!$post) { $this->error('Post not found'); } $this['postForm']->setDefaults($post->toArray()); } ~~~ 請注意,該方法稱為actionEdit(而不是renderEdit,正如您可能預期的那樣)。 渲染方法用于將數據傳遞到模板。 另一方面,操作可能做的更多,他們應該檢查頁面是否可以由當前訪問者或用戶顯示,他們應該做大部分繁重的工作,不屬于表單處理程序。 將數據傳遞到模板當然也可以在動作方法中工作,但是建議不要這樣做,因為分離職責。 當你將代碼分解為渲染和動作方法時,你的代碼就更加簡明了。 現在創建模板(app / presenters / templates / Post / edit.latte): ~~~ {block content} <h1>Edit post</h1> {control postForm} ~~~ 讓我們擴展表單處理程序: ~~~ public function postFormSucceeded($form, $values) { $postId = $this->getParameter('postId'); if ($postId) { $post = $this->database->table('posts')->get($postId); $post->update($values); } else { $post = $this->database->table('posts')->insert($values); } $this->flashMessage('Post was published', 'success'); $this->redirect('show', $post->id); } ~~~ 當提供了postId參數時,表示正在編輯帖子。 在這種情況下,我們將檢查帖子是否真的存在,如果是,我們將在數據庫中更新它。 如果未提供postId,則意味著將添加一個新的網頁。 但postId來自哪里? 它是傳遞給actionEdit方法的參數。 您現在可以添加指向app / presenters / templates / Post / show.latte模板的鏈接: ~~~ <a n:href="edit $post->id">Edit this post</a> ~~~ 博客工作,人們都在快速評論,我們不再依賴Adminer添加新帖子。 它是完全獨立的,甚至正常的人都可以張貼在那里。 但等待,這可能不是確定,任何人,我的意思真的任何人在互聯網上,可以發布在我們的博客。 需要某種形式的身份驗證,以便只有已登錄的用戶才能發布。 我們將在下一章中添加。
                  <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>

                              哎呀哎呀视频在线观看