# HTML頁面
### 介紹
October在`Html`外觀上提供了各種有用的功能,可用于處理HTML和表單。盡管大多數示例將使用PHP語言,但所有這些功能都可以通過簡單的轉換直接轉換為[Twig標記](https://octobercms.com/docs/markup)。
~~~
// PHP
<?= Form::open(..) ?>
// Twig
{{ form_open(...) }}
~~~
如上所示,在Twig中,所有帶前綴的函數`form_`都將直接綁定到`Form`Facade,并使用*snake\_case*提供對方法的訪問。有關在前端使用表單助手的[更多信息](https://octobercms.com/docs/markup/function-form),請參見[標記指南](https://octobercms.com/docs/markup/function-form)。
### [](https://octobercms.com/docs/services/html#opening-a-form)開啟表格
可以使用`Form::open`傳遞屬性數組作為第一個參數的方法打開表單:
~~~
<?= Form::open(['url' => 'foo/bar']) ?>
//
<?= Form::close() ?>
~~~
默認情況下,`POST`將假定一個方法,但是,您可以自由指定另一個方法:
~~~
Form::open(['url' => 'foo/bar', 'method' => 'put'])
~~~
> **注意:**由于HTML表單僅支持`POST`和`GET`,`PUT`因此`DELETE`會通過自動向`_method`表單添加隱藏字段來欺騙方法。
您也可以傳遞常規的HTML屬性:
~~~
Form::open(['url' => 'foo/bar', 'class' => 'pretty-form'])
~~~
如果您的表單要接受文件上傳,`files`請在數組中添加一個選項:
~~~
Form::open(['url' => 'foo/bar', 'files' => true])
~~~
您還可以打開指向頁面或組件中的處理程序方法的表單:
~~~
Form::open(['request' => 'onSave'])
~~~
#### 啟用AJAX的表單
同樣,可以使用以下`Form::ajax`方法打開啟用AJAX的表單,其中第一個參數是處理程序方法名稱:
~~~
Form::ajax('onSave')
~~~
的第二個參數`Form::ajax`應包含以下屬性:
~~~
Form::ajax('onSave', ['confirm' => 'Are you sure?'])
~~~
您還可以傳遞局部變量以將其更新為另一個數組:
~~~
Form::ajax('onSave', ['update' => [
'control-panel' => '#controlPanel',
'layout/sidebar' => '#layoutSidebar'
]
])
~~~
> **注意**:[AJAX框架](https://octobercms.com/docs/ajax/attributes-api)中的大多數[數據屬性](https://octobercms.com/docs/ajax/attributes-api)都可以通過刪除`data-request-`前綴來獲得。
### [](https://octobercms.com/docs/services/html#form-tokens)表單令牌
#### CSRF保護
如果[啟用了保護](https://octobercms.com/docs/setup/configuration#csrf-protection),請將該`Form::open`方法與結合使用`POST`,`PUT`或`DELETE`將CSRF令牌作為隱藏字段自動添加到表單中。另外,如果您希望為隱藏的CSRF字段生成HTML,則可以使用以下`token`方法:
~~~
<?= Form::token() ?>
~~~
#### 延遲綁定會話密鑰
用于[延遲綁定的](https://octobercms.com/docs/database/relations#deferred-binding)會話密鑰將作為隱藏字段添加到每種表單中。如果要手動生成此字段,可以使用以下`sessionKey`方法:
~~~
<?= Form::sessionKey() ?>
~~~
### [](https://octobercms.com/docs/services/html#form-model-binding)表單模型綁定
#### 打開模型表格
您可能要根據模型的內容填充表單。為此,請使用以下`Form::model`方法:
~~~
<?= Form::model($user, ['id' => 'userForm']) ?>
~~~
現在,當您生成表單元素(如文本輸入)時,與字段名稱匹配的模型值將自動設置為字段值。因此,例如,對于名為的文本輸入`email`,將用戶模型的`email`屬性設置為值。如果會話閃存數據中有一項與輸入名稱匹配的項目,則該項目將優先于模型的值。優先級如下所示:
1. 會話閃存數據(舊輸入)
2. 顯式傳遞的值
3. 模型屬性數據
4. 現有回發值
這使您可以快速構建不僅綁定到模型值的表單,而且如果服務器上存在驗證錯誤,還可以輕松地重新填充表單。您可以使用以下命令手動訪問這些值`Form::value`:
~~~
<input type="text" name="name" value="<?= Form::value('name') ?>" />
~~~
您可以將默認值作為第二個參數傳遞:
~~~
<?= Form::value('name', 'John Travolta') ?>
~~~
> **注意:**使用時`Form::model`,請務必使用來關閉表格`Form::close`!
### [](https://octobercms.com/docs/services/html#labels)標簽
#### 生成標簽元素
~~~
<?= Form::label('email', 'E-Mail Address') ?>
~~~
#### 指定額外的HTML屬性
~~~
<?= Form::label('email', 'E-Mail Address', ['class' => 'awesome']) ?>
~~~
> **注意:**創建標簽后,您創建的任何名稱與標簽名稱匹配的表單元素也將自動收到與標簽名稱匹配的ID。
### [](https://octobercms.com/docs/services/html#text)文字欄位
#### 產生文字輸入
~~~
<?= Form::text('username') ?>
~~~
#### 指定默認值
~~~
<?= Form::text('email', 'emailaddress@example.com') ?>
~~~
> **注:**該*隱藏*和*textarea的*方法具有相同的簽名*文本*方法。
#### 生成密碼輸入
~~~
<?= Form::password('password') ?>
~~~
#### 產生其他輸入
~~~
<?= Form::email($name, $value = null, $attributes = []) ?>
<?= Form::file($name, $attributes = []) ?>
~~~
### [](https://octobercms.com/docs/services/html#checkboxes-and-radio-buttons)復選框和單選按鈕
#### 生成復選框或單選輸入
~~~
<?= Form::checkbox('name', 'value') ?>
<?= Form::radio('name', 'value') ?>
~~~
#### 生成已選中的復選框或單選輸入
~~~
<?= Form::checkbox('name', 'value', true) ?>
<?= Form::radio('name', 'value', true) ?>
~~~
### [](https://octobercms.com/docs/services/html#number)數
#### 產生數字輸入
~~~
<?= Form::number('name', 'value') ?>
~~~
### [](https://octobercms.com/docs/services/html#file-input)檔案輸入
#### 生成文件輸入
~~~
<?= Form::file('image') ?>
~~~
> **注意:**表單必須已打開,并且`files`選項設置為`true`。
### [](https://octobercms.com/docs/services/html#drop-down-lists)下拉式清單
#### 生成一個下拉列表
~~~
<?= Form::select('size', ['L' => 'Large', 'S' => 'Small']) ?>
~~~
#### 生成具有選定默認值的下拉列表
~~~
<?= Form::select('size', ['L' => 'Large', 'S' => 'Small'], 'S') ?>
~~~
#### 生成分組列表
~~~
<?= Form::select('animal', [
'Cats' => ['leopard' => 'Leopard'],
'Dogs' => ['spaniel' => 'Spaniel'],
]) ?>
~~~
#### 生成具有范圍的下拉列表
~~~
<?= Form::selectRange('number', 10, 20) ?>
~~~
#### 生成具有范圍,選定值和空白選項的下拉列表
~~~
<?= Form::selectRange('number', 10, 20, 2, ['emptyOption' => 'Choose...']) ?>
~~~
#### 生成帶有月份名稱的列表
~~~
<?= Form::selectMonth('month') ?>
~~~
#### 生成帶有月份名稱,選定值和空白選項的列表
~~~
<?= Form::selectMonth('month', 2, ['emptyOption' => 'Choose month...']) ?>
~~~
### [](https://octobercms.com/docs/services/html#buttons)紐扣
#### 生成一個提交按鈕
~~~
<?= Form::submit('Click Me!') ?>
~~~
> **注意:是否**需要創建一個按鈕元素?嘗試*按鈕*方法。它具有相同的簽名*提交*。
### [](https://octobercms.com/docs/services/html#custom-macros)自定義宏
#### 注冊表格宏
定義您自己的自定義Form類幫助器(稱為“宏”)很容易。運作方式如下。首先,只需使用給定名稱和閉包注冊宏:
~~~
Form::macro('myField', function() {
return '<input type="awesome">';
})
~~~
現在,您可以使用其名稱來調用宏:
#### 調用自定義表格宏
~~~
<?= Form::myField() ?>
~~~
- 基本說明
- 基本操作
- October cms 安裝
- 后臺控制器路徑
- 圖標
- 獲取安裝網上的插件/主題
- 插件構造器使用
- 定時任務
- October后臺控制器
- vscode編輯器
- ajax操作
- 使用
- ajax更新組件
- ajax屬性API
- JavaScript API
- ajax綜合使用
- 主題
- 多語言主題
- 安裝市場主題
- 主題程序處理
- 主題
- 頁面
- 部件
- 布局
- 內容
- 組件
- 媒體
- 主題表單操作
- 表單使用
- 表單后端程序處理
- 插件
- 自定義插件
- 插件說明
- 插件導航條
- 插件數據庫設置
- 插件的設置管理
- 插件的配置文件config
- 組件
- app服務
- app容器
- 擴展行為
- 緩存
- Collection類
- Lazy Collections
- Collection方法
- 助手函數
- 數組助手函數
- 路徑助手函數
- 玄樂助手函數
- 其他助手函數
- 錯誤與記錄
- 事件處理
- HTML頁面
- 文件與目錄操作
- 散列和加密
- 郵件
- 郵件內容
- 郵件發送
- 分頁
- 模板解析器
- 動態解析器語法
- 隊列消息
- 請求與輸入
- 響應
- 視圖
- 路由器
- 配置
- 驗證操作
- 處理錯誤消息
- 錯誤消息與視圖
- 可用的驗證規則
- 有條件的驗證規則
- 驗證數組
- 錯誤消息
- 自定義驗證規則
- 模型操作
- 定義模型與其屬性
- 檢索模型
- 插入與更新
- 刪除模型
- 查詢范圍
- 事件操作
- 關聯操作
- 定義關系
- 關系類型
- 多肽關系
- 關系查詢
- 渴望加載
- 插入模型
- 數據庫操作
- 基本用法
- 數據表結構
- 查詢連貫操作
- 結果檢索
- select子句
- 插入更新
- where子句
- 排序,分組,限制和偏移
- 文件附件
- Collection操作
- 屬性操作
- 系列化json
- 數據庫屬性
- 數據庫行為
- 控制器
- 后臺控制器定義
- 后臺頁面
- 后臺組件
- 后臺表單
- 表單組件
- 表單視圖
- 表單行為
- 后臺列表
- 列表行為
- 列表過濾器
- 可用列類型
- 關系行為
- 關系行為類型
- 擴展關系行為
- 列表排序操作
- 導入導出操作
- 用于與權限
- corlate模板修改
- 修改頂部導航
- laravel問題
- 控制器不存在
- 控制器
- 路由組
- laravel筆記
- laravel 安裝
- 偽靜態配置
- 依賴注入 & 控制器
- 中間件
- 路由文件
- 視圖