我已将变量temp
从控制器传递到查看页面。
在调试搜索方法时,我正在从数据库获取数据到变量temp。
当我将此变量传递给查看页面时,它显示错误为
ErrorException (E_ERROR)
Undefined variable: temp (View: C:\xampp\htdocs\laravel\lsapp\resources\views\pages\MySearch.blade.php)
我怀疑该错误最有可能是由于route
配置造成的,但我不确定。可能还有其他错误。但是将变量从控制器传递到视图页面的过程是相同的,但是我也遇到了错误。
控制器代码块
public function searchDev()
{
return view ( 'pages.MySearch');
}
public function search(Request $request)
{
$UserName = $request->input('MyName');
if($UserName != ""){
$temp = temp::where ( 'NAME', 'LIKE', '%' . $UserName . '%' )->get (['id','NAME','CONTACT','TEMP_ADDRESS']);
if (count ( $temp ) > 0)
{
/*
getting result from database
dump($temp);
return response()->json($temp);
*/
return view('pages.MySearch', [
'temp' => $temp
]);
}
else
{
return view ( 'pages.MySearch')->with('alert-danger', 'Sorry No details found');
}
}
}
查看页面代码块
@foreach($temp as $data)
<tr>
<td> {{$data['NAME']}} </td>
<td> {{$data['CONTACT']}} </td>
<td> {{$data['TEMP_ADDRESS']}} </td>
</tr>
@endforeach
路线代码
Route::get('/MySearch','MyController@searchDev');
Route::post('/MySearch','MyController@search');
该错误是一般性错误,但我无法调试该错误是什么原因。请帮忙!!!
答案 0 :(得分:2)
在您的else部分中,您没有传递任何变量
所以请改用它
return view ( 'pages.MySearch', compact('temp'))->with('alert-danger', 'Sorry No details found');
对于刀片:
@foreach($temp as $data)
<tr>
<td> {{$data->name}} </td>
<td> {{$data->CONTACT}} </td>
<td> {{$data->TEMP_ADDRESS}} </td>
</tr>
@endforeach
答案 1 :(得分:2)
由于并非总是将temp变量传递给视图,因此在刀片视图中使用它之前,必须检查该变量是否存在。 在刀片
中的任何位置使用$ temp变量之前,请检查是否存在$ temp变量@if(isset($temp))
@foreach($temp as $data)
<tr>
<td> {{$data['NAME']}} </td>
<td> {{$data['CONTACT']}} </td>
<td> {{$data['TEMP_ADDRESS']}} </td>
</tr>
@endforeach
@endif
或者,您应该在刀片视图开始时检查是否存在变量,或者为变量分配一些默认值,以使页面不会中断。
@php
$temp = isset($temp) ? $temp : [];
@endphp