如何控制Backpack表单字段顺序?自定义位置设置无效
Backpack表单字段顺序控制问题解答
字段顺序的控制逻辑
Backpack表单的字段显示顺序,默认由你在CrudController中定义字段的先后顺序决定:
- 如果你用
CRUD::setFromDb()自动加载数据库字段,后续用CRUD::field()新增的字段,默认会插在表单最前面; - 如果你手动逐个定义所有字段,就完全按照你写的顺序显示。
解决你遇到的问题
你用->afterColumn('address_1')无效,是因为Backpack里控制字段位置的方法是->after()(不是afterColumn),参数是字段的name属性值(通常和数据库列名一致)。
方法1:用->after()指定位置
调整代码,把afterColumn换成after:
CRUD::field('country_id') ->type('select') ->entity('country') ->attribute('name') ->model('App\Models\Country') ->after('address_1');
方法2:直接放到末尾
如果想直接把这个字段放在表单最后,用->last()方法更省心:
CRUD::field('country_id') ->type('select') ->entity('country') ->attribute('name') ->model('App\Models\Country') ->last();
方法3:手动定义所有字段顺序
如果自动加载的字段顺序不符合需求,也可以关闭自动加载,手动列出所有字段,把country_id放在最后:
// 关闭自动从数据库加载字段 CRUD::setFromDb(false); // 逐个定义字段,按你想要的顺序排列 CRUD::field('name'); CRUD::field('address_1'); CRUD::field('address_2'); // ...其他字段 CRUD::field('country_id') ->type('select') ->entity('country') ->attribute('name') ->model('App\Models\Country');
内容的提问来源于stack exchange,提问作者Lozza
相关产品推荐
相关产品推荐

