Laravel admin框架踩坑記錄

一、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)算出總金額涩拙。

計(jì)算出總金額

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)題

數(shù)據(jù)庫(kù)

后臺(tái)

顯示效果
  $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')));
    }
}

前人栽樹(shù)后人乘涼篇

他人踩坑記錄http://www.reibang.com/p/06df99ce22c2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子抹蚀,更是在濱河造成了極大的恐慌剿牺,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件环壤,死亡現(xiàn)場(chǎng)離奇詭異晒来,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)郑现,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門湃崩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人接箫,你說(shuō)我怎么就攤上這事竹习。” “怎么了列牺?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵整陌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我瞎领,道長(zhǎng)泌辫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任九默,我火速辦了婚禮震放,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驼修。我一直安慰自己殿遂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布乙各。 她就那樣靜靜地躺著墨礁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耳峦。 梳的紋絲不亂的頭發(fā)上恩静,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音蹲坷,去河邊找鬼驶乾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛循签,可吹牛的內(nèi)容都是我干的级乐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼县匠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼风科!你這毒婦竟也來(lái)了罕扎?” 一聲冷哼從身側(cè)響起坎缭,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎湿酸,沒(méi)想到半個(gè)月后履婉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡土思,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崖蜜。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖客峭,靈堂內(nèi)的尸體忽然破棺而出豫领,到底是詐尸還是另有隱情,我是刑警寧澤舔琅,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布等恐,位于F島的核電站,受9級(jí)特大地震影響备蚓,放射性物質(zhì)發(fā)生泄漏课蔬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一郊尝、第九天 我趴在偏房一處隱蔽的房頂上張望二跋。 院中可真熱鬧,春花似錦流昏、人聲如沸扎即。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谚鄙。三九已至,卻和暖如春刁绒,著一層夾襖步出監(jiān)牢的瞬間襟锐,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工膛锭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粮坞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓初狰,卻偏偏與公主長(zhǎng)得像莫杈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奢入,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容