Php 显示空白视图的laravel 5.4
我正在将数据从控制器发送到视图(这是一个单页web应用程序),但视图的输入字段没有显示任何内容。当我使用console.log时,我得到了这个(附屏幕截图)。我的问题是如何在输入视图中显示这些数据 控制器Php 显示空白视图的laravel 5.4,php,laravel,view,controller,laravel-5.4,Php,Laravel,View,Controller,Laravel 5.4,我正在将数据从控制器发送到视图(这是一个单页web应用程序),但视图的输入字段没有显示任何内容。当我使用console.log时,我得到了这个(附屏幕截图)。我的问题是如何在输入视图中显示这些数据 控制器 public function edit(Request $request){ $results = Student::where('id', '=', $request->id)->get(); return $results; } 看
public function edit(Request $request){
$results = Student::where('id', '=', $request->id)->get();
return $results;
}
看法
{{csrf_field()}}
@如果(isset(结果))
@foreach($results作为$result)
@endforeach
@恩迪夫
您需要像这样将数据传递到laravel中查看
public function edit(Request $request){
$results = Student::where('id', '=', $request->id)->get();
return view('your_view_folder.your_view_page', ["results" => $results]);
}
注意:您没有加载查看页面有几点我可以推荐。首先,您正在通过id搜索student,我假设它应该返回单个student,并且它是student的主键。因此,您可能需要使用Student::find()。此外,您可能希望构建用于在模型或抽象基础模型上进行搜索的查询,您可以在其中创建基本搜索,所有扩展它的模型都可以使用这些搜索。例如:
abstract class BaseModel extends Eloquent{
protected $guarded = [
'id'
];
public $primaryKey = 'id';
public $incrementing = false;
public function __construct($attributes = array()) {
parent::__construct($attributes); // Eloquent
$this->id = uniqid();
return $this
}
public static function getObjectById($id){
$class = get_called_class();
$results = $class::find($id);
return $results;
}
public static function getAllObjects(){
$class = get_called_class();
return $class::all();
}
}
那么你的学生班:
class Student extends Model
{
}
然后您的控制器:
class StudentController extends Controller{
public function getStudent(Request $request){
$results = Student::getObjectById($request->id);
return response()->json([
'results' => $results
]);
}
}
您的路径/web.php:
Route::get('/student', 'EnumController@getStudent');
我喜欢使用自己的前端,因此我可以使用ajax来完成请求:
<body>
<div class="container">
<div id="student-list" class="well"></div>
</div>
</body>
<script>
$.ajax({
type: "GET",
url: '/student',
success: function( data ) {
results = data.results;
console.log(results);
$.each(results, function(key, value){
$('#student-list').append('<div >' + value + '</option>');
});
}
});
</script>
$.ajax({
键入:“获取”,
url:“/student”,
成功:功能(数据){
结果=数据。结果;
控制台日志(结果);
$。每个(结果、功能(键、值){
$(“#学生列表”)。追加(“”+value+“”);
});
}
});
要回答您的特定问题:要将数据传递到视图中,必须返回视图,正如@JYoThl非常正确地建议的那样。但是数据应该作为带有键/值对的数组传入,否则会出现错误。(见附件。)
因此,例如,如果包含表单元素的视图文件名为“formView.blade.php”,并且位于resources/views/directory中,您将修改控制器方法,如下所示:
public function edit(Request $request)
{
$results = Student::where('id', '=', $request->id)->get();
return view('formView', ['results' => $results]);
}
或者
public function edit(Request $request)
{
$results = Student::where('id', '=', $request->id)->get();
return view('formView')->with('results', $results);
}
$results
现在可在您的视图中使用。返回视图(“您的视图”文件夹。您的视图页面,$results);将您的返回替换为此行我想您在尝试返回视图时忘记了返回视图(“您的视图”文件夹。您的视图页面,$results);然后它给我这个错误。未定义变量:students(视图:D:\xampp\htdocs\sms1\resources\views\students.blade.php)代码>将不起作用find()
不返回集合,因此不能对其调用->first()
,因为->first()
是illighted\Support\collection
的一部分。相反,find
返回一个Iluminate\Database\Eloquent\Model
的实例,该实例没有->first()。所以我不确定他是想返回一个集合还是一个对象。我将编辑它以删除->第一个();应用了你的建议,它给出了这个错误。未定义变量:students(视图:D:\xampp\htdocs\sms1\resources\views\students.blade.php)两个问题:1。您是否在D:\xampp\htdocs\sms1\resources\views\students.blade.php中使用变量$students?(如果是这样,我在上面的代码块中看不到它。您可以在视图中使用$results,或者,例如,$results[0]->last_name,但是除非您添加一些我在代码块中看不到的额外代码,否则不允许使用$students变量。)2。您使用的模型名为“学生”,而不是“学生”。。。但可能它没有正确注册/别名?1。这个错误实际上是说视图参数的变量未定义,即students(students.blade.php)。我没有使用学生作为变量。2.我认为Model Student工作正常,因为它正在添加新学生和删除学生。根据我的经验,该错误应该意味着您正在视图中的某个位置使用变量$students
。检查整个嵌套视图结构:模板视图@extends@生成视图使用的部分;可能视图中的@include partial已传递或期望传递“students”参数?另外,您可以尝试将控制器方法中的$results重命名为$students,将return
替换为return视图('formView',['students'=>$students])
,将视图中的所有变量$results
更改为$students
,查看错误是否消失。希望能有帮助,非常抱歉。有一个可变的$学生。现在解决了未定义变量的问题。现在控制器是这样的$结果=学生::其中('id','=',$request->id)->get();返回视图(“学生”,压缩(“结果”);但刚才通过Inspect元素看到,在视图中它并没有进入@if(isset($results))内部。另一方面,Ajax的console.log(数据);正在控制台中打印整个视图的html。我不明白这里有什么不对。应用了你的建议,它给出了这个错误。未定义变量:students(视图:D:\xampp\htdocs\sms1\resources\views\students.blade.php)是否加载了Student模式@Gohar@JYoThI您需要在视图中传递数组。是的,模型加载到控制器中,因为它也在添加和删除学生。只有编辑有问题。您的模型是学生还是学生@阿贾迪帕克马尔
public function edit(Request $request)
{
$results = Student::where('id', '=', $request->id)->get();
return view('formView', ['results' => $results]);
}
public function edit(Request $request)
{
$results = Student::where('id', '=', $request->id)->get();
return view('formView')->with('results', $results);
}