我发现了类似的话题,但没有一个解决我的问题。
我在控制器中有方法,并尝试在另一个方法中但在同一控制器中使用变量。
那是我的第一种方法:
public function show($id)
{
$specification = RegenerationsSpecification::with('regenerations', 'user')
->findOrFail($id);
return Fractal::item($specification, ['regenerations.specialist', 'regenerations.department', 'regenerations.patient', 'user']);
}
然后我尝试将$specification
传递给这样的另一个函数:
public function exportToExcel()
{
$spec[] = $this->show($specification);
return $spec;
}
我不知道我在做什么错,但是它没有传递$specification
变量。
有人可以在这里帮助我吗? 谢谢
答案 0 :(得分:0)
尝试这种方式
public function show($id)
{
$specification =
RegenerationsSpecification::with('regenerations', 'user')
->findOrFail($id);
Session::set('specification', $specification );
return Fractal::item($specification, ['regenerations.specialist',
'regenerations.department', 'regenerations.patient', 'user']);
}
public function exportToExcel()
{
specification =array();
if(Session::has('specification'))
$specification = Session::get('specification');
}
$spec[] = $specification;
return $spec;
}
答案 1 :(得分:0)
您需要使$ specification变量成为全局变量。因为您想在方法中共享该变量;
class DirectNegotiationController extends Controller
{
protected $specification;
public function show($id)
{
$this->specification = RegenerationsSpecification::with('regenerations', 'user')
->findOrFail($id);
return Fractal::item($this->specification, ['regenerations.specialist', 'regenerations.department', 'regenerations.patient', 'user']);
}
public function exportToExcel()
{
$spec[] = $this->show($this->specification);
return $spec;
}
}
答案 2 :(得分:0)
只需执行以下操作:
//public function exportToExcel($specification)
public function exportToExcel($specification=0)
{
$spec[] = $this->show($specification);
return $spec;
}
第一种方法保持不变:
public function show($id)
{
$specification = RegenerationsSpecification::with('regenerations', 'user')
->findOrFail($id);
return Fractal::item($specification, ['regenerations.specialist', 'regenerations.department', 'regenerations.patient', 'user']);
}