laravel5.8 simple spa

requisito: tener instalado npm, sino instalarlo asi:

sudo apt install npm
npm install cross-env

--------------------


en la carpeta del proyecto:



npm install vue-router --save
npm install
Cuando vue-router está instalado 2 componentes se registran globalmente  en toda la aplicacion para usar:
  • RouterLink Generalmente usado en lugar del tag a para crear hyperlinks and acceder  Vue Router
  • RouterView Outlet to enable swap of designated page components
editar el archivo resources/js/app.js 

agregar las sgts lineas:

import VueRouter from 'vue-router';


window.Vue = require('vue');
Vue.use(VueRouter);

podemos ir abriendo otra consola y ejecutar:

npm run watch 

este comando creará un archivo app.js dentro de la carpeta  
public cada vez que se guarde algun cambio en el archivo 
resources/js/app.js.

editar el archivo routes/web.php
y hacemos que nuestras rutas web sean manejas por el Vue Router, reemplazando el contenido por:
Route::get('/{vue_capture?}', function() {
return view('welcome');
})->where('vue_capture', '[\/\w\.-]*');

editar el archivo resources/welcome.blade.php
y reemplazar el contenido del body con lo siguiente:

<body>
<div id="app">
<ul>
<li><router-link to="/">Home</router-link></li>
<li><router-link to="/page-1">Page 1</router-link></li>
<li><router-link to="/page-2">Page 2</router-link></li>
</ul>
<router-view></router-view>
</div>
<script src="{{ asset('js/app.js') }}"></script>
</body>

ahora debemos crear las vistas relacionadas a estas 3 router links.
Entonces, en la carpeta resources/js crear la carpeta views dentro de ella crear los archivos
Home.vue
PageOne.vue
PageTwo.vue
donde cada uno de estos archivos tenga un contenido como este:
<template>
<div class="content">
* nombre de la vista para poder identificarla
</div>
</template>

ahora debemos crear nuestro archivo de rutas para decirle a Vue lo que cada router link deberia cargar
en la router view.

en resources/js creamos el archivo routes.js :

import VueRouter from 'vue-router';

import Home from './views/Home.vue';
import PageOne from './views/PageOne.vue';
import PageTwo from './views/PageTwo.vue';

let routes = [
{
path: '/',
name: 'home',
component: Home
},

{
path: '/page-1',
name: 'pageOne',
component: PageOne
},

{
path: '/page-2',
name: 'pageTwo',
component: PageTwo
},


];

const router = new VueRouter({
routes: routes,
mode: 'history'
});

export default router;

ahora volvemos a editar el archivo resources/js/app.js 

agregamos la referencia al archivo de routes
import router from './routes';
y actualizamos la constante app:

const app = new Vue({
el: '#app',
router: router
});

editamos resources/views/welcome.blade.php
con elementos de estilo

.content {
display: block;
width: 960px;
margin: 20px auto;
background: lightgrey;
color: black;
padding: 20px;
}

ul {
width: 960px;
margin: 20px auto;
}

li {
display: inline-block;
}

a,
a:visited {
color: grey;
}

a:hover,
a.router-link-exact-active {
color: red;
}

finalmente, ya podemos ver nuestra pagina SPA:
donde al hacer click en los links se cargara el contenido de sus respectivas vistas sin recargar toda la página


nota: si inspeccionamos la pagina de nuestra aplicacion veremos que hay un error similar a
laravel CSRF token not found:
esto se debe a que nuestro resources/js/app.js
hace referencia a bootstrap.js y este quiere leer un meta tag de nombre "csrf-token"
que no existe, entonces lo que tenemos que hacer es agregar ese elemento en la seccion de <head>
de welcome.blade.php

<meta name="csrf-token" content="{{csrf_token()}}">


fuente original:
https://www.wearethreebears.co.uk/blog/building-a-basic-spa-with-laravel-and-vue-router

laravel5.8 inicio linux

antes de empezar:

sudo apt-get update
sudo apt-get install php7.VERSION-xml
sudo apt-get install php-mbstring
Si da errores de mbstring o openssl editar el php.ini y comentar esas lineas

gedit /etc/php/7.VERSION/cli/php.ini

;extension=mbstring
;extension=openssl

Si no se tiene instalado el driver de mysql, hay que instalarlo:
sudo apt-get install php-mysql

para buscar el driver de mysql y verificar que lo tenemos instalado:

sudo apt-cache search php-mysql


---------------------------

tener instalado mariadb

sudo apt-get update
sudo apt-get install mariadb-server mariadb-client
acceder a la instancia de mariadb
sudo mysql -u root -p
para que no haya problemas de permisos con el usuario root:

use mysql;
update user set plugin='' where User='root';
flush privileges;
Creamos la base datos que usara nuestra aplicacion

create database spa_simple;


 editamos el archivo .env con los datos de la BD creada:

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=spa_simple DB_USERNAME=root DB_PASSWORD=


editar app\Providers\AppServiceProvider.php

 public function boot()
   {
      \Illuminate\Support\Facades\Schema::defaultStringLength(191);
   }



laravel5.8 inicio con login y registro con mail de verificacion

composer create-project --prefer-dist laravel/laravel proy-auth-58

 Directories within the storage and the bootstrap/cache directories should be writable by your web server or Laravel will not run. 


renamed the .env.example file to .env

php artisan key:generate

------


en User.php

..implements MustVerifyMail

en web.php

Auth::routes(['verify' => true]); //para generar los links de verify Route::get('/home', 'HomeController@index')->name('home')->middleware('verified');

// para que la home sea accesible solo si ha verificado su email


en .env registrar los datos de la base de datos y de mailtrap

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=proy-auth-58 DB_USERNAME=root DB_PASSWORD= MAIL_DRIVER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=076c14147f6715 MAIL_PASSWORD=c1ba4b109f4323 MAIL_ENCRYPTION=null

luego:

php artisan migrate:fresh


Clear cache with: 
php artisan config:cache

luego podemos probar la aplicacion levantando el servidor interno:
php artisan serve
registrarse con cuaquier mail el correo de verificacion sera atrapado siempre por mailtrap, entrando en la casilla de inbox
para ver los mensajes de las vistas en espanol debemos
ir a config/app.php

y cambiar 'locale' => 'en',
por 'locale' => 'es',
ir a resources/lang
y crear el archivo es.json

y por ejemplo colocar la sgt entrada
{
"Verify Your Email Address":"Verifica tu direccion de Email"

}
para que la pagina tome estos cambios
php artisan config:cache


java info

The following command will tell you a lot of information about your java version, including the vendor:
java -XshowSettings:properties -version
Works on Windows and Linux

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable