目录
1,目录文件
2,运行原理
3,用laravel开发简单展示界面
<1>框架连接数据库
env文件
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=studyla
DB_USERNAME=root
DB_PASSWORD=zhaoheng
<2>设置路由(并创建控制器与方法)
Route::get('/', function () {
return view('welcome');
});
// 自定义路由
Route::get('/user',"IndexController@Index");
访问/user,发现IndexController不在
D:\laravel\studyla>php artisan make:controller IndexController
Controller created successfully.
class IndexController extends Controller
{
public function index(){
echo "我找到了Index Controller下的index方法";
}
}
<3>链接数据库并打印数据
public function index(){
$data = DB::table("users")->get();
dd($data);
}
<4>新建页面
4,环境配置(.env)
<1>应用程序密钥
若是删掉密钥,则会提示
新生成一个密钥
<2>APP_DEBUG默认(true)
网站开发时开启,上线后必须关闭将开发模式关闭
<3>获取环境配置
5,php artisan (php 工具匠)
<1>本身就是一些php文件,可以在命令行下执行
可以完成 创建控制器,创建中间件,生成密钥等
<2>eg:网站上下线
php artisan down
php artisan up
网站下线默认展示页面:
<3>eg:查看路由列表
6,路由
注意:命名空间
路由中name的使用:
辅助函数 route 可以用于为指定路由生成 URL,就算路由的 URL 有任何更改,都不需要对 route 函数调用进行任何更改,减少了耦合度
例如:
Route::get('user_addresses/create','UserAddressesController@create')->name('user_addresses.create');
在页面中使用时:
<a href="{{route('user_addresses.create')}}" class="float-right">新增收货地址</a>
这样在url要发生更改时,不需要在页面进行更改
资源路由的使用
不仅节省很多代码,且严格遵循了 RESTful URI 的规范,
Route::resource('users', 'UsersController', ['only' => ['show', 'update', 'edit'] ])
相当于
Route::get('/users/{user}', 'UsersController@show')->name('users.show');
Route::get('/users/{user}/edit', 'UsersController@edit')->name('users.edit');
Route::patch('/users/{user}', 'UsersController@update')->name('users.update');
7,模板继承 和 区块
@yield
指令是用来显示指定部分的内容
<div class="container">
@yield('content')
</div>
@extends('layouts.app')
@section('content')
<p>这是主体内容。</p>
@endsection
@section
指令定义了视图的一部分内容
<title>App Name - @yield('title')</title>
@extends('layouts.app')
@section('title', 'Page Title')
8,路由搭建(用group前后台分开)
// 前台路由
Route::group(['namespace' => "Home"],function(){
// 控制器在"App\Http\Controllers\Home"命名空间下
Route::get('/',"IndexController@index");
Route::get('/home/user',"UserController@index");
Route::get('/home/goods',"GoodsController@index");
});
// 后台路由,通过路由组,提取公共路由空间和前缀
Route::group(['namespace' => "Admin",'prefix' => 'admin'],function(){
// 控制器在"App\Http\Controllers\Admin"命名空间下
Route::get('/',"IndexController@index");
Route::get('user',"UserController@index");
Route::get('goods',"GoodsController@index");
});
9,控制器搭建
10,中间件
<1>路由书写
Route::group(['namespace' => "Admin",'prefix' => 'admin',"middleware" => "addminLogin"],function(){
// 控制器在"App\Http\Controllers\Admin"命名空间下
Route::get('/',"IndexController@index");
Route::get('user',"UserController@index");
Route::get('goods',"GoodsController@index");
});
<2>新建中间件
D:\laravel\studyla>php artisan make:middleware adminLogin
Middleware created successfully.
<3>注册中间件
Http的Kernel文件下
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'adminLogin' => \App\Http\Middleware\adminLogin::class,
<4>编写中间件
用session检测管理员是否登录,若未登录则跳转到登录界面
路由设置:
Route::get('admin/login',"LoginController@index");
Route::post('admin/check',"LoginController@check");
中间件:
public function handle($request, Closure $next)
{
if(session("adminUser")){
return $next($request);
}else{
return redirect("admin/login");
}
}
登录检查,若登陆成功则设置相关session:
public function index(){
return view("admin.login");
}
public function check(){
if($_POST["name"]=="zhaoheng" && $_POST["pass"]=="zhaoheng"){
session(["adminUser" => $_POST["name"]);
return "登录成功";
}else{
return view("admin.login");
}
}