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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 后臺控制器定義 ## 后臺控制器 ### 介紹 October后端實現了MVC模式。控制器管理后端頁面并實現各種功能,例如表單和列表。本文介紹如何開發后端控制器以及如何配置控制器行為。 每個控制器都用一個PHP腳本表示,該腳本位于Plugin目錄的**/ controllers**子目錄中。控制器視圖是`.htm`駐留在控制器視圖目錄中的文件。控制器視圖目錄名稱與小寫的控制器類名稱匹配。視圖目錄還可以包含控制器配置文件。控制器目錄結構的示例: ~~~ plugins/ acme/ blog/ controllers/ users/ <=== Controller view directory _partial.htm <=== Controller partial file config_form.yaml <=== Controller config file index.htm <=== Controller view file Users.php <=== Controller class Plugin.php ~~~ ### [](https://octobercms.com/docs/backend/controllers-ajax#class-definition)類定義 控制器類必須擴展`\Backend\Classes\Controller`該類。與其他任何插件類一樣,控制器應屬于[插件名稱空間](https://octobercms.com/docs/plugin/registration#namespaces)。插件中使用的Controller的最基本表示如下: ~~~ namespace Acme\Blog\Controllers; class Posts extends \Backend\Classes\Controller { public function index() // <=== Action method { } } ~~~ 通常,每個控制器都實現用于處理單一類型數據的功能-例如博客文章或類別。下面描述的所有后端行為均采用此約定。 ### [](https://octobercms.com/docs/backend/controllers-ajax#controller-properties)控制器屬性 后端控制器基類定義了許多屬性,這些屬性允許配置頁面外觀和管理頁面安全性: | 屬性 | 描述 | | --- | --- | | **$fatalError** | 允許存儲在操作方法中生成的致命異常,以便在視圖中顯示該異常。 | | **$user** | 包含對后端用戶對象的引用。 | | **$suppressView** | 允許阻止視圖顯示。可以在操作方法或控制器構造函數中進行更新。 | | **$params** | 路由參數的數組。 | | **$action** | 當前請求中正在執行的操作方法的名稱。 | | **$publicActions** | 定義了無需后端用戶身份驗證即可使用的一系列操作。可以在類定義中覆蓋。 | | **$requiredPermissions** | 查看此頁面所需的權限。可以在類定義或控制器構造函數中設置。有關詳細信息,請參見[用戶和權限](https://octobercms.com/docs/backend/users)。 | | **$pageTitle** | 設置頁面標題。可以在動作方法中設置。 | | **$bodyClass** | 用于自定義布局的body類屬性。可以在控制器構造函數或操作方法中設置。 | | **$guarded** | 控制器特定的方法,不能稱為動作。可以在控制器構造函數中擴展。 | | **$layout** | 為控制器視圖指定自定義布局(請參見下面的[布局](https://octobercms.com/docs/backend/controllers-ajax#layouts))。 | ### [](https://octobercms.com/docs/backend/controllers-ajax#actions-views-routing)動作,視圖和路由 稱為**動作的**公共控制器方法與**視圖文件**耦合,該**視圖文件**表示對應于該動作的頁面。后端視圖文件使用PHP語法。**index.htm**視圖文件內容的示例,對應于**index**操作方法: ~~~ <h1>Hello World</h1> ~~~ 該頁面的URL由作者名稱,插件名稱,控制器名稱和操作名稱組成。 ~~~ backend/[author name]/[plugin name]/[controller name]/[action name] ~~~ 上面的Controller結果如下: ~~~ http://example.com/backend/acme/blog/users/index ~~~ ### [](https://octobercms.com/docs/backend/controllers-ajax#passing-data-to-views)將數據傳遞到視圖 使用控制器的`$vars`屬性將任何數據直接傳遞到您的視圖: ~~~ $this->vars['myVariable'] = 'value'; ~~~ `$vars`現在可以在您的視圖中直接訪問隨屬性傳遞的變量: ~~~ <p>The variable value is <?= $myVariable ?></p> ~~~ ### [](https://octobercms.com/docs/backend/controllers-ajax#navigation-context)設置導航上下文 插件可以在[插件注冊文件中注冊](https://octobercms.com/docs/plugin/registration#navigation-menus)后端導航菜單和子菜單。導航上下文確定當前后端頁面激活的后端菜單和子菜單。您可以使用以下`BackendMenu`類設置導航上下文: ~~~ BackendMenu::setContext('Acme.Blog', 'blog', 'categories'); ~~~ 第一個參數指定作者和插件名稱。第二個參數設置菜單代碼。可選的第三個參數指定子菜單代碼。通常,您`BackendMenu::setContext`在控制器構造函數中調用。 ~~~ namespace Acme\Blog\Controllers; class Categories extends \Backend\Classes\Controller { public function __construct() { parent::__construct(); BackendMenu::setContext('Acme.Blog', 'blog', 'categories'); } ~~~ 您可以`$pageTitle`使用controller類的屬性設置后端頁面的標題(請注意,表單和列表行為可以為您完成此操作): ~~~ $this->pageTitle = 'Blog categories'; ~~~ ### [](https://octobercms.com/docs/backend/controllers-ajax#ajax)使用AJAX處理程序 后端AJAX框架使用與前端頁面相同的[AJAX庫](https://octobercms.com/docs/ajax/introduction)。該庫將自動加載到后端頁面上。 ### [](https://octobercms.com/docs/backend/controllers-ajax#ajax-handlers)后端AJAX處理程序 后端AJAX處理程序可以在控制器類或[小部件中](https://octobercms.com/docs/backend/widgets)定義。在控制器類中,AJAX處理程序被定義為公共方法,其名稱以“ on”字符串開頭:**onCreateTemplate**,**onGetTemplateList**等。 后端AJAX處理程序可以返回數據數組,引發異常或重定向到另一個頁面(請參閱[AJAX事件處理程序](https://octobercms.com/docs/ajax/handlers))。您可以使用`$this->vars`設置變量和控制器的`makePartial`方法來呈現部分內容并將其內容作為響應數據的一部分返回。 ~~~ public function onOpenTemplate() { if (Request::input('someVar') != 'someValue') { throw new ApplicationException('Invalid value'); } $this->vars['foo'] = 'bar'; return [ 'partialContents' => $this->makePartial('some-partial') ]; } ~~~ ### [](https://octobercms.com/docs/backend/controllers-ajax#triggering-ajax-requests)觸發AJAX請求 可以使用數據屬性API或JavaScript API觸發AJAX請求。有關詳細信息,請參見[前端AJAX庫](https://octobercms.com/docs/ajax/introduction)。以下示例顯示了如何使用后端按鈕觸發請求。 ~~~ <button type="button" data-request="onDoSomething" class="btn btn-default"> Do something </button> ~~~ > **注意**:您可以使用前綴專門針對小部件的AJAX處理程序`widget::onName`。有關更多詳細信息,請參見[小部件AJAX處理程序文章](https://octobercms.com/docs/backend/widgets#generic-ajax-handlers)。 ### [](https://octobercms.com/docs/backend/controllers-ajax#controller-middleware)控制器中間件 您可以在后端控制器中定義中間件,從而為更改HTTP請求的響應提供方便的機制。例如,您可能希望為控制器中的某些操作指定HTTP標頭,或者如果用戶不符合某些條件,則將其重定向。 在十月CMS處理請求之后,但在將響應發送到瀏覽器之前,將執行控制器中間件。 要為控制器定義中間件,可以在`__construct()`Backend控制器的`middleware()`方法中通過調用該方法來指定中間件。 ~~~php public function __construct() { parent::__construct(); $this->middleware(function ($request, $response) { // Middleware functionality }); } ~~~ 該`middleware()`方法要求有兩個參數的回調,`$request`提供所述[請求信息](https://octobercms.com/docs/services/request-input#request-information)和`$response`提供所述[響應對象](https://octobercms.com/docs/services/response-view#basic-responses)。回調應返回`$response`您的修改后的對象。 例如,要將`Test-Header`標題添加到響應中,可以執行以下操作: ~~~php public function __construct() { parent::__construct(); $this->middleware(function ($request, $response) { $response->headers->set('Test-Header', 'Test'); return $response; }); } ~~~ 您還可以使用`only()`和`except()`修飾符來控制將使用中間件的操作。例如,要限制中間件僅在`index`操作上運行,您可以執行以下操作: ~~~php public function __construct() { parent::__construct(); $this->middleware(function ($request, $response) { // Middleware functionality })->only('index'); } ~~~ 或者,對除操作之外的所有操作運行中間件`index`: ~~~php public function __construct() { parent::__construct(); $this->middleware(function ($request, $response) { // Middleware functionality })->except('index'); } ~~~
                  <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>

                              哎呀哎呀视频在线观看