Php laravel 5.6未从laravel中的控制器读取变量

Php laravel 5.6未从laravel中的控制器读取变量,php,laravel,Php,Laravel,我是拉威尔的新手,所以如果这个问题看起来很愚蠢,请原谅我。我正在尝试做一个基本的CRUD应用程序,创建和读取似乎工作正常,但在编辑、更新和删除方面存在问题。当我点击编辑按钮时,它返回未定义的变量日志,但据我所知,我认为我已经声明了它。请帮忙 控制器名称:logbook.php namespace App\Http\Controllers; use Request; use Illuminate\Support\Facades\Input; use App\Http\Requests; u

我是拉威尔的新手,所以如果这个问题看起来很愚蠢,请原谅我。我正在尝试做一个基本的CRUD应用程序,创建和读取似乎工作正常,但在编辑、更新和删除方面存在问题。当我点击编辑按钮时,它返回未定义的变量日志,但据我所知,我认为我已经声明了它。请帮忙

控制器名称:logbook.php

namespace App\Http\Controllers;

use Request;

use Illuminate\Support\Facades\Input;

use App\Http\Requests;

use App\log_book;
use DB;
use Illuminate\Support\Facades\Auth;

class logbook extends Controller
{
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    //
    /**
    *
    *@if(Auth::check())
    */

    $log_books = log_book::all();
    return view('home')->with('log_books',$log_books);

    /**
    *
    *@endif
    */

}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    //

/**
 *
 *   @if(Auth::check())
 */
        return view('log_books.create');
/**
 *
 *   @endif
 */
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    //
    log_book::create(Request::all());
    return redirect('home')->with('message','name has been added successfully');
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    //
    /**
     *
     *@if(Auth::check())
     */

    $log_books = log_book::findorFail($id);
    //$logs = DB::table('log_books')->where('id', $id)->first();
    return view('log_books.edit', compact($log_books))->with('id', $id);

    /**
     *
     *@endif
     */


}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    //
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    //
    $log_books = log_books::findorFail($id);

    $destroy = $log_books->delete();

    if($destroy) {
        return redirect('home', compact($log_books))->with('message', 'Record has been deleted');
    }
}
}
我的路线:web.php

Route::get('/', function () {
return view('welcome');
});

Route::get('create', function () {
return view('create');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::get('/create', 'logbook@create')->name('create');
Route::post('store', 'logbook@store');
Route::get('/home', 'logbook@index');
Route::get('edit/{id}', 'logbook@edit');
Route::delete('destroy/{id}', 'logbook@destroy');
我的视图:home.blade.php

 @foreach($log_books as $row)
                                    <tr>
                                        <td>{{$row->name}}</td>
                                        <td>{{$row->present_date}}</td>
                                        <td>{{$row->time_in}}</td>
                                        <td>{{$row->time_out}}</td>
                                        <td><a href="{{ URL::to('edit',$row->id) }}"><input type="button" class="btn btn-success" value="Edit"></a>&nbsp;<a href="{{ URL::to('destroy',$row->id) }}"><input type="button" class="btn btn-danger" value="Delete"></a></td>
                                    </tr>
 @endforeach
<form method="post" action="edit">
                    {{csrf_field()}}

                    <input type="hidden" name="_method" value="PUT">
                    <input required="yes" type="text" placeholder="Full name" class="form-control" name="name" value="{{$log_books->name}}"><br>
                    <input required="yes" onfocus="this.type= 'date'" onblur="this.type='text'" placeholder="Date" class="form-control" name="present_date" value="{{$log_books->present_date}}"><br>
                    <input required="yes" onfocus="this.type= 'time'" onblur="this.type='text'" placeholder="Time in" class="form-control" name="time_in" value="{{$log_books->time_in}}"><br>
                    <input onfocus="this.type= 'time'" onblur="this.type='text'" placeholder="Time out" class="form-control" name="time_out" value="{{$log_books->time_out}}"><br>

                    <input type="submit" class="btn btn-primary" value="Submit" name="submit">
</form>
@foreach($log\u book作为$row)
{{$row->name}
{{$row->present_date}
{{$row->time_in}
{{$row->超时}
@endforeach
编辑视图:edit.blade.php

 @foreach($log_books as $row)
                                    <tr>
                                        <td>{{$row->name}}</td>
                                        <td>{{$row->present_date}}</td>
                                        <td>{{$row->time_in}}</td>
                                        <td>{{$row->time_out}}</td>
                                        <td><a href="{{ URL::to('edit',$row->id) }}"><input type="button" class="btn btn-success" value="Edit"></a>&nbsp;<a href="{{ URL::to('destroy',$row->id) }}"><input type="button" class="btn btn-danger" value="Delete"></a></td>
                                    </tr>
 @endforeach
<form method="post" action="edit">
                    {{csrf_field()}}

                    <input type="hidden" name="_method" value="PUT">
                    <input required="yes" type="text" placeholder="Full name" class="form-control" name="name" value="{{$log_books->name}}"><br>
                    <input required="yes" onfocus="this.type= 'date'" onblur="this.type='text'" placeholder="Date" class="form-control" name="present_date" value="{{$log_books->present_date}}"><br>
                    <input required="yes" onfocus="this.type= 'time'" onblur="this.type='text'" placeholder="Time in" class="form-control" name="time_in" value="{{$log_books->time_in}}"><br>
                    <input onfocus="this.type= 'time'" onblur="this.type='text'" placeholder="Time out" class="form-control" name="time_out" value="{{$log_books->time_out}}"><br>

                    <input type="submit" class="btn btn-primary" value="Submit" name="submit">
</form>

{{csrf_field()}}





请原谅我的代码,如果它看起来乱七八糟的话,“创建”和“编辑”视图都在一个名为“日志”的文件夹中。感谢您的帮助。

Laravel具有管线模型绑定,您可以在
show
edit
方法中使用此功能,如下所示:

在控制器中

public function edit(Log_Book $log_book)
{
    return view('log_books.edit', compact($log_book));
}
在web.php中

Route::get('/edit/{log_book}', 'logbook@edit');
另外,您不需要在控制器方法中检查auth,可以使用
auth
中间件

在控制器中

public function __construct()
{
    return $this->middleware('auth');
}

您的
edit
方法正在向压缩传递无效值:

return view('log_books.edit', compact($log_books))->with('id', $id);
最有可能是要压缩的变量的“名称”,而不是变量本身:

return view('log_books.edit', compact('log_books'))->with('id', $id);
要完全避免这些类型的错误,只需定义数组:

return view('log_books.edit', ['log_books' => $log_books])...

在控制器中,不要使用带有($log\u books’,$log\u books)的
返回视图('home')->
您是否尝试过使用
compact
功能?它是这样的:
返回视图('home',compact('log_books'))
控制器中的索引函数工作正常。但是,当它即将打开连接到编辑函数的edit.blade.php视图时,它会不断显示“undefined variable log_books”。出于好奇,在您的控制器中,在返回视图之前,
$log_books
会输出什么?你能放一个
dd($log\u books)log_book::all()
没有返回
未定义的
?主视图或编辑或创建视图不工作。edit.blade.php仍然会给出相同的错误。