先从最简单的开始:

安装

laravel 的安装需要借助 composer ,百度一下,安装,然后去 GitHub 下载 laravel

切换到项目文件夹 ,在不选中任何文件的前提下按住 shift + 鼠标右键,打开 Powershell 或者 cmd

输入:composer install

将 .env.example 另存为 .env

修改数据库配置信息和邮件系统配置信息

然后在命令行输入:php artisan key:generate 生成密钥

然后配置一个本地域名指向 public 文件夹,然后,就好了。[哈哈]

邮件

邮件系统配置示例:

1
2
3
4
5
6
7
8
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mxhichina.com
MAIL_PORT=25//465
MAIL_USERNAME=m@m-finder
MAIL_PASSWORD=邮箱密码
MAIL_FROM_NAME=M-finder
MAIL_FROM_ADDRESS=m@m-finder
MAIL_ENCRYPTION=null//ssl #如果用465端口的话,需要参数 MAIL_ENCRYPTION=ssl

邮件有 3 种模式(可能更多,暂时只接触到3种):
一种用 Mail::send 方法
一种用 Mail::raw
另外一种则是官方文档中的,新建一个类,然后发送邮件时实例化这个类。3 种方法实现的功能一样。
Mail::send

1
2
3
4
Mail::send('admin.email', ['orderPrice' => 'laravel'], function ($message) {
$message->to('m@m-finder');
$message->subject('我是自定义标题');
});

这个方法第一个参数为视图文件,视图文件的用法等同于普通视图,第二个参数为视图中所用到的数据
Mail::raw

1
2
3
4
5
6
7
$content = '这是一封来自Laravel的测试邮件.';
$toMail = 'm@m-finder';

Mail::raw($content, function ($message) use ($toMail) {
$message->subject('[ 测试 ] 测试邮件SendMail - ' . date('Y-m-d H:i:s'));
$message->to($toMail);
});

基本等同于Mail::send

第三种方法

1
2
3
4
5
6
7
8
9
10
php artisan make:controller MailController

php artisan make:mail OrderShipped

在 OrderShipped 增加内容

return $this->view('admin.email')->with([
'orderName' => 'test',
'orderPrice' => 1500,
]);

然后在要发送邮件的方法中调用:

1
Mail::to('m@m-finder')->send(new OrderShipped());

开放路由,访问下就可以了。

如果需要自定义邮件标题,可以试一下以下方法(未测试):

在你的类中定义一个subject变量:

1
public $subject = '这里是邮件自定义标题';

或者在你的view后跟一个subject方法:

1
view('emails.activate-user')->subject('这里定义邮件标题');

多视图共享数据

在 app\Providers 文件夹下 boot() 方法中写入要共享的数据即可 , 例如 :

1
2
3
4
5
6
7
8
9
10
11
12
public function boot() {
$links = Link::orderBy('id', 'desc')->get();
$web_info = SysConfig::first();
$menus = Menu::select('id', 'name', 'type', 'seo_title', 'seo_describe', 'link')
->where('pid', '=', 0)
->where('is_show', '=', '2')
->get();

view()->share('links', $links);
view()->share('web_info', $web_info);
view()->share('menus', $menus);
}

这样写完以后,你会发现你的 migrate 挂了,哈哈 ,解决办法是使用闭包,即 composer 方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
public function boot() {
Schema::defaultStringLength(191); //解决数据库版本过低无法执行 migrate

view()->composer(['layouts.home', 'layouts.userhome','layouts.admin'], function($view) {
$links = Link::orderBy('id', 'desc')->get();
$web_info = SysConfig::first();
$menus = Menu::select('id', 'name', 'type', 'seo_title', 'seo_describe', 'link')
->where('pid', '=', 0)
->where('is_show', '=', '2')
->get();
$view->with(['links' => $links, 'web_info' => $web_info, 'menus' => $menus]);
});
}

文件上传

config 文件夹下有一个 filesystems.php,里边是默认的上传地址,可以根据自己的需要做修改或者添加

上传的控制器代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if ($file->isValid()) {
if ($file->getClientSize() > 2097152) {
return $this->json_response(1, "请上传小于 2 mb 的图片", 0);
}
$ext = $file->getClientOriginalExtension();
$realPath = $file->getRealPath();
$type = $file->getClientMimeType();
$filename = date('Y-m-d-H-i-s') . '-' . uniqid() . '.' . $ext;
$bool = Storage::disk($path)->put($filename, file_get_contents($realPath));
$url = Storage::disk($path)->url($filename);
if ($filename) {
return ['code' => 0, 'msg' => '', 'src' => $url,
'data'=>['src'=>$url,'title'=>$filename]];
//{"code": 0 ,"msg": "" ,"data": {"src": "图片路径","title": "图片名称"} layui 图片上传接口
}
}

访问上传到本地的文件资源,需要先创建一个软连接:php artisan storage:link

一个页面中,如果有 ajax 调取数据的,可以把 ajax 使用的路由和页面的路由名称定义为同一个,不同的是页面是 get ,ajax 是 post

自定义404页面

在 app\Exceptions文件夹下的Hander中有个render方法,改造一下:

1
2
3
4
5
6
7
8
9
10
11
12
public function render($request, Exception $exception){

if ($exception instanceof ModelNotFoundException) {
$exception = new NotFoundHttpException($exception->getMessage(), $exception);
}

if ( ! config('app.debug')) {
return response()->view('errors.500', [], 500);
}

return parent::render($request, $exception);
}

然后在views文件夹新建error文件夹和对应错误代码的blade文件。