Laravel 入門

Laravel被稱爲"全棧"式框架,由於它可以處理從網絡服務到數據庫管理、HTML生成的一切事情,垂直集成的web開發環境給開發者提供了更好的體驗。php

一、laravel 安裝css

網上不少介紹的,這裏參考官方網址laravel

http://www.golaravel.com/laravel/docs/5.1/web

二、composer 安裝數據庫

官方網址:http://www.phpcomposer.com/5-features-to-know-about-composer-php/express

三、建立laravel站點django

composer create-project laravel/laravel your-project-name --prefer-dist
瀏覽器

這個命令會下載並安裝一份全新的 Laravel 存放在指定的 your-project-name 的目錄中。ruby

四、運行程序服務器

1)安裝PHP環境,能夠將項目放到/var/www/下面。

2)若是沒有php環境,能夠運行如下命令

$php artisan serve

上述命令會啓動 PHP 內建的開發服務器,要查看程序,請打開一個瀏覽器窗口,訪問http://localhost:8000 。應該會看到默認的 Laravel 信息頁面:

5、 顯示"Hello, Laravel!"

要在 Laravel 中顯示"Hello, Laravel!",須要新建一個控制器和視圖。

控制器用來接受向程序發起的請求。路由決定哪一個控制器會接受到這個請求。通常狀況下,每一個控制器都有多個路由,對應不一樣的動做。動做用來提供視圖中須要的數據。

視圖的做用是,以人類能看懂的格式顯示數據。有一點要特別注意,數據是在控制器中獲取的,而不是在視圖中。視圖只是把數據顯示出來。默認狀況下,視圖使用 Blade 編寫,經由 Laravel 解析後,再發送給用戶。

控制器可用控制器生成器建立,你要告訴生成器,我想要個名爲"welcome"的控制器,以下所示:

$ php artisan controller:make WelcomeController --only=index 

運行上述命令後,Laravel 會生成 app/controllers/WelcomeController.php 文件。生成文件後修改其中的 index 方法:

public function index() { return View::make('welcome.index'); } 

*建立視圖: *

  • 在 app/views/ 目錄新建文件夾 welcome 並建立文件 index.blade.php ;
  • 在 index.blade.php 文件中添加 <h1>Hello, Laravel!</h1> ;

六、查看路由

執行 $ php artisan routes 任務,會看到定義了全部標準的 REST 動做。輸出結果中各列的意義稍後會說明。

+--------+-----------------------------------+------------------+----------------------------+----------------+---------------+ | Domain | URI | Name | Action | Before Filters | After Filters | +--------+-----------------------------------+------------------+----------------------------+----------------+---------------+ | | GET|HEAD / | | WelcomeController@index | | | | | GET|HEAD articles | articles.index | ArticlesController@index | | | | | GET|HEAD articles/create | articles.create | ArticlesController@create | | | | | POST articles | articles.store | ArticlesController@store | | | | | GET|HEAD articles/{articles} | articles.show | ArticlesController@show | | | | | GET|HEAD articles/{articles}/edit | articles.edit | ArticlesController@edit | | | | | PUT articles/{articles} | articles.update | ArticlesController@update | | | | | PATCH articles/{articles} | | ArticlesController@update | | | | | DELETE articles/{articles} | articles.destroy | ArticlesController@destroy | | | +--------+-----------------------------------+------------------+----------------------------+----------------+---------------+
七、建立控制器

建立名爲 ArticlesController 的控制器。執行下面的命令便可:

$ php artisan controller:make ArticlesController $ php artisan controller:make ArticlesController 

