laravel整理筆記

搭建lamp環(huán)境

安裝ubuntu14.04 LTS版本

搭建lamp環(huán)境:

切換到root:

sudo su

更新源:

apt-get update

安裝apache2:

apt-get install apache2

安裝php5.5.9:

apt-get install php5

安裝mysql:

apt-get install mysql-server mysql-client

安裝php對myslq的擴(kuò)展:

apt-get install php5-mysql

安裝laravel需要的加密算法庫:

apt-get install mcrypt

安裝php加密庫:

apt-get install php5-mcrypt

php5的這個(gè)加密擴(kuò)展需要手動(dòng)修改配置文件才可以使用:

cd /etc/php5/mods-available/   #這個(gè)目錄是php已經(jīng)下載的擴(kuò)展

cd /etc/php5/apache2/conf.d/   #這個(gè)目錄是php已經(jīng)加載的擴(kuò)展(都是軟連接)

我們只需要建立個(gè)軟連接就可以了:

ln -s /etc/php5/mods-available/mcrypt.ini ./

ls  #查看文件,軟連接建立成功,擴(kuò)展就可以用了

重啟apache:

apachectl restart

建立phpinfo文件:

cd /var/www/html/  #這是apache的網(wǎng)站根目錄

vim info.php

    <?php
        phpinfo();
    ?>

查看服務(wù)器IP

ifconfig  (假設(shè)為192.168.1.50)

瀏覽器訪問192.168.1.50/info.php

可以看到mcrypt已經(jīng)加載進(jìn)去了

安裝一些常用的工具:

apt-get install wget      #下載工具 

apt-get install curl  #模擬瀏覽器

apt-get install openssl 

連接遠(yuǎn)程服務(wù)器

mac電腦用ssh連接:

ssh laravel@192.168.1.50

windowx電腦使用xshell,或者putty連接

composer的安裝

下載composer.phar包:
下載地址

上傳composer.phar包到服務(wù)器:

使用上傳工具:

FileZilla

或者mac 終端使用 scp

windows下使用xhsell,  使用rz命令

添加可執(zhí)行權(quán)限:

chmod +x ./composer.phar

每次都要在這個(gè)使用很麻煩,添加成全局的就方便了:

 mv composer.phar /bin/composer

驗(yàn)證:

composer -v

安裝laravel

全局安裝(適用于一個(gè)服務(wù)器多個(gè)laravel項(xiàng)目):

composer global require "laravel/installer"

配置全局環(huán)境變量:

cd

vim .profile

最后面寫入:

export PATH=$PATH:/root/.config/composer/vendor/bin/

生成laravel項(xiàng)目:

laravel new blog

局部安裝(適用于服務(wù)器只有一個(gè)laravel項(xiàng)目):

composer create-project --prefer-dist laravel/laravel blog

ps:注意虛擬機(jī)內(nèi)存一定要大于1G,不然會報(bào)內(nèi)存不足的錯(cuò)誤

修改文件權(quán)限:

cd blog

chmod -R 777 storage

本地域名解析和apache虛擬主機(jī)配置

修改hosts文件:

mac 在 /etc/hosts

windows 在C:\Windows\System32\drivers\etc\hosts

加入:

192.168.1.50 laravel.demo

配置虛擬主機(jī):

cd /etc/apache2/sites-available

cp 000-default.conf laravel.demo.conf

vim laravel.demo

打開服務(wù)器名字配置:

ServerName laravel.demo

建立軟連接:

ln -s /etc/apache2/sites-available/laravel.demo.conf ../sites-enabled/

重啟服務(wù)就可以了:

apachectl restart

git倉庫建立與git服務(wù)器的搭建

安裝git:

apt-get install git

設(shè)置你的倉庫用戶名:

git config --global user.name 'lwt'

git config --global user.email '13521760670@163.com'

初始化git倉庫:

cd /var/www/demo

git init

搭建git服務(wù)器:

添加用戶:
adduser git

克隆裸倉庫:
git clone --bare demo demo.git

移動(dòng)位置:
mv demo.git/ /home/git/

修改權(quán)限:
chown -R git:git demo.git/

另一個(gè)服務(wù)器操作:

生成密鑰對(生成位置在當(dāng)前用戶的家目錄的.ssh文件里)
ssh-keygen -t rsa

