コントローラ変数$ sickLeavesをビューに渡すことができません。これは、SickLeaveController(RESTfulリソースコントローラ)のindex.blade.php )。 私はエラーを取得しておいてください。ここでは未定義の変数 'sickLeaves'コントローラからビューに変数を渡すときにLaravel 5の未定義変数を取得する
はroutes.phpのである:ここでは
Route::group(['middleware' => 'web'], function(){
Route::auth();
Route::get('/', '[email protected]');
Route::get('auth/logout', 'Auth\[email protected]');
Route::get('/home', '[email protected]');
Route::resource('sickleaves','SickLeaveController');
});
は私SickLeaveControllerです:ここでは
class SickLeaveController extends Controller
{
public function index()
{
$sickLeaves = SickLeave::all();
return view('sickleaves.index')->with('sickleaves',$sickLeaves);
}
public function create()
{
$users = User::pluck('name','id');
return View::make('sickleaves.create')->with('sickleaves',$users);
}
public function store(Request $request)
{
$this->validate($request, [
'firstname' => 'required|max:255',
'lastname' => 'required|max:255',
'reason' => 'required|max:255',
'startdate' => 'required',
'status' => 'required',]);
}
public function show($id)
{
$sickLeave = SickLeave::find($id);
return View::make('sickleaves.show')->with('sickleaves',$sickLeave);
}
public function edit($id)
{
$sickLeave = SickLeave::findOrFail($id);
return View::make('sickleaves.edit')->with('sickleaves',$sickLeave);
}
public function update(Request $request, $id)
{
//TODO
}
public function destroy($id)
{
$sickLeave = SickLeave::findOrFail($id);
$sickLeave->delete();
Session::flash('Item successfully deleted');
return redirect()->route('sickleave.index');
}
}
はindex.blade.phpです:
@foreach($sickLeaves as $sickLeave)
<tr>
<td style="width: 8%">{{ $sickLeave->id }}</td>
<td style="width: 12%"><span class="fw-semi-bold">{{ $sickLeave->firstname }}</span></td>
<td style="width: 12%"><span class="fw-semi-bold">{{ $sickLeave->surname }}</span></td>
<td class="no-sort hidden-xs" style="width: 12%">{{ $sickLeave->reason }}</td>
<td class="hidden-xs">{{ $sickLeave->startdate }}</td>
<td class="hidden-xs">{{ $sickLeave->enddate }}</td>
<td class="no-sort">{{ $sickLeave->status }}</td>
<td class="no-sort"><div class="btn-group">
<button class="btn btn-inverse">Actions</button>
<button class="btn btn-inverse dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-caret-down"></i>
</button>
<ul class="dropdown-menu">
<li><a href="{{ route('sickleaves.show', $sickLeave->id) }}">View Details</a></li>
<li><a href="{{ route('sickleaves.edit', $sickLeave->id) }}">Edit</a></li>
<li class="divider"></li>
<li><a href="#">Delete</a></li>
</ul>
</div>
</td>
</tr>
@endforeach
ありがとうございました!以前は誰かが私に、with()関数の最初の引数はルートと同じでなければならないと言っていました。それは非常に混乱していた。私は(arg1、arg2)で、arg2からarg1に内容をコピーすると思いますか?それはここで何が起こっているのですか? – omrakhur
@omrakhurいいえ、との最初の引数は、ルートと同じである必要はありません。これは、2番目のパラメータからペイロードを保持する鍵です。また、 ' - > with()'を使わずに、 'view( 'yourView'、$ data)'のようにデータを渡すこともできます。 '$ data'は渡すアイテムの配列です。例えば、 'view( 'sickleaves.index'、['sickleaves' => $ sickLeaves])'などです。 http://php.net/manual/en/function.compact.phpもご覧ください。変数名を変更する必要がないときに便利です。 –
私は他のPHPフレームワークでcompactを使用していますので、試してみてください。 – omrakhur