Skip to content

弹窗表单

弹窗表单

在工具栏上使用

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元");
    }
}