檢視 vagrant 版本vagrant -v
接下來看文件安裝homestead
https://learnku.com/docs/laravel/6.x/homestead
銷燬 hometeadvagrant destroy
或者 在虛擬機器裡面直接刪除
重灌 hometead
vagrant up
重新編譯配置檔案vagrant reload --provision
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') }}
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`
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>
許可權驗證
$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() !!}