一、config()可以獲取到config文件夾下定義的文件當(dāng)中的值膀钠。例如
config下的common.php中:
<?php
return [ 'rel' =>[ '1' => 'default', '2' => 'warning', '3' => 'success' ], ];
//調(diào)用
$config=config('common.rel');
//輸出
'1' => 'default', '2' => 'warning', '3' => 'success'
注意:在common.php中更改過(guò)之后需要在composer執(zhí)行
php artisan config:cache
作用是清除緩存掏湾,這樣才可以獲取到值,不然的話獲取的值為null托修。
二忘巧、通過(guò)數(shù)據(jù)庫(kù)中已有的數(shù)據(jù)恒界,運(yùn)算得到新數(shù)據(jù)睦刃,追加到顯示頁(yè)面。例如已知單價(jià)和數(shù)量十酣,自動(dòng)運(yùn)算出總金額涩拙。
controller中
$grid->column('price', __('TaskReleases.Price'));
$grid->column('task_count', __('TaskReleases.Task count'));
//總金額
$grid->column('total_price', __('TaskReleases.Count'));
model 首先要定義追加的字段名际长,然后設(shè)置laravel 獲取器
protected $appends = ['total_price'];
//金額自動(dòng)運(yùn)算,單價(jià)*數(shù)量
public function getTotalPriceAttribute(){
return $this->price*$this->task_count;
}
詳細(xì)講解:https://www.cnblogs.com/zqblog1314/p/12877152.html
三兴泥、多圖上傳及點(diǎn)擊放大功能的實(shí)現(xiàn)
上傳多圖:
添加修改方法:
// 本例中字段是imgurl工育,所以添加如下代碼
$form->multipleImage('imgurl', __('商品圖片'));
model
public function setPicturesAttribute($pictures)
{
if (is_array($pictures)) {
$this->attributes['pictures'] = json_encode($pictures);
}
}
public function getPicturesAttribute($pictures)
{
return json_decode($pictures, true);
}
原理為獲取器,注意函數(shù)名要遵循駝峰式命名搓彻,不能出現(xiàn)下劃線_
點(diǎn)擊放大功能
composer安裝擴(kuò)展
composer require laravel-admin-ext/grid-lightbox
php artisan vendor:publish --tag=laravel-admin-grid-lightbox
配置
打開(kāi)config/admin.php如绸,將屬于此擴(kuò)展的配置添加到extensions部分。
'extensions' => [ 'grid-lightbox' => [
// Set to `false` if you want to disable this extension
'enable' => true,
] ]
controller中:
$grid->image(__('TaskRecord.Image'))->lightbox(['width' => 50, 'height' => 50]);
四旭贬、有表連接時(shí)的添加修改或者篩選
form方法:
$type = TaskType::pluck('tname','id');
$form->select('type', __('TaskReleases.Type'))->options($type)->rules('required');
篩選:
$grid->filter(function($filter){
$type = TaskType::pluck('tname','id');
// 在這里添加字段過(guò)濾器
$filter->equal('type', __('TaskReleases.Type'))->select($type);
});
五怔接、行操作,添加新的操作按鈕
參考 https://laravel-admin.org/docs/zh/1.x/model-grid-custom-actions
Examine.php
namespace App\Admin\Actions\Product;
use Encore\Admin\Actions\RowAction;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class Examine extends RowAction
{
public $name = '審核';
public function handle(Model $model, Request $request)
{
$model->status = $request->input('status');
$model->reason = $request->input('reason');
$model->statustype = 2;//2為人工審核
$model->update();
return $this->response()->success('審核成功')->refresh();
}
public function form(Model $model)
{
$this->radio('status', '審核')->options([1 => '通過(guò)', 2 => '拒絕'])->rules('required');
$this->text('reason', '審核原因')->rules('required');
}
}
TaskReleasesController .php
//首先引用類
use App\Admin\Actions\Product\Examine;
$grid->actions(function ($actions) {
// 通過(guò)狀態(tài)信息添加操作按鈕
if(0==$actions->row->status){
$actions->add(new Examine());
}
});
六稀轨、回調(diào)函數(shù)
官方文檔 https://laravel-admin.org/docs/zh/1.x/model-form-callback
$form->saved(function (Form $form) {
$code = $form->model()->id;
$now_task=$form->model()->task_count;
DB::table('task_releases')->where('id',$code)->update(['now_task' => $now_task]);
});
七扼脐、配置問(wèn)題
$grid->column('task_demand', __('TaskReleases.Task demand'))->display(function($taskdemand) {
$demand=DB::table("config")->where("group","=","任務(wù)要求")->pluck("name","value")->toarray();
$str = '';
if($taskdemand){
foreach($taskdemand as $tid){
$str .=$demand[$tid]." | ";
}
$str = trim($str," | ");
}
return $str;
});
八、DB查詢
DB類之查詢:
2、滿足條件的第一列獲扔缎场:DB::table("表名")->where("name",">","1")->first();
3肚吏、滿足條件的全部字段:DB::table("表名")->where("name",">","1")->lists("title");
4、滿足條件的單一字段:
DB::table("表名")->where("name",">","1")->pluck("title");//返回二位字段值數(shù)組
DB::table("表名")->where("name",">","1")->pluck("title","name");//返回二位字段值數(shù)組 第二個(gè)參數(shù)指定key
5台谍、分塊查詢數(shù)據(jù)列:
DB::table("表名")->chunk(100,function($users){
//$users to do $user是table中2行一次查詢的結(jié)果
//return false; 停止處理接下來(lái)的數(shù)據(jù)
})
6须喂、指定查詢字句:DB::table("表名")->select("name","email")->get();
7、增加查詢子句到已有查詢中:$query=DB::table("表名")->select("name","email");$query->addSelect("age")->get();
8趁蕊、條件查詢where和orWhere:DB::table("表名")->where("name",">","10")->orWhere("titile","=","0")->get();
9坞生、條件查詢whereBetween和whereNotBetween:DB::table("表名")->where("name",">","10")->whereBetween("titile","=","[0,10]")->get();
10、條件查詢whereIn:DB::table("表名")->where("name",">","10")->whereIn("titile","[1,2,3]")->get();
11掷伙、條件查詢whereNull:DB::table("表名")->where("name",">","10")->whereNull("titile")->get();//未配置的值
12是己、條件查詢where Clauses:DB::table("表名")->where("name",">","10")->whereNameAndTitle("name",titile")->get();
13任柜、排序(Drder By),分群(Group By)及 Having:$users=DB::table("users")->orderBy("name","desc")->groupBy("count")->having("count",">",100)->get()
14卒废、偏移(Offset)及 限制 (Limit)$users=DB::table("users")->skip(10)->take(5)->get();
九、富文本編輯器
安裝參考https://www.cnblogs.com/fogwang/p/11781191.html
富文本使用
$form->ueditor('content', __('ArticleContent.Content'))->rules('required');
detail方法中需要設(shè)置禁止轉(zhuǎn)義
官方文檔https://laravel-admin.org/docs/zh/2.x/model-show#%E5%86%85%E5%AE%B9%E8%BD%AC%E4%B9%89
$show->field('content', __('ArticleContent.Content'))->unescape();
十宙地、模型表單布局
$form = new Form(new Document);
// 第一列占據(jù)1/2的頁(yè)面寬度
$form->column(1/2, function ($form) {
// 在這一列中加入表單項(xiàng)
$form->text('title', __('Title'))->rules('min:10');
$form->textarea('desc', __('Desc'))->required();
$form->select('uploader_id', __('Uploader'))
->options(User::all()->pluck('name', 'id'))
->rules('required');
;
$form->file('path', __('Path'))->required();
});
// 第二列占據(jù)右邊1/2的頁(yè)面寬度
$form->column(1/2, function ($form) {
$form->number('view_count', __('View count'))->default(0);
$form->number('download_count', __('Download count'))->default(0);
$form->number('rate', __('Rate'))->default(0);
$form->radio('privilege', __('Privilege'))
->options(Document::$privileges)
->stacked()
->default(1);
$form->datetimeRange('created_at', 'updated_at');
});
return $form;
十一摔认、laravel-admin圖表
安裝圖表擴(kuò)展
composer require laravel-admin-ext/chartjs
php artisan vendor:publish --tag=laravel-admin-chartjs
開(kāi)啟擴(kuò)展位置在 config/admin.php,extensions這一欄
'extensions' => [
'chartjs' => [
// 如果你想關(guān)閉的話將true改為false
'enable' => true,
]
]
添加模板文件 resources/views/admin/chartjs.blade.php宅粥,內(nèi)容:
<canvas id="myChart" width="400" height="400"></canvas>
<script>
$(function () {
var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes', //數(shù)據(jù)類型 折線圖
type: "line",
data: [12, 19, 3, 5, 2, 3],
backgroundColor:'rgba(54, 162, 235, 0.1)',
borderColor:'rgba(255,99,132,1)',
borderWidth: 1
},{
label: '# of Votes', //數(shù)據(jù)類型 柱狀圖
type: "bar",
data: [16, 13, 11, 15, 2, 3],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'red',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: { //顯示數(shù)值
"animation": {
"duration": 1,
"onComplete": function() {
var chartInstance = this.chart,
ctx = chartInstance.ctx;
ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily); //設(shè)置字體顏色
ctx.fillStyle = "black";
ctx.textAlign = 'center';
ctx.textBaseline = 'bottom';
this.data.datasets.forEach(function(dataset, i) {
var meta = chartInstance.controller.getDatasetMeta(i);
meta.data.forEach(function(bar, index) {
var data = dataset.data[index];
ctx.fillText(data, bar._model.x, bar._model.y - 5);
});
});
}
},
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
});
</script>
controller参袱,用的時(shí)候:
use Encore\Admin\Widgets\Box;
class ChartjsController extends Controller
{
public function index(Content $content)
{
return $content
->header('Chartjs')
->body(new Box('Bar chart', view('admin.chartjs')));
}
}