Ghassen Arfaoui
Ghassen Arfaoui

Reputation: 59

Laravel route [XXX.XXX] not defined

I have a problem access the functions of my controller, only the Controller.index works and all the others not working.

Routes

Route::get('Publications/datatables', 'publicationController@datatables')->name('Publications-datatables');
Route::resource('publications', 'publicationController');

Controller

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use App\Publication;
use DataTables;
use Illuminate\Http\Request;

class publicationController extends Controller
{
    public function index()
    {
        $publications = Publication::get();

        return view('Publications.index', compact('publications'));
    }

    public function create(Request $request)
    {
        return view('Publications.create');
    }

    public function store(Request $request)
    {
        $publication = Publication::create($request->all());

        return redirect()->route('Publications.show', $publication->id)->with('success', trans('og.alert.success'));
    }

    public function show(Publication $publication)
    {
        return view('Publications.show', compact('publication'));
    }

    public function edit(Publication $publication)
    {
        return view('Publications.edit', compact('publication'));
    }

    public function update(Request $request, $id)
    {
        $data = $request->all();
        $publication = Publication::find($id);
        $publication->update($data);

        return redirect()->route('Publications.show', $publication->id)->with('success', trans('og.alert.success'));
    }

    public function destroy($id, Request $request)
    {
        if ($publication = Publication::find($id)) {
            $wasDeleted = $publication->delete();
        }

        return redirect()->route('Publications.index')->with('success', trans('og.alert.success'));
    }

    public function datatables()
    {
        $Publications = Publication::all();

        return Datatables::of($Publications)
            ->editColumn('id', '<a href="{{route(\'Publications.show\', ["id" => $id])}}">{{$id}}</a>')
            ->addColumn('actions',
                '<a class="btn btn-primary btn-xs" href="{{route(\'Publications.edit\', $id)}}" data-placement="top" data-toggle="tooltip" title="' . trans('og.button.tooltip.edit') . '" data-title="' . trans('og.button.tooltip.edit') . '" ><span class="glyphicon glyphicon-pencil"></span></a>
               <form style="display:inline" action="{{route(\'Publications.destroy\', $id)}}" method="POST"><input type="hidden" name="_token" value="{{csrf_token()}}"><input type="hidden" name="_method" value="DELETE" ><span data-placement="top" data-toggle="tooltip" title="' . trans('og.button.tooltip.delete') . '"><button class="btn btn-danger btn-xs" type="submit"  onclick="return confirm(\'' . trans('og.alert.confirm_deletion') . '\')" ><span class="glyphicon glyphicon-trash"></button></span></a></form>')
            ->rawColumns(['id', 'actions'])
            ->make(true);
    }
}

Upvotes: 0

Views: 2020

Answers (1)

user633440
user633440

Reputation:

Have you tried php artisan route:list to verify your routes? If not, this is what your example generates:

| GET|HEAD  | Publications/datatables         | Publications-datatables | App\Http\Controllers\publicationController@datatables                  | web        |
| GET|HEAD  | publications                    | publications.index      | App\Http\Controllers\publicationController@index                       | web        |
| POST      | publications                    | publications.store      | App\Http\Controllers\publicationController@store                       | web        |
| GET|HEAD  | publications/create             | publications.create     | App\Http\Controllers\publicationController@create                      | web        |
| PUT|PATCH | publications/{publication}      | publications.update     | App\Http\Controllers\publicationController@update                      | web        |
| DELETE    | publications/{publication}      | publications.destroy    | App\Http\Controllers\publicationController@destroy                     | web        |
| GET|HEAD  | publications/{publication}      | publications.show       | App\Http\Controllers\publicationController@show                        | web        |
| GET|HEAD  | publications/{publication}/edit | publications.edit       | App\Http\Controllers\publicationController@edit                        | web        |

The routes are case sensitive. Perhaps you should use an uppercase 'P" if that's what you are looking to do.

Route::resource('Publications', 'publicationController');

Upvotes: 1

Related Questions