Laravel编辑路线未定义

时间:2018-10-01 09:24:17

标签: php laravel laravel-5.7

此处的路线代码:

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>

结果表浏览器

enter image description here

最近,在我收到来自编辑的错误代码之前。 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 或不使用它,如何访问编辑?

谢谢。

6 个答案:

答案 0 :(得分:3)

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

Laravel资源控制器已经具有“ 编辑”操作。

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

答案 1 :(得分:1)

如果您想在视图内使用路由,则应为该路由命名,如下所示:

Starting selenium server... started - PID:  13736

There was an error while starting the test runner:

C:\Users\xxx\Nightwatch\features\step_definitions\test.js:93
When(/^I click the button$/, function(browser) => {
     ^

SyntaxError: Unexpected regular expression

然后只使用

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

有关更多信息,请参见Laravel路由文档 https://laravel.com/docs/5.7/routing

答案 2 :(得分:1)

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

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');可以解决您不必指定单独路由的问题,因为它将由其自身的资源处理。

答案 3 :(得分:0)

使用此

<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 :(得分:0)

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

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

答案 5 :(得分:0)

在使用下面介绍的解决方案之前,请尝试使用默认路线-删除您的编辑路线行。 如果您通过工匠控制台命令传递标志-r使控制器变得资源丰富,则您已经定义了edit方法。您在这里所做的工作是覆盖默认的编辑方法(check table),该方法将编写未定义路由名称的新编辑方法。 解决方案是使用默认方法或使用设置自定义编辑方法,但重要的是,在资源路由之前。

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

您将使用{{$ route('ruangjns.custom-edit',$ ruangjnsId)}}来调用