laravel 5.4显示空白视图

时间:2017-06-10 03:16:40

标签: php laravel view controller laravel-5.4

我将数据从控制器发送到视图(这是一个单页Web应用程序),但是视图的输入字段什么都没有显示。当我使用console.log时,我得到了这个(截图附件)。我的问题是如何在输入视野中显示这些数据?

\enter image description here][1]

控制器

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>

3 个答案:

答案 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现已在您的视图中提供。