在使用 Model 存取資料庫前,我們要先學會怎麼建立表單 (Form) 及輸入資料。
建立表單
開啟 app/views/home.blade.php,修改如下:<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ $title }}</title>
</head>
<body>
{{Form::open(['url'=>'/', 'method'=>'post'])}}
{{Form::label('title', 'Title')}}<br>
{{Form::text('title')}}<br>
{{Form::label('content')}}<br>
{{Form::textarea('content')}}<br>
{{Form::submit('發表文章')}}
{{Form::close()}}
</body>
</html>
我們可以使用 Form 類別來產生表單,首先要有 open() 及 close(),其他元件則放在其中。常用元件:
- label:用來顯示一段文字,通常放在文字輸入框之前,用以說明。
- text:單行文字輸入框。
- textarea:多行文字輸入框。
- submit:執行送出的按鈕。
open() 方法的參數是一個陣列,第一個 url 表示要將資料送到哪個網址去處理。第二個 method 預設是 post。使用 post 通常用來新增資料;put 用來更新資料;delete 則用來刪除資料。
在 Laravel 中,get、post、put、delete 是有特定行為的。
送出表單
接下來要把表單的資料送進資料庫。我們要新增一個 route 來處理表單送來的資料。開啟 app/routes.php,加入:
Route::post('/', 'HomeController@store');
要接收表單送過來的資料,要使用 Route::post()
方法。接著在 HomeController 新增一個 store 方法來處理。如下:
public function store()
{
$input = Input::all();
return $input['title'];
}
這裡我們先簡單的測試是否能取得到使用者輸入的值。執行後,應該會顯示 title 的值。利用 Input 類別,可以取得表單的資料。Input::all()
表示取得全部欄位的資料,以陣列儲存,所以取值方式如同陣列 $input['title']
。你也可以使用
Input::get('title');
或 Input::get('title', '預設值');
的方法取值。這裡先有個 Form 如何製作及處理的概念,之後就要來實作了。
Class 'Form' not found
回覆刪除都會出現這段文字?
需要載入什麼form的class嗎?
Laravel 5 把 Form class 移除了,
刪除你可以參考這裡 https://laravelcollective.com/docs/5.0/html 把它加回來
1.在 composer.json 中加入
"require": {
"laravelcollective/html": "~5.0"
}
2.然後在命令列執行
composer update
3.接著在 config/app.php 中加入
'providers' => [
// ...
'Collective\Html\HtmlServiceProvider',
// ...
],
及
'aliases' => [
// ...
'Form' => 'Collective\Html\FormFacade',
'Html' => 'Collective\Html\HtmlFacade',
// ...
],
這樣就可以用了。