我需要在多个视图上传递一个变量,以便在多个视图上执行UPDATE(editScadenza和elaborazioneScadenza)。 或者你知道另一个更简单的解决方案吗?
ScadenzaController.php
public function edit($id)
{
$data['scadenzaRecuperata'] = \App\Scadenza::find($id);
return view('scadenze.editScadenza', $data);
}
更新
public function update(Request $request, $id)
{
$this->validate($request,[
'titolo'=>'required',
'termine_stimato'=>'required',
'responsabile'=>'required',
'tipologia_id'=>'required',
'giorni_avviso'=>'required',
],
[
'titolo.required'=>'Il titolo é obbligatorio',
'termine_stimato.required' => 'Il termine stimato é obbligatoria',
'responsabile.required' => 'Il responsabile é obbligatorio',
'tipologia_id.required' => 'Il tipo é obbligatorio',
'giorni_avviso.required'=> 'I giorni di avviso sono obbligatori',
]);
$scadenza = \App\Scadenza::find($id);
$now = Carbon::now();
$end = Carbon::parse($scadenza->termine_stimato);
$length = $end->diffInDays($now);
$scadenza->titolo = $request->input('titolo');
$scadenza->termine_stimato = date_create($request->input('termine_stimato'))->format('Y-m-d H:i');
$scadenza->responsabile = $request->input('responsabile');
$scadenza->tipologia_id = $request->input('tipologia_id');
$scadenza->processo_id = $request->input('processo_id');
$scadenza->stato = $request->input('stato');
$scadenza->giorni_avviso = $request->input('giorni_avviso');
$scadenza->osservazioni = $request->input('osservazioni');
$scadenza->save();
return redirect('scadenza');
}
答案 0 :(得分:1)
建议的最佳解决方案是从控制器功能共享变量。如果您只需要2,3个视图,并且所有视图都在同一个控制器下,那么就像往常一样分享它:
public function function_nameX($id)
{
..
return view('scadenze.viewNameX')->withData($data);
}
...
public function function_nameY()
{
..
return view('scadenze.viewNameY')->withData($data);
}
即使您有多个控制器返回的视图也要这样做。因为这是最方便的方式。
要与项目中的所有视图共享变量,请从AppServiceProvider的boot()函数中共享它,如:
public function boot()
{
$data['scadenzaRecuperata'] = \App\Scadenza::find($id);
View::share('data', $data);
}
View Composer还有助于将特定数据绑定到不同的视图中 方法。您可以直接将变量绑定到特定视图或所有视图。 例如,您可以创建自己的目录来存储视图 作曲家文件根据要求。和这些视图作曲家文件 通过服务提供与视图的互动。
这是doc。
答案 1 :(得分:1)
要与视图共享数据,您可以设置视图Composer
在 app / Providers / AppServiceProvider.php 中加载到boot()
方法
public function boot() {
view()->composer('scadenze.editScadenza', function($view) {
$data = \App\Scadenza::find(request()->id);
$view->with('data', $data);
});
}
有关更多日期,请参阅Laravel View Composers
composer('VIEW_NAME', ...)
composer(['VIEW_NAME_1', 'VIEW_NAME_2'], ...)
composer('*', ...)