上傳公鑰到git服務(wù)器,這樣可以免密碼克隆和提交:
cd
cd .ssh
找到 
id_rsa.pub
想辦法把這個(gè)文件里面的內(nèi)容弄到git服務(wù)器,git用戶家目錄里面的
.ssh文件夾里面的authorized_keys里面(沒有就手動(dòng)創(chuàng)建,可能會有權(quán)限的問題)

這樣做完之后,這個(gè)服務(wù)器就可以免密碼克隆git服務(wù)器的內(nèi)容了:
git clone git@git服務(wù)器IP:test.git(這個(gè)空倉庫是在git服務(wù)器的git家目錄里面的)

apache2重定向(隱藏index文件)

加載重定向模塊:

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/

修改配置文件:

vim /etc/apache2/apache2.conf

找到:
Directory /var/www/
把 AllowOverride Node
改為:
AllowOverride all

保存退出,重啟apache:

:wq
apachectl restart

安裝laravel調(diào)試工具

安裝:

composer require barryvdh/laravel-debugbar

全格式打印:

dd();

如果沒有新的文件,git快捷提交:

git commit -a -m "show"

設(shè)置服務(wù)提供者:

vi /var/www/demo/config/app.php

找到:
Application Service Providers...

在里面寫入:
Barryvdh\Debugbar\ServiceProvider::class,

起個(gè)別名,找到:
Class Aliases
寫入:
'Debugbar' => Barryvdh\Debugbar\Facade::class,

生成配置文件:
cd /var/www/demo/
php artisan vendor:publish

手動(dòng)輸出錯(cuò)誤日志:
php文件中寫:
/Debugbar::error('Something is definitely goding wrong');

環(huán)境配置和數(shù)據(jù)庫連接

連接:

1. 安裝Navicat Premium

2. 然后新建一個(gè)mysql連接

3. 然后配置ssh

4. 輸入遠(yuǎn)程服務(wù)器的ip和用戶名密碼

5. 然后配置常規(guī)

6. 這里面是以ssh的遠(yuǎn)程服務(wù)器為基礎(chǔ)的,所以ip地址就寫localhost(代表遠(yuǎn)程服務(wù)器)

7. 輸入數(shù)據(jù)庫的用戶名和密碼

8. 連接成功

配置:

配置文件都在根目錄的config文件夾下,找到database.php

可以看到里面的mysql配置,使用了一個(gè)env函數(shù)

這個(gè)函數(shù)可以動(dòng)態(tài)加載根目錄下得.env里面的全局變量

所以我們只需要修改.env里面的配置就可以了

數(shù)據(jù)遷移

生成信息記錄表:

根目錄下:
php artisan migrate

在根目錄下 database/migrations 里面存放了動(dòng)態(tài)建表文件

利用laravel命令建立表,有利于數(shù)據(jù)庫遷移:

根目錄下:
php artisan make:migration crteate_news_table

會在根目錄下的database/migrations文件里夾里生成對應(yīng)的文件,可以在這個(gè)文件里定義表結(jié)構(gòu)

靜態(tài)資源管理elixir工具

安裝nodejs:

wget https://nodejs.org/dist/v4.4.4/node-v4.4.4.tar.gz

tar -zxvf node-v4.4.4.tar.gz

cd node-v4.4.4

./configure

make && make install

安裝gulp:

npm install --global gulp

npm install

配置文件在:

根目錄下:
gulpfile.js

測試合成文件:

合并多個(gè)css文件:
vi gulpfile.js

注釋:
min.sass('app.scss');
添加:
mix.styles(['a.css','b.css'],'public/assets/css');
注意:a.css,b.css都在項(xiàng)目根目錄下resources下assets的css目錄(沒有自己建立個(gè))
注意:合成輸出的目錄在public/assets/css下(沒有自己建立)

編譯合成:
gulp

查看效果:
cat public/assets/css/all.css

測試編譯sass:

vim resources/assets/sass/app.scss
打開文件中的注釋,導(dǎo)入bootstrap

測試驅(qū)動(dòng)開發(fā)

項(xiàng)目根目錄下有一個(gè)tests文件夾,在這個(gè)里面寫測試用例:

cd tests

其中TestCase.php是系統(tǒng)封裝的測試,我們自己寫的驅(qū)動(dòng)都要集成這個(gè)類

