Laravel 开发笔记
homestead
查看 vagrant 版本vagrant -v
接下来看文档安装homestead
https://learnku.com/docs/laravel/6.x/homestead
销毁 hometeadvagrant destroy
或者 在虚拟机里面直接删除
重装 hometead
vagrant up
重新编译配置文件vagrant reload --provision
安装laravel
composer create-project laravel/laravel weibo --prefer-dist "5.8.*"
升级laravel到指定版本 (更改数字部分)执行 composer update"laravel/framework": "5.8.*", "laravel/framework": "6.0.*",
查看laravel 版本php artisan -v
时区'timezone' => 'UTC',
更改'timezone' => 'Asia/Shanghai',
注册登陆功能
生成auth脚手架php artisan make:auth
查看路由列表php artisan route:list
创建模型 -h 参数查看帮助 php artisan make:model Tag -h
数据库设计与操作
查看迁移状态php artisan migrate:status
数据迁移 php artisan migrate
数据回滚php artisan migrate:rollback
重置php artisan migrate:refresh --seed
开发过程中更改数据结构的两种方式
更新数据结构php artisan make:migration add_users_id --table=projects
添加字段
$table->integer('user_id');
回滚
$table->dropColumn('user_id');
生成数据表 php artisan make:migration create_projects_table
模板视图
laravel里视图模板的扩展与区块声明
模板区块
<main class="py-4">
@yield('content')
</main>
继承
@extends('layouts.app')
@section('content')
内容
@endsection
局部视图 复用
_ create.blade.php
引入
@include('projects._createModal')
解析符
{{ asset('js/app.js') }}
{{ mix('js/app.js') }}
laravel里的前端框架的选择与切换
php artisan preset -h
移走前端框架php artisan preset none
移走前端框架phpphp artisan preset bootstrap php artisan preset vue
在artisan preset none以后再执行artisan preset bootstrap,就会导致bootstrap这个前端框架的js文件没有加载上,同时jQuery也没有加载上,从而导致我们课程中的模态框只是有css样式,但是点击并不会弹出模态框
(问题原因)
由于这个preset命令的bug,导致resources/js/bootstrap.js中下面这块代码没有被加上
try { window.Popper = require('popper.js').default; window.$ = window.jQuery = require('jquery'); require('bootstrap'); } catch (e) {} 可以看到这块的作用就是尝试加载bootstrap和jQuery相应的js文件
(问题解决)
如果遇到了上述问题,就在你的resources/js/bootstrap.js中加入上面的这块代码,然后再编译即可
下载新版错误调试工具composer require facade/ignition
文档
博客:使用 Ignition 替换 whoops 报错提示
设置淘宝镜像npm config set registry "https://registry.npm.taobao.org"
yarn 安装 windows
yarn install --no-bin-links
cross-env: not found 解决
删除 cross-env 在 package.json
新版框架需要执行
yarn add vue-template-compiler --save-dev
编译和安装
.version()
npm run dev
npm run production`
使用laravel collective form新建项目表单
https://laravelcollective.com/docs/5.6/htm...
安装 composer update
模板视图
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#modelId">
Launch
</button>
<!-- Modal -->
<div class="modal fade" id="modelId" tabindex="-1" role="dialog" aria-labelledby="modelTitleId" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">新建项目</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
{!! Form::open(['route'=>'projects']) !!}
<div class="modal-body">
<div class="form-group">
{!! Form::label('name', '项目名称:',) !!}
{!! Form::text('name', '', ['class'=>'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('thumbnail', '项目图片:',) !!}
{!! Form::file('thumbnail', ['class'=>'form-control-file']) !!}
</div>
</div>
<div class="modal-footer">
{!! Form::submit('保存', ['class'=>'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
auth middleware的使用及原理介绍
权限验证
$this->middleware('auth');
图片上传
php artisan storage:link // 在linux 环境下生成软连接 ll public
安装图片管理组件composer require intervention/image
文档 api
http://image.intervention.io/getting_start...
//存取图片
public function thumb($request)
{
if ($request->hasFile('thumbnail')) { //是否有上传文件
$thumb = $request->thumbnail;
$name = $thumb->hashName();
$thumb->storeAs('public/thumbs/original', $name);
$path= storage_path('app/public/thumbs/cropped/'.$name);
Image::make($thumb)->resize(200, 90)->save($path);//需要手动创建文件夹
return $name;
}
}
引用src="{{ asset('storage/thumbs/original/'.$project->thumbnail) }}"
定义一对关系
定义user和project之间的关系 用户有几个项目
user.php
public function projects(){
return $this->hasMany(Project::class);
}
projects.php
public function user(){
// 调用关系 $projec->user
return $this->belongsTo(User::class);
}
通过关系添加数据
public function store(Request $request)
{
$request->user()->projects()->create([
'name'=>$request->name,
'thumbnail'=>$request->thumbnail
]);
}
允许添加数据的字段
protected $fillable=[
'name','thumbnail'
];
表单验证 php artisan make:request ProjectsRequest
public function rules()
{
return [
'name' => [
'required',
Rule::unique('projects')->where(function ($query) {
return $query->where('user_id', request()->user()->id);
})
],
'thumbnail' => 'image|dimensions:min_width=260'
];
}
public function messages()
{
return [
'name.required' => '项目名称必填',
'name.unique' => '项目名称必须唯一',
'thumbnail.image' => '图片格式错误',
];
}
@if($errors->any())
<ul class="alert alert-danger">
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
判断一个集合是否为空
@if(count($projects)>0)
@if(!$projects->isEmpty())
@each
<div class="card-deck">
@each('projects._card',$projects,'project')
</div>
_card.blade.php
<div class="col-3 my-3">
<a href="projects{{ $project->id }}" class="card">
<img class="card-img-top" src="{{ asset('storage/thumbs/original/'.$project->thumbnail) }}" alt="">
<div class="card-body">
<h5 class="card-title text-center"> {{ $project->name }}</h5>
</div>
</a>
</div>
删除功能
{!! Form::open(['route'=>['projects.destroy',$project->id],'method'=>'DELETE']) !!}
<button type="submit" class='btn btn-default'>
<i class="fa fa-btn fa-times"></i>
</button>
{!! Form::close() !!}
编辑功能
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: