【问题标题】:Laravel edit route not definedLaravel 编辑路由未定义
【发布时间】:2019-03-06 09:10:17
【问题描述】:

这里的路线代码:

Route::resource('ruangjns', 'RuanganjnsController');
Route::get('ruangjns/{ruangjn}/edit', 'RuanganjnsController@edit');

这里是控制器:

public function edit(Ruanganjns $ruangjn)
    {
        $ruangjn = Ruanganjns::findOrFail($ruangjn->id);
        return view('ruanganjns.edit', compact('ruangjn'));
    }

这里查看索引:

<tbody>
@php
$no = 1;
@endphp
@foreach ($ruanganjns as $data)
<tr>
<td>{{ $no++ }}</td>
<td>{{ $data->kode_jenis_ruangan }}</td>
<td>{{ $data->jenis_ruangan }}</td>
<td>{{ $data->tgl_berlaku }}</td>
<td>{{ $data->status }}</td>
<td>
<a href="{{ route('ruangjns.edit', $data->id) }}" class="btn btn-warning">Edit</a>
</td>
<td>
<form action="{{ route('ruangjns.destroy', $data->id) }}" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="hidden" name="_method" value="DELETE">
<button type="submit" class="btn btn-danger" onClick="return confirm('Are You Absolutely Sure You Want to Delete the Data?')">Delete</button>
</form>
</td>
</tr>
@endforeach
</tbody>

这里是结果表单浏览器

最近在我从编辑中得到错误代码之前。 This My Post Before所以我把这段代码放了

Route::get('ruangjns/{ruangjn}/edit', 'RuanganjnsController@edit');

在此工作之后,现在出现错误,无法读取图片中的 EDIT 按钮。但是当我在浏览器上搜索错误时,它必须替换为 URL

<a href="{{ route('ruangjns.edit', $data->id) }}" class="btn btn-warning">Edit</a>

<a href="{{ url('ruangjns.edit', $data->id) }}" class="btn btn-warning">Edit</a>

但主要问题是如果我使用 URL 或不使用它,如何访问编辑?

谢谢。

【问题讨论】:

  • 如果你想使用url,像这样使用它:url( 'ruangjns/'.{{ $data-&gt;id }}.'/edit')

标签: php laravel laravel-5.7


【解决方案1】:

在您使用下面描述的解决方案之前,请尝试使用默认路由 - 删除您的编辑路由行。 如果您使用工匠控制台命令传递标志-r 来制作控制器,那么您已经定义了编辑方法。您在这里所做的是重写默认编辑方法 (check table),编写没有定义路由名称的新编辑方法。 解决方案是使用默认方法或使用设置自定义编辑方法,但重要的是,在资源路由之前。

Route::get('ruangjns/{ruangjn}/edit', 'RuanganjnsController@edit')->name('ruangjns.custom-edit');
Route::resource('ruangjns', 'RuanganjnsController');

你会用 {{ $route('ruangjns.custom-edit', $ruangjnsId) }}

【讨论】:

    【解决方案2】:

    根据这个Laravel's documentation,你需要用括号写参数。 您能否在您的视图中的链接上尝试使用此语法?

    {{ route('ruangjns.edit', ['ruangjns' => $data->id]) }}
    

    【讨论】:

      【解决方案3】:

      使用这个

      <a href="{{ route('ruangjns/'.$data->id.'/edit') }}" class="btn btn-warning">Edit</a>
      
      public function edit($ruangjn)
      {
          $ruangjn = Ruanganjns::findOrFail($ruangjn);
          return view('ruanganjns.edit', compact('ruangjn'));
      }
      

      【讨论】:

        【解决方案4】:

        只需删除 'Route::get('ruangjns/{ruangjn}/edit', 'RuanganjnsController@edit');'

        Laravel 资源控制器已经有 'edit' 动作。

        https://laravel.com/docs/5.7/controllers#resource-controllers

        【讨论】:

        • 我曾经使用过它,但仍然出现错误。看我之前的帖子。
        【解决方案5】:

        这是因为您没有为路线指定任何名称。

        Route::resource('ruangjns', 'RuanganjnsController');
        Route::get('ruangjns/{ruangjn}/edit', 'RuanganjnsController@edit')->name('ruangjns.edit');
        

        或者你可以尝试更体面的方式

        <a href="{{ url('ruangjns.update', $data->id) }}" class="btn btn-warning">Edit</a>
        

        此外,只有一条路由 Route::resource('ruangjns', 'RuanganjnsController'); 可以实现您不必指定单独的路由,因为它将由它自己的资源处理。

        【讨论】:

          【解决方案6】:

          如果你想在你的视图中使用路由,你应该给路由一个名字,像这样:

          Route::get('ruangjns/{ruangjn}/edit', 'RuanganjnsController@edit')->name('ruangjn-edit');
          

          那就用

          {{route('ruangjn-edit', ['ruangjn' => $data->id])}}
          

          更多信息请查看 Laravel 路由文档 https://laravel.com/docs/5.7/routing

          【讨论】:

          • 没问题的伙伴:)!
          猜你喜欢
          • 2018-06-30
          • 2018-12-16
          • 1970-01-01
          • 2020-02-06
          • 2015-01-16
          • 2019-05-03
          • 2019-05-12
          • 1970-01-01
          相关资源
          最近更新 更多