ExampleTest.php就是一個(gè)列子

我們自己寫的測試用例,命名一定要按照規(guī)范,即xxxTest.php

測試:

項(xiàng)目根目錄下:
./vendor/bin/phpunit 

顯示綠色的就是測試通過,紅色的的就是沒有測試通過

ps:我們在實(shí)際的項(xiàng)目開發(fā)中,先根據(jù)用戶需求,寫出測試用例,執(zhí)行測試,肯定都是
紅色的呀,然后我們就一個(gè)模塊一個(gè)模塊的去完成,讓紅色慢慢的都變綠,項(xiàng)目也就做完啦

laravel項(xiàng)目生命周期

laravel運(yùn)行流程

1.public/index.php

項(xiàng)目入口文件

2.bootstrap/cache

    框架的啟動(dòng)文件夾
    cache是項(xiàng)目編譯后的所有需要的類和資源

contract容器,幫助我們創(chuàng)建我們需要的對象

3.配置文件

provider:服務(wù)提供者
命名空間加類,寫在這里面的類,系統(tǒng)會自動(dòng)幫我們創(chuàng)建對象

aliases:別名
給對象起個(gè)別名,方便我們使用

app/console:命令行相關(guān)

kenel.php 命令行要使用的東西在這里

app/events:注冊事件

app/http:網(wǎng)頁請求走這里

app/jobs:消息

  1. 加載app/http/內(nèi)核 kenel.php

    先走里面的中間件,中間件分全局中間件,和路由中間件
    

app/http/route路由文件,是整個(gè)web項(xiàng)目最開始的地方了

模板使用

路由文件位置:

app/Http/routes.php

加載模板

模板位置在:

resources/views/

模板名字:
name.blade.php

加載模板用:
return view('name');

加載views/dir/下的模板:
return view('dir.name');

模板包含

在要頁面中這樣寫:

@include('inc.name')

模板繼承

在要繼承的頁面中這樣寫:

@extends('layout.app')

我們只繼承那些不變的內(nèi)容,動(dòng)態(tài)的內(nèi)容我們要留空,在被繼承的模板文件中用這個(gè)占位:

@yield('content')
在繼承它的頁面中去實(shí)現(xiàn)這個(gè)占位的內(nèi)容

接著在繼承頁面中這樣寫:

    @section('content')
        要實(shí)現(xiàn)的代碼內(nèi)容...
    @endsection

控制器與resfulApi的使用

控制器方法約定(resfulApi):

GET index  列表
GET create 創(chuàng)建
POST index 添加一個(gè)
GET id 查看
GET edit 修改

創(chuàng)建控制器:

項(xiàng)目目錄中使用命令:

php artisan make:controller HomeController --resource
 
會在app/Http/Controller/下面生成對應(yīng)的控制器

路由設(shè)置

在路由文件中配置:

基本路由:

Route::get('/','HomeController@index');

resful路由:

Route::resource('/home/','HomeController');
Route::resource('/home/create','HomeController');
Route::resource('/home/edit','HomeController');

注意:頂級目錄好像不支持get方式

對控制器的控制:

生效的方法:

Route::resource('/','HomeController',['only'=>['index','create']]);

不生效的方法設(shè)置:

Route::resource('/','HomeController',['except'=>['index','create']]);

服務(wù)容器和工廠模式

方便擴(kuò)展的核心架構(gòu)就是容器: Service Container

index入口文件中,包含了核心框架應(yīng)用程序?qū)ο?

$app = require_once __DIR__.'/../bootstrap/app.php';

app.php是一個(gè)Application對象:

$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')

);

Application繼承Container對象:

class Application extends Container implements ApplicationContract, HttpKernelInterface

Container就是一個(gè)容器對象,利用各種機(jī)制來幫助我們創(chuàng)建對象

Application對象給我們一個(gè)這樣的方法:

$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,  //訪問這個(gè)類名
App\Exceptions\Handler::class                          //放入這個(gè)類
);

在服務(wù)提供者中,我們可以方便的注冊類或接口:

$this->app->bind('A', function ($app) {
return new HelpSpot\API($app['HttpClient']);  //返回一個(gè)對象或者類名稱 new \App\User();
});
$u->$this->app->make('A');

