Como generar una clave nueva para nuestra app de Laravel (APP_KEY) a través de web sin usar la linea de comandos

Para generar una clave nueva para nuestra app de Laravel (APP_KEY) a través de web sin usar la linea de comandos podemos crear una ruta que llame a Artisan:
El comando para generar la clave es «key:generate» y para poner argumentos se pone en forma de array a continuación. Conseguimos la salida de Artisan con «Artisan::output()» a la que solo nos falta limpiar con rtrim.

Route::get('/generate-key', function() {
    Artisan::call('key:generate',['--show' => true]);
    $key = rtrim(Artisan::output());
    return $key;
});

Podemos hacer también que la escriba directamente, para esto debemos tener permisos de escritura en .env

Route::get('/write-key', function() {
    Artisan::call('key:generate');
});

Y si estamos en producción y queremos aún así generar y escribir la clave

Route::get('/force-write-key', function() {
    Artisan::call('key:generate',['--force' => true]);
});

Validación con Laravel, aclaración

Si quieres hacer una validación normal, por ejemplo de un formulario, que si falla vuelva a él, con los errores y los datos, usamos validator::make

Validator::make($request->all(), $rules)->validate();

Si queremos añadir una regla propia de validación, usamos esto mismo pero con after:

Validator::make($request->all(), $rules)->after(function ($validator) use ($request){
    if (session('captcha') != $request->input('captcha')) {
        $validator->errors()->add(
            'captcha', trans('Código incorrecto')
        );
    }
})->validate();

Y que pasa si cuando sucede un error y mostramos los errores, en vez de los nombres de los campos del formulario queremos poner otra cosa, como un nombre más descriptivo:

Validator::make($request->all(), $rules)->setAttributeNames(['idField' => trans('NOmbre más descripticvo del campo')])->validate();

Y si al mostrar los errores en vez de usar los mensajes por defecto queremos personalizar los mensajes de error:

$msg = [
    'required' => 'Es necesario que rellenes :attribute'
];
Validator::make($request->all(), $rules, $msg)->validate();

Si cuando falle, queremos hacer otra cosa, que no sea volver a la página anterior:

$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) { ... }

Reglas de validación aquí