Laravel基础内容
laravel常用命令
composer create-project --prefer-dist laravel/laravel blog // 创建项目
php artisan make:controller HomeController 创建控制器
php artisan make:controller Admin/IndexController 在文件夹下创建Controller
php artisan make:model Blog
php artisan route:list 列出所有route
php artisan migrate // 创建表
php artisan migrate:rollback // 回滚到上一次之前
常用php函数
路由
route('路由的名字') // 输出路由地址
路由前缀
Route::get('admin/index', 'Admin\IndexController@index');
Route::get('admin/login', 'Admin\IndexController@login');
有公共部分admin,可以修改为下面
Route::prefix('admin')->group(function () {
Route::get('index', 'Admin\IndexController@index');
Route::get('login', 'Admin\IndexController@login');
});
有公共部分前缀和命名空间,可以继续修改为如下:
Route::group(['prefix'=>'admin','namespace'=>'Admin'],function(){
Route::get('index', 'IndexController@index');
Route::get('login', 'IndexController@login');
});
跳转
back()表示返回,with带参数返回
return back()->with('msg','用户名或密码错误!');
redirect()跳转命令
return redirect('admin/index'); // 跳转到后台主页
资源控制器
创建资源控制器
php artisan make:controller PhotoController --resource
创建资源路由
Route::resource('photos', 'PhotoController');
中间键
1.创建中间件
php artisan make:middleware AdminLogin
2.在Kernel.php中添加
protected $routeMiddleware = [
'admin.login' => \App\Http\Middleware\AdminLogin::class, // 创建admin.login 中间件
];
3.在路由中添加middleware
Route::group(['prefix'=>'admin','namespace'=>'Admin','middleware'=>['web','admin.login']],function(){
Route::get('index', 'IndexController@index');
Route::get('login', 'IndexController@login');
Route::resource('article', 'ArticleController');
});
视图
在控制器里返回视图模板
public function index(){
$name='jake';
$age='12';
return view('index')->with('name',$name)->with('age',$age);
}
第二种方法传值:
public function index(){
$data = [
'name'=>'jake',
'age'=>'12',
];
return view('index',$data);
}
第三种方法:
public function index(){
$data = [
'name'=>'jake',
'age'=>'12',
];
$title="This is a title";
return view('index',compact('data','title'));
}
模板引擎
{{ $name }} // 输出$name
{{ $name or 'undefined' }} // 如果$name为空字符,输出undefined
@{{ $name }} // @屏蔽不输出
{{ isset($name)?$name:'undefined' }} // 判断name是否传值
{!! <p>This is content</p> !!} // 格式化输出内容
条件判断
<p>{{ $data['score'] }}</p>
@if ($data['score']>60)
<p>及格</p>
@else
<p>不及格</p>
@endif
除非结构
// 输出不及格的
@unless ($data['score']>60)
不及格
@endunless
for循环
@for ($i=0; $i <= $data['num']; $i++)
<p>{{ $i }}</p>
@endfor
foreach遍历
@foreach ($data as $key => $value)
<p>{{ $key }} - {{ $value }}</p><br>
@endforeach
forelse 遍历
@forelse ($data['test'] as $key => $value)
<p>{{ $key }} - {{ $value }}</p><br>
@empty
没有数据
@endforelse
模板引擎子视图
@include('common.header') 公共模板引入
@include('common.header',['title'=>'文章'])
模板继承
layouts下的home.blade.php
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="header">
header
</div>
@yield('content')
<div class="footer">
footer
</div>
</body>
</html>
引入模板
@extends('layouts.home')
@section('content')
<div class="content">
this is a content
</div>
@endsection
@extends('layouts.home')
@section('content')
@parent // 继承父模板
<div class="content">
this is a content
</div>
@endsection
模板继承
自动在每个方法view中添加'cate'
public function __construct(){
View::share('cate','user');
}
数据库
给数据库添加前缀
'mysql' => [
'prefix' => env('DB_PREFIX',''),
'prefix_indexes' => true,
]) : [],
],
在.env文件中添加
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
DB_PREFIX=blog_ // 添加前缀
配置项输出
echo config('app.debug'); // 输出是否是调试阶段
echo config('app.timezone'); // 输出时区
echo config('database.default'); // 默认数据库
数据库的创建migrate
Laravel使用imgrate创建数据表与Seed创建文件,点击https://www.cnblogs.com/carious/p/11346158.html
数据库查询
$users = DB::table('users')->where('user_id','>',1)->get(); // 查询users表
如果判断数据是否存在
return DB::table('orders')->where('finalized', 1)->exists();
return DB::table('orders')->where('finalized', 1)->doesntExist();
Model的一般使用
php artisan make:model Http/Model/User // 创建User模型
自定义表名
protected $table = 'user'; // 设置表名
模型取数据
$user = User::where('user_id',1)->get();
dd($user);
另外一种方法
$user = User::find(1);
dd($user);
需要注意,修改默认id
protected $primaryKey = 'user_id'; // 默认主键为id,重新设置主键
更新时不需要设置修改时间
$user->user_name='kare';
$user->update();
public $timestamps = false; // 默认时间戳修改禁用
session
session清空
session(['user'=>null]) // session()中存储的是数组
文件接收
$file = Input::file('file');
文件目录设置
app_path()
app_path函数返回app目录的绝对路径:
$path = app_path();
你还可以使用app_path函数为相对于app目录的给定文件生成绝对路径:
$path = app_path('Http/Controllers/Controller.php');
base_path()
base_path函数返回项目根目录的绝对路径:
$path = base_path();
你还可以使用base_path函数为相对于应用目录的给定文件生成绝对路径:
$path = base_path('vendor/bin');
config_path()
config_path函数返回应用配置目录的绝对路径:
$path = config_path();
database_path()
database_path函数返回应用数据库目录的绝对路径:
$path = database_path();
public_path()
public_path函数返回public目录的绝对路径:
$path = public_path();
storage_path()
storage_path函数返回storage目录的绝对路径:
$path = storage_path();
还可以使用storage_path函数生成相对于storage目录的给定文件的绝对路径:
$path = storage_path('app/file.txt');
表单提交
POST提交
{{ csrf_field() }}
PUT
@method('PUT')
{{ csrf_field() }}
url路径设置
{{ route('category.update') }}
{{ url('admin/category/create') }}
{{ asset('admin/styles/extras.1.1.0.min.css') }}
带参数
{{ route('category.edit',$category->cate_id) }}
{{ url('admin/category/'.$category->cate_id.'/edit') }}