【问题标题】:UrlGenerationException (Missing required parameters for [Route])UrlGenerationException(缺少 [Route] 所需的参数)
【发布时间】:2016-07-04 06:07:22
【问题描述】:

我不知道这个错误是从哪里来的。尝试更新记录时出现此错误。它可以正常工作并更新到我的数据库中,但出现此错误。它说那错过了我的参数中的某些内容。我认为我的错误是return redirect()->route('account.show');,当我在更新后尝试重定向到我的 show 视图时。但是当我重定向到其他工作正常时。有什么意见吗?

缺少 [Route: account.show] [URI: show/{id}] 的必需参数。

我有 3 个刀片模板。 搜索编辑显示

search.blade.php - 显示所有记录。

@foreach ($result as $row)
    <tr class = "success">
        <td>{{ $row->id }}</td>
        <td>{{ $row->first_name }}</td>
        <td>{{ $row->last_name }}</td>
        <td>{{ $row->middle_name }}</td>
        <td>{{ $row->email }}</td>
        <td>{{ $row->username }}</td>
        <td>
            <a href = "{{ route ('account.show', $row->id) }}"><button type = "submit" class = "btn btn-info">View</button></a>

            <a href = "{{ route ('account.edit', $row->id) }}"><button type = "submit" class = "btn btn-warning">Edit</button></a>

            <a href = "{{ route ('result.destroyEmployee', $row->id) }}"><button type = "submit" class = "btn btn-danger">Archive</button></a>
        </td>
    </tr>
@endforeach

edit.blade.php - 点击提交按钮后出现错误的地方是Save

<div class = "col-md-6">
<form class = "form-vertical" role = "form" method = "post" action = "{{ route ('account.edit', $result->id) }}">

<h3>Edit Employee</h3>
<hr>

<div class = "form-group">

    <label for = "email" class = "control-label">Email Address</label>
    <input type = "text" name = "email" class = "form-control" value = "{{ $result->email }}">

</div>

<div class = "form-group">

    <label for = "username" class = "control-label">Username</label>
    <input type = "text" name = "username" class = "form-control" value = "{{ $result->username }}">

</div>

<div class = "form-group">

    <button type = "submit" class = "btn btn-success">Save</button>

</div>

<input type = "hidden" name = "_token" value = "{{ Session::token() }}">

</form>

show.blade.php - 文本字段只会放置记录的值。

<div class = "col-md-6">
<form class = "form-vertical" role = "form" method = "post" action = "{{ route ('account.show', $result->id) }}">

<h3>View Employee</h3>
<hr>

<div class = "form-group">

    <label for = "email" class = "control-label">Email Address</label>
    <input type = "text" name = "email" class = "form-control" placeholder = "{{ $result->email }}" readonly>

</div>

<div class = "form-group">

    <label for = "username" class = "control-label">Username</label>
    <input type = "text" name = "username" class = "form-control" placeholder = "{{ $result->username }}" readonly>

</div>

<input type = "hidden" name = "_token" value = "{{ Session::token() }}">

</form>

路线:

//READ
Route::get('/search',
[
    'uses' => '\App\Http\Controllers\AccountController@getEmployee',
    'as' => 'account.search',
]);


//SHOW
Route::get('/show/{id}',
[
    'uses' => 'AccountController@showEmployee',
    'as' => 'account.show',
]);

//EDIT
Route::get('/edit/{id}',
[
    'uses' => '\App\Http\Controllers\AccountController@editEmployee',
    'as' => 'account.edit',
]);


//UPDATE
Route::post('/edit/{id}',
[
    'uses' => '\App\Http\Controllers\AccountController@updateEmployee',
    'as' => 'account.edit',
]);

【问题讨论】:

  • "{{ route ('account.show', ['result' =&gt; $result-&gt;id]) }}" 应该可以解决问题。当routes 接受参数时,route() 助手将接受参数作为作为第二个参数传递的数组。如果您不想,则无需进行'key' =&gt; 'value' 映射。
  • 如果我通过'result' 作为我的route() 中的键有什么区别?我试图运行你的 sn-p 但是当我点击提交按钮时说MethodNotAllowedHttpException

标签: php laravel laravel-5.2


【解决方案1】:

尝试改变这一点:

<form class = "form-vertical" role = "form" method = "post" action = "{{ route ('account.show', $result->id) }}">

收件人:

 <form class = "form-vertical" role = "form" action="{{ url('edit/'. $result->id) }}" method="POST">

然后你必须将路由参数作为第二个参数传递给路由。像这样的东西:return redirect()-&gt;route('account.show', [$id])

*我建议你使用 laravel 集体形式:https://laravelcollective.com/

使用 laravel 集体你可以做这样的事情:

{!! Form::open(array('route' => array('account.show', $result->id))) !!}

【讨论】:

  • 它不工作它说syntax error, unexpected '['
  • 还是不行。另一个错误说syntax error, unexpected '=&gt;' (T_DOUBLE_ARROW)
  • 现在试试url方法
  • 我仍然没有尝试 laravel 集体。我运行你更新的帖子仍然说Missing required parameters for [Route: account.show] [URI: show/{id}].
  • 我认为我的错误是return redirect()-&gt;route('account.show'); 它不会重定向到我的show 视图,因此我可以查看我是否正确更新。但是当我重定向到其他视图时它正在工作。
【解决方案2】:
return view('admin.edit',compact('post','id');

【讨论】:

  • 请补充说明这段代码是如何解决问题的
  • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
猜你喜欢
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 2021-08-17
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
相关资源
最近更新 更多