2015-02-06 112 views
1

我是laravel初学者,并试图将id传递给控制器​​方法show。它在页面重新加载后不显示任何内容。我尝试了一些谷歌的东西。它没有提供任何帮助。下面我相关的代码给出:

admin.blade.php

<div class="showOne"> 
<?php if(isset($users)){ 
    var_dump($users); 
} 
?> 

@foreach($inputs as $key => $user) 
    <tr> 
    <td>{{ ++$key }}</td> 
    <td>{{ $user->name }}</td> 
    <td>{{ $user->email }}</td> 
    <td>{{ $user->address }}</td> 
    <td>{{ $user->phone }}</td> 
    <td> 
    {{ Form::open(['route' => ['admin.show', $user->id], 'method' => 'get']) }} 
    {{ Form::button('Details') }} 
    {{ Form::close() }} 
    </td> 
    <td> 
    {{ Form::open(['route' => ['admin.edit', $user->id], 'method' => 'get']) }} 
    {{ Form::button('Edit') }} 
    {{ Form::close() }} 
    </td> 
    <td> 
    {{ Form::open(['route' => ['admin.delete', $user->id], 'method' => 'get']) }} 
    {{ Form::button('Delete') }} 
    {{ Form::close() }} 
    </td> 
</tr> 
@endforeach 

控制器:

class AdminController extends \BaseController { 

    /** 
    * Display a listing of the resource. 
    * 
    * @return Response 
    */ 
    public function index() 
    { 
     // get all the inputs 
     $inputs = Userdatas::all(); 

     // load the view and pass the inputs 
     return View::make('pages.admin') 
      ->with('inputs', $inputs); 
    } 

    /** 
    * Display the specified resource. 
    * 
    * @param int $id 
    * @return Response 
    */ 
    public function show($id) 
    { 
     $user = Userdatas::find($id); 
     var_dump($user); 
     die(); 
     return View::make('pages.admin') 
      ->with('users', $user); 
    } 

} 

路线:

Route::get('admin', [ 
    'uses' => '[email protected]' 
]); 

Route::get('admin/{id}', [ 
    'uses' => '[email protected]', 
    'as' => 'admin.show' 
]); 
+0

当您单击该按钮,请问网址是什么样子? 'admin/1'? – lukasgeiter 2015-02-06 08:37:00

+0

不,但我检查了按钮,它看起来像admin/1 – WahidSherief 2015-02-06 08:40:25

+0

那么你点击它后的URL是什么? – lukasgeiter 2015-02-06 08:44:11

回答

2

您可以使用链接,让Laravel通过您的路线处理它。

请参见下面的例子:

// Management 
Route::get('management', '[email protected]'); 
Route::get('management/add', '[email protected]'); 
Route::post('management/add', '[email protected]'); 
Route::get('management/edit/{id}', '[email protected]'); 
Route::post('management/edit/{id}', '[email protected]'); 
Route::get('management/delete/{id}', '[email protected]'); 
Route::post('management/delete/{id}', '[email protected]'); 

然后,您可以只在您的表链接,并通过CSS的按钮样式。

@foreach($ManagementAll as $Management) 
<tr> 
    <td>{{$Management->username}}</td> 
    <td>{{$Management->firstname}}</td> 
    <td>{{$Management->lastname}}</td> 
    <td>{{$Management->email}}</td> 
    <td>{{$Management->created_at}}</td> 
    <td>{{$Management->updated_at}}</td> 
    <td style="padding-top: 3px; padding-bottom: 0px;"> 
     <a class="btn btn-default btn-circle" href="{{ URL::to('management/edit/' . $Management->id) }}"><i class="fa fa-pencil"></i></a> 
     <a class="btn btn-default btn-circle" href="{{ URL::to('management/delete/' . $Management->id) }}"><i class="fa fa-times"></i></a> 
    </td> 
</tr> 
@endforeach 

控制器显示:

public function showEdit($ID) 
{ 
    //Return View With Management User Information 
    return View::make('management.edit') 
     ->with('User', Management::find($ID)); 
} 

控制器邮编:

public function postEdit($ID) 
{ 
    //Handle Input 
    //Validation? 
    //Update Record 
    //Redirect Back 
} 

请参阅本网站有关此主题的更多信息: https://scotch.io/tutorials/simple-laravel-crud-with-resource-controllers

更新

我的视图文件夹是这样的:

views 
    management 
    overview.blade.php 
    add.blade.php 
    edit.blade.php 
    delete.blade.php 
+0

它在一定程度上工作,但现在它显示错误,“未定义变量输入在admin.blade.php”。我想这是来自controller @ index方法,因为我对这两种方法使用了相同的刀片。是否有必要为每种方法创建刀片? – WahidSherief 2015-02-06 09:56:32

+0

我使用每种方法的刀片。导致我的编辑和删除页面彼此不同。除此之外,我还在他们每个人身上使用了不同的变量。如果我要使用一个刀片,如果必须首先检查变量是否存在,那么我会得到像现在一样的错误。你可以在你的第一篇文章中更新你的admin.blade.php吗? – 2015-02-06 10:09:46