在app.php文件中綁定:

//相當(dāng)于給這個(gè)類做一個(gè)標(biāo)記,名字是A
$app->bind('A', function ($app) {   
return new HelpSpot\API($app['HttpClient']);  //返回一個(gè)對象或者類名稱 new \App\User();
});
//這里通過標(biāo)記,告訴Application工廠給我生產(chǎn)一個(gè)對象:
$u->$this->app->make('A');

那么如果是已經(jīng)new好的對象我們怎么放到容器中進(jìn)行統(tǒng)一管理呢?

$u = new User();
$this->app-instance('u',$u);

優(yōu)點(diǎn):如果我們這個(gè)類是需要替換成其他的類的話,我們不用做太多的改動(dòng),只需要修改個(gè)返回的類的就行了,標(biāo)記在其他地方都是通用的

根據(jù)不同需求生產(chǎn)不同的對象

單例模式:

//這樣綁定
$app->singleton('A', function ($app) {   
    return new HelpSpot\API($app['HttpClient']);  //返回一個(gè)對象或者類名稱 new \App\User();
});
//這樣生成
$this->app->make('A');
簡介寫法:
$this->app['A'];

還可以把我們實(shí)例化好的對象放到APP里面統(tǒng)一管理:

$fooBar = new FooBar(new SomethingElse);
$this->app->instance('FooBar', $fooBar);

依賴注入和ioc控制反轉(zhuǎn)

控制反轉(zhuǎn)就是在我們需要一個(gè)對象的時(shí)候,根據(jù)參數(shù)的類型,把我們需要的函數(shù)注冊進(jìn)來,比如:

class Tb{
    private $ta;
    public function __constauct(\App\Ta $a){
        $this->ta = $a;
    }
}
說明:在我們需要使用Tb這個(gè)對象的時(shí)候,工廠的方法在創(chuàng)建Tb對象的時(shí)候,會同時(shí)把我們需要的
參數(shù)也創(chuàng)建好,并且填充進(jìn)來,這樣在我們開發(fā)程序的時(shí)候就會方便很多

要想使用依賴注入和控制反轉(zhuǎn),就必須先注冊類:

$app->bind(\App\Ta::class, \App\Ta::class); $app->bind(\App\Tb::class, \App\Tb::class);

//為什么我們的綁定和官方源碼不一樣呢,來看看
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,  //其實(shí)就是一個(gè)接口
App\Exceptions\Handler::class                         //具體實(shí)現(xiàn)接口的一個(gè)類
);

并不是在bootstrap/app.php里面注冊,后面會說道

服務(wù)提供者和laravel低耦合架構(gòu)

在入口index.php文件中make 了一個(gè)內(nèi)核:

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

內(nèi)核繼承了HttpKernel,在httpKernel中:

//啟動(dòng)配置
protected $bootstrappers = [
    'Illuminate\Foundation\Bootstrap\DetectEnvironment',
    'Illuminate\Foundation\Bootstrap\LoadConfiguration',
    'Illuminate\Foundation\Bootstrap\ConfigureLogging',
    'Illuminate\Foundation\Bootstrap\HandleExceptions',
    'Illuminate\Foundation\Bootstrap\RegisterFacades',
    'Illuminate\Foundation\Bootstrap\RegisterProviders',
    'Illuminate\Foundation\Bootstrap\BootProviders',
];   
//啟動(dòng)了LoadConfiguration配置文件

在config/app.php中,return了一個(gè)數(shù)組,其中:

這個(gè)提供了服務(wù)提供者的路徑:
'providers' => [
    Illuminate\Auth\AuthServiceProvider::class,
    Illuminate\Broadcasting\BroadcastServiceProvider::class,
    Illuminate\Bus\BusServiceProvider::class,
    Illuminate\Cache\CacheServiceProvider::class,
    Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
    Illuminate\Cookie\CookieServiceProvider::class,
    Illuminate\Database\DatabaseServiceProvider::class,
    Illuminate\Encryption\EncryptionServiceProvider::class,
    Illuminate\Filesystem\FilesystemServiceProvider::class,
    Illuminate\Foundation\Providers\FoundationServiceProvider::class,
    Illuminate\Hashing\HashServiceProvider::class,
    Illuminate\Mail\MailServiceProvider::class,
   ]
