Laravel route isn't working - php

i'm new to laravel, still learning, and i have 2 routes with controllers and function index
this is my routes.php
Route::get('/', 'HomeController#index');
Route::get('accessories', 'ProductsController#index');
the first one works well but i don't know why the second doesn't:
Not Found
The requested URL /laravel/public/accessories was not found on this server.
thanks.

Try to access yourwebsite.com/index.php/accessories

Related

How to call route which is not defined in laravel

I am newbie to laravel and i am working on a project and i have a following situation
lets assume my base url is https://example.com
Now i want to pass a slug(argument) after a base url which means https://example.com/xyz something like that, and i need to do this on multiple times in my project
This is what i'd tried but it is not working it says that route is not defined.
Route::get('{slug?}', [App\Http\Controllers\UiviewsController::class, 'method1'])->name('method1');
Route::get('/method2/{slug?}', function($slug){
return redirect()->route('method1', ['slug'=>$slug]);
});
And also how can i achieve that on which argument which particular method should be called? for example if i have several other routes similar to above one.
how can i achieve this?
Thank you in advance for your help. :)
You should use the fallback system.
Route::fallback(function () {
//
});
Laravel Route fallback official docs
also, beware:
The fallback route should always be the last route registered by your
application.
Other Option:
Also, you can define a parameter as below example
Route::any('{any}', function(){
//...
})->where('any', '.*');
Please Try php artisan route:cache in your terminal then check it again.

Out of a sudden my /admin route inside the Auth Middleware in Laravel 8 returns a 404 not found

I recently started to code my own Admin panel in Laravel.
Every route was working fine, but all of a sudden the /admin route inside the Auth middleware group stopped working properly.
This are my routes inside web.php
My php artisan route:list
And the EntryController#index looks like this:
public function index()
{
//
$entries = Entry::all();
return view('admin.index', ['entries' => $entries]);
}
I'm having this problem for about 2 now, so maybe one of you know the solution.
I think you're having this issue because of how Laravel prioritises its routes.
And I think the culprit might be this route:
Route::get('/{link}', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
When you use {link} you are basically saying: "expect anything in this segment of the URI". Since the /{link} route is placed before the /admin route, and their URIs both contain only one segment, Laravel will try to resolve /{link} first.
Solution: just move the /{link} route below the /admin route. Might be best to just place it at the bottom of the list :D

Catching all other routes in Laravel 5.2

I am trying to send all undefined routes in a specific controller like this:
Route::get('/{slug:[A-Za-z0-9:/]+}', ['uses' => '\Site\Http\Controllers\AppController#index'])
It works in Lumen 5.1 but no chance in Laravel 5.2.
How can I setup such general match routes?
I didn't test it, but something like this should work:
Route::get('/{slug}', 'AppController#index')->where('slug', '([A-Za-z0-9:/]+)');
Put this after all of the relevant other routes:
Route::get('/{slug}', '\Site\Http\Controllers\AppController#index');
Route Undefined = 404 Error, so you can handle it properly.
Look at this question:
Redirect to homepage if route doesnt exist in Laravel 5

Routing in laravel framework

I using the laravel framework of php for development.I done these following
steps
I define Route::resource('users', 'UsersController'); in route file and then define Route::get('user/pingme', 'UserController#pingme');
When i make a get call to pingme function, it was not working .I was getting the response code is 200 but code inside that pingme function was not working and i do not know why.
then i changed it to Route::post('user/pingme', 'UserController#pingme'); it was working fine as needed.
then what i did is, removed Route::resource('users', 'UsersController'); and make again get route to ping me function and make get call and it starts working fine .
so this is any bug in framework(rare thing) or i am missing something(probably yes)? Help me out....
Route file works as follows:-
if you have wrote a mapping for controller only, then it needs to come at the bottom of all other route mapping otherwise your program controller will pick route from user controller only and will redirect to UserController.
so the right order of all routes is:-
Route::get('user/pingme', 'UserController#pingme');
Route::post('user/logout', 'UserController#logout')->before('auth');
Route::resource('user', 'UserController');
OR
Route::post('user/logout', 'UserController#logout')->before('auth');
Route::get('user/pingme', 'UserController#pingme');
Route::resource('user', 'UserController');
In your route file, the order of the routes needs to be as follows:
Route::get('user/pingme', 'UserController#pingme');
Route::post('user/logout', 'UserController#logout')->before('auth');
Route::resource('user', 'UserController');
If Route::resource('user', 'UserController') comes before the other routes, the GET request to user/pingme will be handled by show method inside of UserController, because it is how Resourceful Controllers work. So, the Route::resource for user needs to come after all other routes with user/ prefix.

Unable to generate a URL for the named route "regions.index" as such route does not exist

I'm doing rest api with laravel 4 and I'm getting this error:
Unable to generate a URL for the named route "regions.index"
as such route does not exist.
My router:
Route::group(array('prefix' => 'api/v1'), function(){
Route::get('regions', 'RegionsController#index');
Route::get('regions/{id}', 'RegionsController#getOne');
Route::get('regions/{id}/cities', 'RegionsController#getCities');
});
api/v1/regions and api/v1/regions/1/cities
are working fine
but api/v1/regions/1 is not working and thows exception, I really don't know why and can't find how to make it work.
You have not named your routes.
You should change
Route::get('regions', 'RegionsController#index');
to
Route::get('regions', array('as'=>'regions.index', 'uses'=> 'RegionsController#index');
Thank's for answer, I did solve it. I'm stupid and I call in controller route which I previously deleted. :(
I called in controller:
return View::make('regions.index', compact('regions'));
and regions.index was deleted

Categories