【问题标题】:Missing required parameters for [Route: ticket.edit] [URI: ticket_ads/edit/{ad}][Route: ticket.edit] [URI: ticket_ads/edit/{ad}] 缺少必需的参数
【发布时间】:2018-01-21 13:36:31
【问题描述】:

我正在尝试编辑表格中的记录。我已经创建了一条路线和表格,但我无法克服这个错误。我已经找到了问题,但我找不到解决方法。我认为edit.blade.php 文件需要$ad->id 传递是否正确?

$ad->id 是列表视图中特定添加的 ID。列表视图显示了表格中的所有票证,下面的链接旨在编辑该项目。

使用以下代码访问编辑路由:

<a href="{{ route('ticket.edit', $ad->id) }}">Edit</a>

我有一个应该打开编辑视图表单的路线:

Route::get('/ticket_ads/edit/{ad}', 'TicketAdsController@editTicketAdForm')->name('ticket.edit');

上面的路由在控制器中指向这个:

  public function editTicketAdForm($id)
  {
      //$ad = DB::table('ticket_ads')->where('id', $id)->value('id');
      return view('Ads.edit')->with('id', $id);
  }

这是上面函数调用的视图:

@extends('Shared.Layouts.MasterWithoutMenus')

@section('title')
Edit a ticket ad
@stop

@section('content')
<div class="container">
  <div class="row">
    <div class="col-md-8 col-md-offset-2">
      <div class="panel panel-default">
        <div class="panel-heading"><h2>Edit your ticket ad</h2></div>   <br/>

        @if ($errors->any())
            <div class="alert alert-danger">
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
        @endif

        {{ Form::open(array('route' => 'ticket.edit', $id = 'id')) }}

        <div class="form-group">
            {{ Form::label('title', 'Title') }}
            {{ Form::text('title', Input::old('title'), array('class' => 'form-control')) }}
        </div>

        <div class="form-group">
            {{ Form::label('comment', 'Comment') }}
            {{ Form::text('comment', Input::old('comment'), array('class' => 'form-control')) }}
        </div>

        {{ Form::submit('Submit', array('class' => 'btn btn-primary')) }}

        {{ Form::close() }}
      </div>
    </div>
  </div>
 </div>
@endsection

这是引发错误的行

{{ Form::open(array('route' => 'ticket.edit', $id = 'id')) }}

例如,ID 在 URL 中通常显示为 ticket_ads/edit/7

我该如何克服这个问题?

【问题讨论】:

  • 您已将路由定义为 GET Route::get()。在&lt;form action 中,它似乎是 POST 请求。这是正确的吗。尝试分享与 GET 请求相关的内容。
  • 我把它改成&lt;a href="..."&gt;,路由一样,出现同样的错误,所以我怀疑是不是这样。
  • 需要更清楚。请分享更多代码。您分享这一行 {{ Form::open(array('route' => 'ticket.edit', $id)) }},还有这一行
    ,不清楚是哪个问题造成的。删除不相关的代码,并尝试扩展更多可能更关注的代码。
  • 我不确定还有什么要分享的。你想让我分享什么?我在视图部分添加了更多代码。我也添加了更多解释。

标签: php laravel


【解决方案1】:

改变这一行:

{{ Form::open(array('route' => 'ticket.edit', $id = 'id')) }}

到这里:

{{Form::open(array('route' => array('ticket.edit', $id)))}}

【讨论】:

  • 就是这样。谢谢。
【解决方案2】:

这个

{{ Form::open(array('route' => 'ticket.edit', $id = 'id')) }}

错了。正确的语法是:

{{ Form::open(['route' => ['ticket.edit', $id]]) }}

你也应该安全地放弃使用 array() 转而使用 [] 语法,因为 Laravel 需要 PHP 5.4+(除非你使用的是旧版本的 Laravel,比如 v4?)

【讨论】:

  • 它仍然给出错误。我在 Laravel 5.2.45 上。会更新,但不会投入生产。
【解决方案3】:

调用路由的正确语法是。

{{ route('/cardetails', ['121','cars'] ) }}

在 URL 中它会像下面这样。

127.0.0.1:8000/cardetails/121/cars

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2022-01-16
    • 2021-03-10
    • 2020-08-17
    相关资源
    最近更新 更多