tpextbuilder- Displayers[元件]- With方法的使用

ichynul發表於2021-08-29

withfields,items,tab,step中的通用方法。

fieldsitems如果不使用with方法,需要配合fieldsEnditemsEnd結尾。

使用with可省略結尾方法(fieldsEnd、itemsEnd`),使程式碼層次更分明。

tab,step不需要顯式呼叫end方法,但也支援with方法。

有3種使用方式:

    1. 作為可變引數:

with($field1, $field2, $field3, $fieldN, );

    1. 作為陣列元素[作為1的折衷方案,可變引數最後跟隨一個,號,在低版本php中會報錯,放在陣列中可避免]

with([$field1, $field2, $field3, $fieldN, ]);

    1. 作為匿名方法中的語句

with(function($form){$field1;$field2;$field3;$fieldN;});

以下程式碼可正常執行,其中僅使用了tabfieldsstepitems也類似。

$form->tab('tab1')->with(
    function () use ($form) {
        $form->fields('left1', '', 6)->size(0, 12)->showLabel(false)->with(
            function () use ($form) {
                $form->text('name', '名稱')->required()->maxlength(55);
                $form->tags('keyword', '關鍵字');
                $form->textarea('description', '摘要')->maxlength(255);
            }
        );

        $form->fields('right1', '', 6)->size(0, 12)->showLabel(false)->with(
            $form->text('name', '名稱')->required()->maxlength(55),
            $form->tags('keyword', '關鍵字'),
            $form->textarea('description', '摘要')->maxlength(255),//注意最後這個,號在低版本php中會報錯,刪除或者把fields放在[]中作為一個陣列
        );
    }
);

$form->tab('tab2')->with(
    //如果不想使用use($from),那可以在匿名方法傳入引數.
    //並宣告型別:\tpext\builder\common\Form(方便程式碼編輯器提示).
    //最好是在php檔案頭部引入: use tpext\builder\common\Form; 
    //然後可簡寫為:function (Form $_form){/* code */}
    //以下程式碼中 $_form 和 $form 是同一個東西,實際中使用其中一種方式即可。
    function (\tpext\builder\common\Form $_form) use ($form) {
        //left2 start
        $_form->fields('left2', '', 7)->showLabel(false)->size(0, 12);
        $_form->number('stock', '庫存')->default(99);
        $form->number('click', '點選量')->default(1);
        $form->number('sales_sum', '銷量')->default(0);
        $form->fieldsEnd();
        //left2 end
        //
        $form->fields('right2', '', 5)->size(0, 12)->showLabel(false)->with(
            [
                $_form->text('market_price', '市場價'),
                $form->text('cost_price', '成本價'),
            ]
        );
    }
);
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章