httpKernel中會根據(jù)這個(gè)路徑注冊服務(wù)提供者,生成對應(yīng)的對象

在Providers文件夾下,有各種注冊的服務(wù)提供者:

AppServiceProvider.php中繼承了Serviceprovider,Serviceprovider中傳了一個(gè)$app對象:
    public function __construct($app)
{
    $this->app = $app;
}
在AppServiceProvider.php中,有兩個(gè)函數(shù):
    public function boot()   //啟動(dòng)函數(shù),先執(zhí)行這個(gè),可以進(jìn)行一些前提配置
{
    //
    $a = 111;
}
 public function register()  //注冊綁定類
{
    //
    $this->app->bind('\App\Ta::class',\App\Ta:class);
        $this->app->bind('\App\Tb::class',\App\Tb:class);
}

總結(jié)一下

laravel是怎么運(yùn)行的

最大就是容器對象:Application

管理laravel框架里面的所有內(nèi)容
要想使用這些功能,我們要先注冊

什么是服務(wù):

 把解決某一個(gè)相關(guān)功能一系列相關(guān)的類打包封裝,就是一個(gè)服務(wù)

服務(wù)提供者做什么的:

服務(wù)提供者就是擴(kuò)展我們功能的地方
Application根據(jù)配置文件幫我們把服務(wù)注冊,而所有我們需要的服務(wù)功能都是在
服務(wù)提供者文件中進(jìn)行注冊的(/app/Providers/AppServiceProvider.php)

這樣在多人開發(fā)的時(shí)候,每個(gè)人把要注冊的類寫在自己的服務(wù)提供者中
Providers/的文件中(自己建立)的register的方法里面

Facades的使用

為了在每次使用類的使用不在生成重復(fù)的對象,或者夸文件使用一個(gè)對象,我們需要這樣使用對象:

User::getName();

這樣來配置我們自己的類:

namespace App\Http;
class Z extends \Illuminate\Support\Facades\Facade
{
    protected static function getFacadeAccessor()
    {
        return '\App\TA';
    }
}

Z繼承Facade,返回一個(gè)類名,這樣我們在使用Z類的時(shí)候,會自動(dòng)調(diào)用TA類的方法
使用: \App\Http\Z::getTitle() 調(diào)用的就是TA類臉的getTitle()方法
注意:必須用單列模式注冊TA類

我們來做個(gè)簡化,在用的時(shí)候不帶命名空間:

在配置文件中,我們給\App\Http\Z起個(gè)別名就好了:

'Z' => \App\Http\Z::class,

中間件

為了不把大量的代碼都寫在controler里面,我們把某一些特定的服務(wù)提取出來,當(dāng)做中間件

各種驗(yàn)證什么的就由中間件來做

創(chuàng)建中間件

項(xiàng)目更目錄下:

php artisan make:middleware testMiddleware

然后注冊中間件:

配置文件/app/Http/Kernel.php

protected $middlewareGroups = [ ]
全局中間件,無論如何都是會執(zhí)行的

protected $routeMiddleware = [ ]
自定義別名中間件,我們一般把中間件注冊在這里

調(diào)用中間件:

單個(gè):
Route::get('/mid', ['middleware'=>'test',function () {
return redirect('/facades');
}]);

多個(gè):
Route::get('/mid', ['middleware'=>['test','test2'],function () {
return redirect('/facades');
}]);

路由組使用中間件:
Route::group(['middleware' => 'auth'], function () {
    Route::get('/', function ()    {
        // 使用 Auth 中間件
    });

    Route::get('user/profile', function () {
        // 使用 Auth 中間件
    });
});
路由組共用中間件 auth
在路由里配置中間件很適合很多個(gè)方法都使用同一個(gè)中間件
一般用于生產(chǎn)驗(yàn)證和權(quán)限驗(yàn)證

只對一個(gè)控制器生效的中間件:
在控制器的構(gòu)造函數(shù)中這樣寫:
public function __construct()
{
    $this->middleware('test');
}
這樣在使用控制器的時(shí)候,優(yōu)先加載中間件

Request

laravel默認(rèn)幫我們開啟了csrf驗(yàn)證,這樣我們在本地提交表單是提交不過去的,我們?yōu)榱藴y試,先關(guān)閉:

