Laravel 5.3 validation disable - validation

On my project, I did a custom helper like below:
Best practices for custom helpers on Laravel 5
After that, my validations has been disabled. The validations happens normally on server side, withErrors($validator) method, but in my view blade the variable $errors is always empty.
How can I enable the laravel's validation again?

I found a solution here:
http://laravel.io/forum/03-28-2016-errors-variable-empty-after-failed-validation
I finally found a fix, and I want to share it in case anyone else ends up here with the same problem.
In app\Http\Kernel.php I moved \Illuminate\Session\Middleware\StartSession::class from the 'web' $middlewareGroups to $middleware.
I have no idea why this fixed the problem, which worries me a bit. But hey... it's working.

Related

How to avoid overwriting routes in Laravel?

Sorry in advance, I know it has been asked before but I did not figure out the solution.
I am new to Laravel, still learning and stuck with this issue:
My objective is to add pages in admin and show these pages in frontend.
For the Front part of the website I have this route:
Route::get('/{page}', 'PagesController#show');
so the when you access /about, /contact, /another-page I use the same view
For the Admin part of the website I have this route:
Route::get('/admin', 'AdminController#show');
My problem is that the first route overwrites the second route and I don't know how to avoid this.
I have tried with namespaces and grouping routes, but I get the same outcome.
Thank you
To make it simple this is happening because you have the route with the parameter before the admin route so is going to send the "admin as a parameter of page"
The Simple fix is just put admin route before your "/{page} so it will find admin route first,Something Like this:
Route::get('/admin', 'AdminController#show');
Route::get('/{page}', 'PagesController#show');
But I do not recommend building your routes this way and have specifics pages setup if possible, This way of building routes will mess around with the 404 route not found aswell.

URL Routing: Laravel

I have been working on laravel and have been doing some routing. I was just wondering on what is the difference between writing the route as:
route::get('roles/{id}/edit',rolesController#edit);
versus
route::get('roles/edit/{id}',rolesController#edit);
One difference is clearly visible and that is the placement of the id variable. Can't figure out any other reason. Please provide an explanation on this.
Other than the actual look of the URL, there's no real difference as far as the framework is concerned.
I suppose it's the matter of preference when using any of this. Maybe, for example, if you are giving options of editing the user profile and posts, this might come handy as both are different routes, technically
No difference. It depends on you how you would like to build your routes. But try to user best practices which laravel creator recommend (https://laravel.com/docs/5.7/controllers#resource-controllers).
And also i want take your attention on how you called your controller. You should use CamelCase for naming your files (https://github.com/alexeymezenin/laravel-best-practices/blob/master/README.md).
There's no difference, but you might want to look in reosource routes and controller. Basically, laravel framework automatically creates routes and methods for controllers that you might need in your project. For example:
If you create a contoller like this:
php artisan make:controller RolesController --resource
and create a resource route like this:
Route::resource('/roles', 'RolesController ');
framework automatically crates this routes for you:
Verb Path Action Route Name
GET /roles index roles.index
GET /roles/create create roles.create
POST /roles store roles.store
GET /roles/{roles} show roles.show
GET /roles/{roles}/edit edit roles.edit
PUT|PATCH /roles/{roles} update roles.update
DELETE /roles/{roles} destroy roles.destroy
So you don't have to make your own routes and ask yourself if they are correct or not. Look into laravel official documentation for more info about this.

Laravel 5.3 session cookies are not creating in browser

I am facing token mismatch issue in new server while working fine in localhost. I have tried every possible way to clear cache and give SESSION_DOMAIN path in env but all seems useless.
Also session cookies are not being created in web browser while creating in storage/framework/session folder.
Please help me !
Are you getting tokenMismatchException exception?
If yes, some of the possible reasons are:
Check your files for PHP end tag "?>", if exists remove it. For more detail refer to this link.
You may need to use web middleware. For more detail refer to this link (although it is about laravel 5.2 but, it may work for your situation too).
Another thing to try is checking for web middleware presence. Normally it should be automatically applied to routes/web.php
Route::group(['middleware' => ['web']], function () {
<routes>
});
Also check out https://laravel.com/docs/5.3/upgrade to see if you have any code that might have been influenced by this update.
And lastly, it would be nice if you could post a piece of code which is responsible for sessions in your app.

Customizing the paginator view in Laravel 5.2

I've been reading the docs and set up a basic app.
Every issue I've had before I've been able to solve by looking in the docs and occasionally using Google, however I can't figure this one out.
I'm using Laravel version 5.2.43 and the Paginator works fine.
I use it in my view like this,
$data->links()
But now I would like to customize the look of the paginator.
So I tried running this command
php artisan vendor:publish --tag=laravel-pagination
In the hopes of simply being able to customize that view instead of creating a new one all over but that command didn't work, it just said
Nothing to publish for tag [laravel-pagination]
So, instead I did this.
{{ $data->links('folder.viewName') }}
But this command gives me this error,
Argument 1 passed to Illuminate\Pagination\LengthAwarePaginator::links() must be an instance of Illuminate\Contracts\Pagination\Presenter, string given
So I'm not sure what's going on. The pagination works but I can't set the view myself.
Any thoughts on what's going on here?
Any help would be greatly appreciated.
I believe you can't do this in Laravel 5.2 without "hacking" the framework. Fortunately, Laravel 5.3 is released this week and it features custom pagination views
Custom pagination in Laravel 5.3
So it turns out I've been reading the 5.3 documentation for Laravel all this time. Which explains a lot of things...
So when 5.3 comes out we can do
$paginator->links("myOwnView")
Until then, I've done it the manual way of using the instances inside the paginator object.

Routing problems, CodeIgniter

This might be a very silly question because I'm new to PHP frameworks. But I have got the concept of MVC framework. But this routing thing is very confusing me.
I created a controller and view for dashboard and set it as default. Then I wanted to check if the user is logged in then send him to the login page if it's not.
So, what I did in the routes is this:
$route['default_controller'] = 'dashboard/index';
$route['login'] = 'login';
But even if I add a thousand more controllers and routes, it still goes to the default i.e the dashboard. This was supposed to work http://localhost/codeigniter/login. I'm very sure I haven't put a redirect-to-dashboard code in the login page.
at first it's important to understand to routing in codeigniter.
The key for understanding is $route['url/path'] = controller/method (or "public function")
So. In your case, you routing to Login controller and index method (or index function...this it interpretation of codeigniter )
If you want to check if is user logged or not, you may try to check for examle session variable inside of called functon. But it depends on your application. But I think that is not good idea to check it in routes.php
Hope it helps you.
The default controller in routes, will be the controller that opens your index or first page.
If your first page is in controller "pages", then that is your default controller. Do not use it for your secure dashboard pages
Your first page should be the index method in the controller. It should look like this
$route['default_controller'] = "pages";
Where pages is your first page controller

Resources