Check the documentation and example ...
https://laravel.com/docs/5.4/controllers#resource-controllers
You need to pass id for edit route
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
Hi all,
i changed my single Routes to the CRUD Route
Route::resource('news' , 'About\NewsController'); Now i when i push the action Button Edit I get the exception above. With my old Route,
Route::get('news/edit', 'About\NewsController@update') ->name('news.update');
it worked, so i am confused now. Maybe you can help me.
Stacktrace
Stack trace:
#0 /var/www/html/heincloud/bootstrap/cache/compiled.php(9748): Illuminate\Routing\Exceptions\UrlGenerationException::forMissingParameters(Object(Illuminate\Routing\Route))
#1 /var/www/html/heincloud/bootstrap/cache/compiled.php(9738): Illuminate\Routing\UrlGenerator->toRoute(Object(Illuminate\Routing\Route), Array, true)
#2 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Redirector.php(158): Illuminate\Routing\UrlGenerator->route('admin.news.edit', Array)
#3 /var/www/html/heincloud/app/Http/Controllers/Backend/About/NewsController.php(72): Illuminate\Routing\Redirector->route('admin.news.edit')
#4 [internal function]: App\Http\Controllers\Backend\About\NewsController->edit(Object(App\Aboutpages\News))
#5 /var/www/html/heincloud/bootstrap/cache/compiled.php(9584): call_user_func_array(Array, Array)
#6 /var/www/html/heincloud/bootstrap/cache/compiled.php(9611): Illuminate\Routing\Controller->callAction('edit', Array)
#7 /var/www/html/heincloud/bootstrap/cache/compiled.php(8665): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\Backend\About\NewsController), 'edit')
#8 /var/www/html/heincloud/bootstrap/cache/compiled.php(8646): Illuminate\Routing\Route->runController()
#9 /var/www/html/heincloud/bootstrap/cache/compiled.php(8355): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))
#10 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Routing\Router->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#11 /var/www/html/heincloud/app/Http/Middleware/SessionTimeout.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#12 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): App\Http\Middleware\SessionTimeout->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#14 /var/www/html/heincloud/app/Http/Middleware/RouteNeedsPermission.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#15 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): App\Http\Middleware\RouteNeedsPermission->handle(Object(Illuminate\Http\Request), Object(Closure), 'view-backend')
#16 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#17 /var/www/html/heincloud/app/Http/Middleware/LocaleMiddleware.php(57): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#18 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): App\Http\Middleware\LocaleMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#19 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#20 /var/www/html/heincloud/bootstrap/cache/compiled.php(10177): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#21 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#22 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#23 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(43): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#24 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure))
#25 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#26 /var/www/html/heincloud/bootstrap/cache/compiled.php(3312): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#27 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#29 /var/www/html/heincloud/bootstrap/cache/compiled.php(13749): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#30 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#31 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#32 /var/www/html/heincloud/bootstrap/cache/compiled.php(12155): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#33 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#35 /var/www/html/heincloud/bootstrap/cache/compiled.php(13495): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#36 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#37 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#38 /var/www/html/heincloud/bootstrap/cache/compiled.php(13432): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#39 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#40 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#41 /var/www/html/heincloud/bootstrap/cache/compiled.php(10054): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#42 /var/www/html/heincloud/bootstrap/cache/compiled.php(8356): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#43 /var/www/html/heincloud/bootstrap/cache/compiled.php(8347): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#44 /var/www/html/heincloud/bootstrap/cache/compiled.php(8338): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#45 /var/www/html/heincloud/bootstrap/cache/compiled.php(2575): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#46 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http{closure}(Object(Illuminate\Http\Request))
#47 /var/www/html/heincloud/bootstrap/cache/compiled.php(3374): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#48 /var/www/html/heincloud/bootstrap/cache/compiled.php(10069): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#49 /var/www/html/heincloud/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request))
#50 /var/www/html/heincloud/bootstrap/cache/compiled.php(10054): Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Object(Illuminate\Http\Request))
#51 /var/www/html/heincloud/bootstrap/cache/compiled.php(2519): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#52 /var/www/html/heincloud/bootstrap/cache/compiled.php(2503): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#53 /var/www/html/heincloud/public/index.php(52): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#54 {main}
Route
<?php
//
//All route names are prefixed with 'admin.about'.
Route::group([
'prefix' => 'about',
], function () {
//start About Us
/*
* For DataTables
*/
Route::get('about/get', 'About\AboutTableController') ->name('about.get');
/*
*Crud Routes
*/
Route::resource('about', 'About\AboutController');
Route::resource('tos' , 'About\TosController');
Route::resource('faq' , 'About\FaqController');
Route::resource('news' , 'About\NewsController');
Route::resource('dcma' , 'About\DcmaController');
});
NewsController
<?php
namespace App\Http\Controllers\Backend\About;
use App\Http\Controllers\Backend\About\NewsController;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Aboutpages\News;
class NewsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('backend.about.news.index')
->withNews(News::all());
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('backend.about.news.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required',
'content' => 'required',
]);
News::create($request->all());
return redirect()->route('admin.news.index')
->with('success','News created successfully');
}
/**
* Display the specified resource.
*
* @param int $news
* @return \Illuminate\Http\Response
*/
public function show($news)
{
$news = News::find($news);
return view('backend.about.news.show',compact('news'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $news
* @return \Illuminate\Http\Response
*/
public function edit($news)
{
$news = News::find($news);
return redirect()->route('admin.news.edit');
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $news
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $news)
{
$this->validate($request, [
'title' => 'required',
'content' => 'required',
]);
News::find($news)->update($request->all());
return redirect()->route('admin.news.index')
->with('success','News updated successfully');
}
/**
* Remove the specified resource from storage.
*
* @param int $news
* @return \Illuminate\Http\Response
*/
public function destroy($news)
{
$news = News::where('id',$news)->first();
if ($news != null)
{
$news->delete();
return redirect()->route('admin.news.index')->with(['message'=> 'Successfully deleted!!']);
}
return redirect()->route('admin.news.index')->with(['message'=> 'Wrong ID!!']);
}
}
Index.blade
@extends ('backend.layouts.app')
@section ('title', trans('labels.pages.news.title'))
@section('after-styles')
{{ Html::style("css/backend/plugin/datatables/dataTables.bootstrap.min.css") }}
@stop
@section('page-header')
<h1>
{{ trans('labels.pages.news.title') }}
<small>{{ trans('labels.pages.table.index') }}</small>
</h1>
@endsection
@section('content')
@if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{ $message }}</p>
</div>
@endif
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('labels.pages.table.list') }}</h3>
<div class="box-tools pull-right">
@include('backend.about.includes.news-header-buttons')
</div><!--box-tools pull-right-->
</div><!-- /.box-header -->
<div class="box-body">
<div class="table-responsive">
<table id="news-table" class="table table-condensed table-hover">
<thead>
<tr>
<th>{{ trans('labels.pages.table.id') }}</th>
<th>{{ trans('labels.pages.table.title') }}</th>
<th>{{ trans('labels.pages.table.content') }}</th>
<th>{{ trans('labels.pages.table.userid') }}</th>
<th>{{ trans('labels.general.actions') }}</th>
</tr>
</thead>
<tbody>
@foreach ($news as $news)
<tr>
<td>{{ $news->id }}</td>
<td>{{ $news->title }}</td>
<td>{{ $news->content }}</td>
<td>{{ $news->user_id }}</td>
<td>
<a href="{{ route('admin.news.show',$news->id) }}"class="btn btn-xs btn-info"><i class="fa fa-search" data-toggle="tooltip" data-placement="top"
title="show"{{ trans('buttons.general.crud.view') }}></i></a>
<a href="{{ route('admin.news.edit',$news->id) }}"class="btn btn-xs btn-primary"><i class="fa fa-pencil" data-toggle="tooltip" data-placement="top"
title="edit"{{ trans('buttons.general.crud.edit') }}></i></a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div><!--table-responsive-->
</div><!-- /.box-body -->
<!--History-->
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('history.backend.recent_history') }}</h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div><!-- /.box tools -->
</div><!-- /.box-header -->
<div class="box-body">
{!! history()->renderType('news') !!}
</div><!-- /.box-body -->
</div><!--box box-success-->
<!--end History-->
</div><!--box-->
@stop
@section('after-scripts')
{{ Html::script("js/backend/plugin/datatables/jquery.dataTables.min.js") }}
{{ Html::script("js/backend/plugin/datatables/dataTables.bootstrap.min.js") }}
<script>
$(function() {
$("#news-table").DataTable({
order: [[0, "desc"]]
});
});
</script>
@stop
edit.blade
@extends ('backend.layouts.app')
@section ('title', trans('labels.pages.news.title') . ' | ' . trans('labels.pages.news.edit'))
@section('page-header')
<h1>
{{ trans('labels.pages.news.title') }}
<small>{{ trans('labels.pages.news.edit') }}</small>
</h1>
@endsection
@section('content')
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> There were some problems with your input.<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
{!! Form::model($news, ['method' => 'PATCH','route' => ['admin.news.update', $news->id]]) !!}
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('labels.pages.table.input') }}</h3>
<div class="box-tools pull-right">
@include('backend.about.includes.news-header-buttons')
</div><!--box-tools pull-right-->
</div><!-- /.box-header -->
<!--Title-->
<div class="box-body">
<div class="form-group">
{{ Form::label('title', trans('labels.pages.table.title'), ['class' => 'col-lg-2 control-label']) }}
<div class="col-lg-10">
{{ Form::text('title', null, ['class' => 'form-control', 'placeholder' => trans('labels.pages.table.title')]) }}
</div><!--col-lg-10-->
</div><!--form control-->
<!--textarea-->
<div class="form-group">
{{ Form::label('content', trans('validation.attributes.frontend.message'), ['class' => 'col-lg-2 control-label']) }}
<div class="col-lg-10">
{{ Form::textarea('content', null, ['class' => 'form-control', 'placeholder' => trans('validation.attributes.frontend.message')]) }}
</div><!--col-md-6 -->
</div><!--form-group-->
</div><!-- /.box-body -->
</div><!--box-->
<div class="box box-info">
<div class="box-body">
<div class="pull-left">
{{ link_to_route('backend.about.news.index', trans('buttons.general.cancel'), [], ['class' => 'btn btn-danger btn-xs']) }}
</div><!--pull-left-->
<div class="pull-right">
{{ Form::submit(trans('buttons.general.crud.create'), ['class' => 'btn btn-success btn-xs']) }}
</div><!--pull-right-->
<div class="clearfix"></div>
</div><!-- /.box-body -->
</div><!--box-->
{{ Form::close() }}
</script>
@stop
You need to load view in your edit method ... something like this
public function edit($news)
{
$news = News::find($news);
return view('news.edit')->with('news' $news);
}
https://scotch.io/tutorials/simple-laravel-crud-with-resource-controllers
Please or to participate in this conversation.