打開剛生成的 app/controllers/ArticlesController.php 文件,控制器就是一個類,繼承自 BaseController。在這個 ArticlesController 類中定義了對應的資源動做。動做的做用是處理文章的 CRUD 操做。
修改 ArticlesController.php 文件中的
 public function create() { // } 

 public function create() { return View::make('articles.create'); } 

在 PHP 中,方法分爲 public、private 和 protected 三種,只有 public 方法才能做爲控制器的動做。

八、 首個表單

要在模板中編寫表單,可使用"表單構造器"。Laravel 中經常使用的表單構造器是 Form。在 app/views/articles/create.blade.php 文件中加入如下代碼:

{{ Form::open() }} <p> {{ Form::text('title') }} </p> <p> {{ Form::text('text') }} </p> <p> {{ Form::submit('submit') }} </p> {{ Form::close() }}

如今刷新頁面,會看到上述代碼生成的表單。在 Laravel 中編寫表單就是這麼簡單!

在 Form 方法的塊中,Form::text 建立了兩個標籤和兩個文本字段,一個用於文章標題,一個用於文章內容。最後,Form::submit 建立一個提交按鈕。

不過這個表單還有個問題。若是查看這個頁面的源碼,會發現表單 action 屬性的值是 /articles/create。這就是問題所在,由於其指向的地址就是如今這個頁面,而這個頁面是用來顯示新建文章表單的。

要想轉到其餘地址,就要使用其餘的地址。這個問題可以使用 Form::open 方法的 url 參數解決。在 Laravel 中,用來處理新建資源表單提交數據的動做是 store,因此表單應該轉向這個動做。

修改 app/views/articles/create.blade.php 文件中的 Form::open,改爲這樣:

{{ Form::open(array('url' => 'articles')) }} 

這裏,咱們把 url 參數的值設爲 articles 。對應的地址是 /articels,默認狀況下,這個表單會向這個路由發起 POST 請求。這個路由對應於 ArticlesController 控制器的 store 動做。

表單寫好了,路由也定義了,如今能夠填寫表單,而後點擊提交按鈕新建文章了。

建立文章

提交表單,會看到一個白屏。如今暫且無論這個錯誤。store 動做的做用是把新文章保存到數據庫中。

提交表單後,其中的字段以參數的形式傳遞給 Laravel。這些參數能夠在控制器的動做中使用,完成指定的操做。要想查看這些參數的內容,能夠把 store 動做改爲:

 public function store() { dd(Input::all()); } 

dd 函數爲 Laravel 內置的打印輸出函數,Input::all() 取得全部發出請求時傳入的輸入數據。

若是如今再次提交表單,不會再看到白屏錯誤,而是會看到相似下面的文字:

array (size=3) '_token' => string 'plx6TrGRWfHakBlKybUzkRTH8r712JU4rWfiPTs7' (length=40) 'title' => string 'First article!' (length=14) 'text' => string 'This is my first article.' (length=25) 

store 動做把表單提交的參數顯示出來了。不過這麼作沒什麼用,看到了參數又怎樣,什麼都沒發生。

建立 Article 模型

在 Laravel 中,模型的名字使用單數,對應的數據表名使用複數。

建立 app/models/Article.php 並寫入如下代碼:

<?php class Article extends Eloquent { } 

注意咱們並無告訴 Eloquent Article 模型會使用哪一個數據庫表。若沒有特別指定,系統會默認自動對應名稱爲「類名稱的小寫複數形態」的數據庫表。因此,在上面的例子中, Eloquent 會假設 Article 將把數據存在 articles 數據庫表。

運行遷移

使用 Artisan CLI 的 migrate:make 命令創建遷移文件:

$ php artisan migrate:make create_articles_table --create=articles 

遷移文件會創建在 app/database/migrations 目錄下,文件名會包含時間戳,用於在執行遷移時用來決定順序。

app/database/migrations/20140903084339createarticlestable.php (你的遷移文件名可能有點不同)文件的內容以下所示:

<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateArticlesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('articles', function(Blueprint $table) { $table->increments('id'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('articles'); } } 

修改其中的建立代碼爲:

 Schema::create('articles', function(Blueprint $table) { $table->increments('id'); $table->string('title'); $table->text('text'); $table->timestamps(); }); 

在這個遷移中定義了一個名爲 up 的方法,在運行遷移時執行。up 方法中定義的操做都是能夠經過 down 方法實現可逆的,Laravel 知道如何撤銷此次遷移操做。運行遷移後,會建立 articles 表,以及一個字符串字段和文本字段。同時還會建立兩個時間戳字段,用來跟蹤記錄的建立時間和更新時間。

而後,使用 Artisan 命令運行遷移:

$ php artisan migrate 

Laravel 會執行遷移操做,告訴你建立了 articles 表。

Migration table created successfully. Migrated: 20140903084339createarticlestable

在控制器中保存數據

再回到 ArticlesController 控制器,咱們要修改 store 動做,使用 Article 模型把數據保存到數據庫中。打開 app/controllers/ArticlesController.php 文件,把 store 動做修改爲這樣:

public function store() { $article = Article::create(array('title'=>Input::get('title'), 'text'=>Input::get('text'))); return Redirect::route('articles.show', array($article->id)); } 

同時在 app/models/Article.php 添加 :

protected $fillable = array('title', 'text'); 

fillable 屬性容許在動做中調用模型的 create 方法使用 title 和 text 屬性。

再次訪問 http://localhost:8000/articles/create ,填寫表單,還差一步就能建立文章了。

相關文章
相關標籤/搜索