You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中Createoffice与Editoffice表单返回按钮路由调用问题

问题分析与解决方案

你遇到的Undefined variable: building错误,核心原因是在Createoffice和Editoffice视图中,你并没有传递$building变量到视图里,但模板里却尝试调用$building->id,自然会触发报错。咱们一步步来修复:

1. 修复Createoffice表单的返回按钮

先看你的OfficeController@create方法:

public function create($id) {
 return view('createoffice')->with('id', $id);
}

这里只传了办公楼的$id,没有传递完整的$building实例,所以有两种修复思路:

方式一:直接用已传递的$id生成路由

把视图里的返回按钮代码改成:

<a href="{{ route('building', $id) }}" class="btn btn-default">Back</a>

既然已经拿到了办公楼的id,直接用这个值就能生成正确的跳转路由,不用依赖$building变量。

方式二:传递完整的$building实例到视图

修改OfficeController@create方法,先查询出办公楼实例再传递:

public function create($id) {
 $building = Building::find($id);
 return view('createoffice')->with('building', $building);
}

这样视图里原来的{{ route('building', $building->id) }}就能正常工作了。

2. 修复Editoffice表单的返回按钮

再看OfficeController@edit方法:

public function edit($id) {
 $office = Office::find($id);
 return view('editoffice')->withOffice($office)->with('id',$id);
}

这里的$id是办公室的id,不是办公楼的id,直接用会跳错页面。我们可以通过关联关系获取办公楼信息:

方式一:通过办公室模型获取办公楼id

把视图里的返回按钮改成:

<a href="{{ route('building', $office->building_id) }}" class="btn btn-default">Back</a>

因为$office已经传到视图里了,它自带的building_id字段就是我们需要的办公楼id。

方式二:传递$building实例到视图

先确保Office模型里定义了和Building的关联(比如public function building() { return $this->belongsTo(Building::class); }),然后修改edit方法:

public function edit($id) {
 $office = Office::find($id);
 $building = $office->building;
 return view('editoffice')->with('office', $office)->with('building', $building);
}

之后视图里原来的{{ route('building', $building->id) }}就可以正常使用了。

额外优化建议

  • 给building/{id}路由加上名称,让路由调用更规范:
Route::get('building/{id}', 'PageController@show')->name('building');
  • 调整store和update方法里的代码顺序,Session::flash()要放在return之前才会生效,同时建议直接跳转到目标页面而非返回上一页:
public function store(Request $request, $id) {
 $office = new Office();
 $office->name = $request->officename;
 $office->floor = $request->floor;
 $office->building_id = $id;
 $office->save();
 \Session::flash('building_flash', 'Created successfully!');
 return redirect()->route('building', $id); // 直接跳转到办公楼列表页
}

内容的提问来源于stack exchange,提问作者TeamPlar Jarj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:51:33