我将数据从控制器发送到视图(这是一个单页Web应用程序),但是视图的输入字段什么都没有显示。当我使用console.log时,我得到了这个(截图附件)。我的问题是如何在输入视野中显示这些数据?
控制器
public function edit(Request $request){
$results = Student::where('id', '=', $request->id)->get();
return $results;
}
查看
<form class="form_edit" action="" method="post" enctype="multipart/form-data">
{{csrf_field()}}
@if(isset($results))
@foreach ($results as $result)
<input type="hidden" id="id">
<input type="text" class="form-control" name="grn" value="{{$result->grn}}">
<input type="text" class="form-control" name="first_name" id="addItem" value="{{$result->first_name}}">
<input type="text" class="form-control" name="last_name" value="{{$result->last_name}}">
<input type="button" class="btn btn-danger" id="btn_delete" value="Delete">
<input type="reset" class="btn btn-default" id="btn_close" value="Cancel">
<input type="button" class="btn btn-primary" id="btn_update" value="Update">
@endforeach
@endif
</form>
答案 0 :(得分:1)
你需要将数据传递给像这样的laravel中的视图
public function edit(Request $request){
$results = Student::where('id', '=', $request->id)->get();
return view('your_view_folder.your_view_page', ["results" => $results]);
}
注意:您没有加载视图页
答案 1 :(得分:0)
我可以推荐几件事。首先,你正在通过id搜索学生,我认为应该返回一个学生,这是学生的主要关键。因此,您可能想要使用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
{
protected $fillable = [
'name'
];
protected $table = "student";
public $incrementing = false;
/**
* Student constructor.
* @param array $attributes
*/
public function __construct($attributes = array()) {
parent::__construct($attributes); // Eloquent
// Your construct code.
// TODO split string stuff to get the rest of the attributes.
return $this;
}
}
然后你的控制器:
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>
答案 2 :(得分:0)
要回答您的具体问题:要将数据传递到视图中,您必须return
视图,因为@JYoThl非常正确地建议。但是数据应该作为具有键/值对的数组传递,否则您将收到错误。 (见Laravel 5.4 docs。)
因此,例如,如果包含表单元素的视图文件名为“formView.blade.php”并且它位于resources / views /目录中,则可以按如下方式修改控制器方法:
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
现已在您的视图中提供。