laravel-admin 自定义行操作的一个问题

问题描述

laravel-admin 自定义行操作时怎么延迟载入呢?

我在列表中添加了一个按钮
image.png
点击出库时会显示一个form , form方法里执行了数据库关联查询 在列表渲染时他就会去执行form方法 如果列表有50条数据 他就会关联查询数据库50次 怎么让只有点击出库时在执行form呢? 以及在form方法中是否支持switch 开关(文档上自定义行操作那章节没找到)

protected function grid()
{
        $grid = new Grid(new Product);

        $grid->model()->orderBy('id', 'desc')->where('is_sales', '1');
        $grid->actions(function ($actions) {
            $actions->disableEdit();

            // $actions->append('<a href="javascript:;"><i class="fa fa-eye"></i></a>');
            $actions->add(new Sales());
        });
}

namespace App\Admin\Actions\Product;

use Encore\Admin\Actions\RowAction;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;

class Sales extends RowAction
{
    public $name = '出库';

    public function handle(Model $model, Request $request)
    {
        $model->is_sales            = 2;
        $model->sales_time          = time();
        $model->sell_price          = $request->input('sell_price');
        $model->postage             = $request->input('postage');
        $model->courier_number      = $request->input('courier_number');
        $model->warranty_program    = $request->input('warranty_program');
        $model->sales_customer_type = $request->input('sales_customer_type');
        $model->save();

        return $this->response()->success('出库成功')->refresh();
    }

    public function form(Model $model)
    {
        $this->text('cost_price', '采购价')->value($model->cost_price)->disable();

        $this->text('sell_price', '出售价钱')->rules('required');

        $this->select('sales_customer_type', '客户类型')->value(1)->options([1 => '零售', 2 => '代理', 3 => '同行']);

        $states = [
            'on'  => ['value' => 1, 'text' => '是', 'color' => 'success'],
            'off' => ['value' => 2, 'text' => '否', 'color' => 'danger'],
        ];

        $this->text('postage', '邮费')->value(0);
        $this->text('courier_number', '快递单号'); //不保修, 1线下代理售后 2 线上售后 3 总公司售后
        $this->select('warranty_program', '保修方案')->options([0 => '不保修', 1 => '线下代理售后', 2 => '线上售后', 3 => '总公司售后']);

        $this->date('start_date', '保修开始日期')->value(date('Y-m-d'));
        $this->date('end_date', '保修结束日期')->value(date('Y-m-d'));

        foreach ($model->productAttr as $value) {
            $this->text($value->key, $value->name)->value($value->value)->disable();
        }
        $this->text('create_time', __('入库时间'))->value($model->create_time)->disable();
    }

}
阅读 4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题