这里主要是通过慕课网轻松学会Laravel-基础篇进行学习 Laravel 框架,这里的内容都是学习之后的笔记。
1)Laravel 的安装及核心目录文件;
环境:PHP5.5.9+;
下载:Laravel & Lumen 一键安装包下载;
运行:把框架解压放到项目运行目录下面,浏览器输入http://192.168.2.110/laravel/public
,可以看到Laravel 5页面,成功安装;
运行过程:
// 文件:laravel/app/Http/route.php
Route::get('/', function () {
return view('welcome');
});
// 文件:laravel/resources/views/welcome.blade.php
模板文件,“Laravel 5”页面显示
2)路由;
路由简单的说就是将用户的请求转发给相应的程序进行处理;
路由的作用是建立 url 和程序之间的映射;
请求类型包括get、post、put、match、delete;
以下代码在路由文件 laravel/app/Http/route.php 编写
a)基础路由
Route::get('basic1', function(){
return 'Hello World';
}); // 访问路径:http://192.168.2.110/laravel/public/basic1
Route::post('basic2', function(){
return 'Basic2';
}); // post请求不能通过浏览器域名访问的
b)多请求路由
// 混合请求
Route::match(['get', 'post'], 'multy1', function() {
return 'multy1';
}); // 访问路径:http://192.168.2.110/laravel/public/multy1
// 响应所有请求
Route::any('multy2', function() {
return 'multy2';
}); // 访问路径:http://192.168.2.110/laravel/public/multy2
c)路由参数
Route::get('user/{id}', function($id){
return 'User-id-' . $id;
}); // 访问路径:http://192.168.2.110/laravel/public/user/1
// 如果不带参数,显示“User-name-”
Route::get('user/{name?}', function($name = null){
return 'User-name-' . $name;
}); // 加问号,才能够访问http://192.168.2.110/laravel/public/user,否则报错
// 如果不带参数,显示“User-name-sean”
Route::get('user/{name?}', function($name = 'sean'){
return 'User-name-' . $name;
});
d)正则表达式
// 不符合where里的规则,这无法访问,会报错
Route::get('user/{name?}', function($name = 'sean'){
return 'User-name-' . $name;
})->where('name', '[A-Za-z]+');
// 多个参数情况
Route::get('user/{id}/{name?}', function($id, $name = 'sean'){
return 'User-id-' . $id . '-name-' . $name;
})->where(['id'=>'[0-9]+', 'name'=>'[A-Za-z]+']);
e)路由别名
// 使用别名,可以在控制器或者路由或者模板等,用 “route()” 函数生成别名对应的URL;
// 注意中括号位置,是把别名和function括起来;
Route::get('user/center', ['as' => 'center', function() {
return route('center');
}]);
// 显示结果:http://192.168.2.110/laravel/public/user/center
f)路由群组
//加前缀prefix为member
Route::group(['prefix' => 'member'], function() {
Route::get('user/center', ['as' => 'center', function() {
return route('center');
}]); //该路由路径为:http://192.168.2.110/laravel/public/member/user/center
Route::any('multy2', function() {
return 'member-multy2';
}); //该路由路径为:http://192.168.2.110/laravel/public/member/multy2
});
g)路由中输出视图
Route::get('/view', function () {
return view('welcome');
}); //该路由路径为:http://192.168.2.110/laravel/public/view
3)控制器;
控制器文件:在项目下建立 laravel/app/Http/Controllers/MemberController.php
<?php
namespace App\Http\Controllers; //需要定义命名空间
class MemberController extends Controller
{
public function info()
{
// echo route('memberinfo') . '<br />';
return 'member-info';
}
public function info2($id)
{
return 'member-info-id-' . $id;
}
}
路由定义:laravel/app/Http/route.php
// 两种定义路由方式
Route::get('member/info', 'MemberController@info');
Route::get('member/info', ['uses' => 'MemberController@info']);
// 起别名
Route::any('member/info', [
'uses' => 'MemberController@info',
'as' => 'memberinfo'
]);
// 参数绑定
Route::any('member/{id}', ['uses' => 'MemberController@info2'])->where('id', '[0-9]+');
4)视图;
a)视图的输出
// 路由
Route::get('member/info', 'MemberController@info');
// 控制器路径:laravel/app/Http/Controllers/MemberController.php
public function info() {
return view('member-info');
}
// 视图路径:laravel/resources/views/member-info.php
member-info php
// 最终在浏览器输入 http://192.168.2.110/laravel/public/member/info 即可看到视图内容
b)变量的输出
// 路由
Route::get('member/info', 'MemberController@info');
// 控制器路径:laravel/app/Http/Controllers/MemberController.php
public function info() {
return view('member/info', [
'name' => '天秤vs永恒',
'age' => 18,
]);
}
// 视图路径:laravel/resources/views/member/info.blade.php
member/info blade
{{$name}} {{$age}}
// 最终在浏览器输入 http://192.168.2.110/laravel/public/member/info 即可看到视图内容
member/info blade 天秤vs永恒 18
5)模型;
// 路由路径:laravel/app/Http/routes.php
Route::get('member/info', 'MemberController@info');
// 模型路径:laravel/app/Member.php (模型文件首字母需要大写)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Member extends Model
{
public static function getMember()
{
return 'member name is sean';
}
}
// 控制器路径:laravel/app/Http/Controllers/MemberController.php
<?php
namespace App\Http\Controllers;
use App\Member; //需要调用模型类
class MemberController extends Controller
{
public function info()
{
return Member::getMember();
}
}
// 最终在浏览器输入 http://192.168.2.110/laravel/public/member/info 即可看到视图内容
member name is sean