问题描述
laravel-admin 自定义行操作时怎么延迟载入呢?
我在列表中添加了一个按钮
点击出库时会显示一个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();
}
}