外观
弹窗表单
弹窗表单

在工具栏上使用
php
$modal = Modal::make()
->tool()
->title('充值')
->body(BalancePay::make(['id' => 1]));
$tools->append($modal);在操作栏上使用
php
$key = $action->getKey();
$modal = Modal::make()
->action()
->title('充值')
->body(BalancePay::make(['id' => $key]));
$action->append($modal)类定义(form提交方式)
php
<?php namespace LinAdmin\example\Action;
use Encore\Admin\Url;
use LinAdmin\example\Model\Testdata;
class BalancePay extends \Encore\Admin\Widgets\Form
{
private function getMaxBalance()
{
return 100;
}
public function handle(array $input)
{
// 接收外部传递参数
$id = $this->payload['id'] ?? null;
$amount = $input["amount"];
if($amount "test"]));
}else{
$obj = Testdata::find($id);
$obj->allowField(true)->save(["money"=>$obj["money"]+$amount]);
admin_success("充值成功");
return redirect_url(Url::generate("testbase","index",["_p"=>"test"]));
}
}
public function form()
{
// 接收外部传递参数
$id = $this->payload['id'] ?? null;
$obj = Testdata::find($id);
$money = $obj["money"];
$this->display("money", "当前余额")->value($money);
$max_balance = $this->getMaxBalance();
$this->display("max_balance", "可充值最大余额(元)")->value($max_balance);
$this->number("amount", "金额(元)")->min(1)->default(100)->help("最小为1元");
$this->text("remark", "备注")->default("系统充值");
}
}类定义(ajax请求方式)
支持字段验证
php
<?php namespace LinAdmin\example\Action;
use app\model\User;
use Encore\Admin\Session;
use Encore\Admin\Url;
use LinAdmin\example\Model\Testdata;
use Overtrue\Validation\Factory as ValidatorFactory;
use Overtrue\Validation\Translator;
class BalancePay extends \Encore\Admin\Widgets\Form
{
public function getMaxBalance()
{
return 100;
}
public function handle(array $input)
{
$id = $this->payload['id'] ?? null;
$this->handleAjax($input,function ($input) use($id){
// 接收外部传递参数
$amount = $input["amount"];
$obj = Testdata::find($id);
$obj->allowField(true)->save(["money"=>$obj["money"]+$amount]);
$success_url = Url::generate("testbase","index",["_p"=>"test"]);
$this->ajaxSuccess($success_url);
});
}
public function form()
{
$this->ajax();
// 接收外部传递参数
$id = $this->payload['id'] ?? null;
$obj = Testdata::find($id);
$money = $obj["money"];
$this->display("money", "当前余额")->value($money);
$max_balance = $this->getMaxBalance();
$this->display("max_balance", "可充值最大余额(元)")->value($max_balance);
$this->number("amount", "金额(元)")->value(5)->rule(function ($value, $data){
if($value help("最小为10元");
}
}