在app/Http/Kernel.php文件中,注釋掉這個(gè):
//            \App\Http\Middleware\VerifyCsrfToken::class,

這個(gè)csrf認(rèn)證可以驗(yàn)證非法請求或者表單的重復(fù)提交,后面會說道

測試request

在方法里這樣用:

public function store(Request $request)
{
   //提交到數(shù)據(jù)庫
   dd($request);
 }
 打印可以看出,里面包含了關(guān)于一次請求的所有信息
 
 取值:
 $requset['name'];

validate驗(yàn)證

在stroe方法中這樣寫:

$this->validate($request, [
  'name' => 'required',
  'email' => 'required|email',
]);

開啟錯(cuò)誤提示:

在模板引擎中這樣寫:

@if (count($errors) > 0)
<div class="alert alert-danger">
    <ul>
        @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
</div>
@endif

但是呢,驗(yàn)證都放在方法中,代碼就不會那么純潔了,我們需要一個(gè)單獨(dú)表單請求驗(yàn)證文件:

php artisan make:request StoreBlogPostRequest

新生成的類文件會被放在 app/Http/Requests 目錄下。讓我們將一些驗(yàn)證規(guī)則加入到 rules 方法中:
public function rules()
{
    return [
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ];
}

在控制器的方法中這樣使用:
public function store(StoreBlogPostRequest $request)
{
    // 傳入的請求是有效的...
}

開啟csrf認(rèn)證

打開我們之前關(guān)閉的中間件:

\App\Http\Middleware\VerifyCsrfToken::class,

然后呢,我們需要在表單中加入一個(gè)隱藏域,用來傳遞服務(wù)器傳來的token:

<input type="hidden" name="_token" value="{{ csrf_token() }}">

表單助手插件:

安裝:

composer require laravelcollective/html

配置,在config/app.php中:

Collective\Html\HtmlServiceProvider::class

別名:
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class, 

模板中這樣用:

{!! Form::open(array('route'=>'test.store','class'=>'form','novalidate'=>'novalidate')) !!}
{!! Form::label('your name') !!}
{!! Form::text('name',null,
    array('required',
        'class'=>'form-control',
        'placeholder'=>'your name')) !!}
{!! Form::label('your email') !!}
{!! Form::text('email',null,
    array('required',
        'class'=>'form-control',
        'placeholder'=>'your email address')) !!}
{!! Form::submit('添加') !!}

在用戶填寫錯(cuò)誤的時(shí)候,會保留用戶的填寫信息

orm模型

就是把數(shù)據(jù)表的結(jié)構(gòu)跟我們的一個(gè)類對應(yīng)上了

創(chuàng)建模型

數(shù)據(jù)模型建立(生成文件在app文件夾下):

普通建立:
php artisan make:model Test

建立的同時(shí)生成數(shù)據(jù)庫遷移:
php artisan make:model Test --migration

之后我們就可以在控制其中很方便的使用模型對象了:

    $test = new Test();  //要現(xiàn)在開始引入命名空間
    $test->name = $request['name'];
    $test->email = $request['email'];
    $test->save();
    // $test->where('id',1)->delete();
    dd($test->all());

利用郵件服務(wù)將表單推送到手機(jī)

為了方便將提示信息推送給用戶,我們使用郵箱服務(wù):

首先安裝email擴(kuò)展:

composer require guzzlehttp/guzzle

然后修改配置文件,根目錄下得.env文件,這樣改:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=n13521760670@163.com
MAIL_PASSWORD=******
MAIL_ENCRYPTION=null

config/mail.php也要修改:

  'from' => ['address' => 'n13521760670@163.com', 'name' => 'n13521760670@163.com'],

在控制器中這樣使用:

    $data = [
        'name' => $request->get('name'),
        'email' => $request->get('email')
    ];
    \Mail::send('email', $data, function ($m) use ($data) {
        $m->from('n13521760670@163.com', '測試發(fā)送郵件');
        $m->to('975974740@qq.com',$data['name'])->subject('laravel練習(xí)使用郵件');
    });

模板中這樣設(shè)置信息:

<p>
用戶:{{$name}} email:{{$email}}
正在練習(xí)使用laravel
</p>

利用laravel認(rèn)證模板完成用戶注冊登錄

主要是利用框架自帶的Auth模塊

未完待續(xù)...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容