Laravel-Backpack:创建公司后重定向及移除指定保存选项
问题解决方案
一、公司创建完成后重定向到带公司ID的联系人创建页
核心思路是在公司数据保存成功后,获取新创建的公司ID,再跳转到联系人创建页面并携带该ID参数:
- 如果是常规控制器开发,在
CompanyController的store方法中,保存公司实例后执行重定向:public function store(Request $request) { // 验证并保存公司数据 $company = Company::create($request->validated()); // 重定向到联系人创建页,携带公司ID return redirect()->route('contacts.create', ['company_id' => $company->id]); } - 如果使用后台管理框架(如Laravel-admin),可以在表单的
saved回调中处理:
跳转后,联系人创建页面可以通过$form->saved(function (Form $form) { $companyId = $form->model()->id; return redirect()->route('contacts.create', ['company_id' => $companyId]); });request('company_id')获取该值,自动填充到关联字段中。
二、仅在公司创建操作中移除「Save and edit this item」选项
需要根据当前操作类型(创建/编辑)动态修改保存选项配置:
- 先判断当前是否为公司创建操作(可通过路由、请求方法或框架提供的标识判断),再移除对应选项:
// 基础保存选项配置 $saveOptions = [ "active" => [ "value" => "save_and_back", "label" => "Save and back" ], "options" => [ "save_and_edit" => "Save and edit this item", "save_and_new" => "Save and new item" ] ]; // 判断是否为公司创建操作(示例:通过路由判断) if (request()->is('companies/create') || request()->route()->getActionMethod() === 'store') { // 移除「Save and edit this item」选项 unset($saveOptions['options']['save_and_edit']); } // 将处理后的配置应用到页面 - 如果是Laravel-admin框架,可在表单构造时判断是否为编辑状态,动态设置保存选项:
public function form() { $form = new Form(new Company()); // 表单字段定义... // 仅在创建页面移除保存并编辑选项 if (!$form->isEditing()) { $form->setSaveOptions([ 'active' => 'save_and_back', 'options' => [ 'save_and_new' => 'Save and new item' ] ]); } }
内容的提问来源于stack exchange,提问作者Liju
相关产品推荐
相关产品推荐

