如何从视图传递控制器中的ID(在Laravel中编辑用户)

时间:2018-10-10 11:40:19

标签: php laravel

我有一个视图,该视图显示数据库中的所有user记录。单击edit按钮时,显示错误:

  

缺少[Route:admin。] [URI:admin / edit / {id}]所需的参数。

{!! Form::open(array('action' => 'Admin\AdminController@edit')) !!} 

<tbody>
   @unless (empty($userdata))
   @foreach ($userdata as $user)
   <tr>
      <td>{{$user->id}}</td>
      <td>{{$user->name}}</td>
      <td>{{ date('d-m-Y', strtotime($user->created_at)) }}</td>
      <td>{{$user->email}}</td>
      <td>{{$user->role}}</td>
      <td><a href="admin/edit/{{$user->id}}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
   </tr>
   @endforeach 
   @endunless                                                 
</tbody>

routes.php

Route::group(['middleware' => ['auth','admin'], 'prefix' => 'admin', 'as' => 'admin.'], function () {
    Route::get('/home', 'Admin\AdminController@index');    
    Route::get('/register', 'Admin\AdminController@register');
    Route::post('/create', 'Admin\AdminController@create');
    Route::get('/manage', 'Admin\AdminController@manage');
    Route::any('/quote', 'Quote\QuoteController@index');
    Route::patch('/edit/{id}', 'Admin\AdminController@edit');
});

我也尝试了这些,但仍然无法正常工作。

route():

<td><a href="{{ route('admin.edit', ['id'=>$user->id]) }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>

url():

<td><a href="{{ url('/admin/edit/'.$user->id) }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td> 

4 个答案:

答案 0 :(得分:3)

更改:

<td>
    <a href="/edit/{{$user->id}}" class="btn btn-primary">
        <i class="fa fa-pencil"></i>
    </a>
</td>

收件人:

<td>
    <a href="/admin/edit/{{$user->id}}" class="btn btn-primary">
        <i class="fa fa-pencil"></i>
    </a>
</td>

您的路线应包括admin

答案 1 :(得分:2)

您可以将其通过URL

如果其为表单,则可以为id隐藏输入。例如

<input type="hidden" name="user_id" value="{{ $user->id }}">

答案 2 :(得分:1)

我认为您需要添加获取路线进行编辑

Route::patch('/edit/{id}', 'Admin\AdminController@edit')->name('edit');

并在刀片中添加路由功能

<td><a href="{{ route('admin.edit', ['id'=>$user->id]) }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>

答案 3 :(得分:1)

{!! Form::open(array('action' => 'Admin\AdminController@edit')) !!}

问题已解决:我的表单操作存在指向同一控制器方法的问题。

<div class="box-body table-responsive">
   <table class="table table-hover data-table">
      <thead>
         <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Date</th>
            <th>Email</th>
            <th>Role</th>
            <th>Edit</th>
         </tr>
      </thead>
      <tbody>
         @unless (empty($userdata))
         @foreach ($userdata as $user)
         <tr>
            <td>{{$user->id}}</td>
            <td>{{$user->name}}</td>
            <td>{{ date('d-m-Y', strtotime($user->created_at)) }}</td>
            <td>{{$user->email}}</td>
            <td><a href="{{ url('/admin/edit/'.$user->id) }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
         </tr>
         @endforeach 
         @endunless                                                 
      </tbody>
   </table>
</div>

路线

Route::group(['middleware' => ['auth','admin'], 'prefix' => 'admin', 'as' => 'admin.'], function () {
    Route::get('/home', 'Admin\AdminController@index');    
    Route::get('/register', 'Admin\AdminController@register');
    Route::post('/create', 'Admin\AdminController@create');
    Route::get('/manage', 'Admin\AdminController@manage');
    Route::any('/quote', 'Quote\QuoteController@index');    
    #Route::post('/edit', ['uses'=>'Admin\AdminController@edit']);


    Route::get('edit/{id}', 'Admin\AdminController@edit')->name('update.request');

});

感谢您的帮助。