<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Framework_Laravel</id>
	<title>Framework Laravel - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Framework_Laravel"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Framework_Laravel&amp;action=history"/>
	<updated>2026-08-30T08:16:39Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Framework_Laravel&amp;diff=259424&amp;oldid=prev</id>
		<title>Joan: /* Tutorial ràpid */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Framework_Laravel&amp;diff=259424&amp;oldid=prev"/>
		<updated>2020-05-08T17:17:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Tutorial ràpid&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introducció=&lt;br /&gt;
*https://laravel.com/docs/7.x/&lt;br /&gt;
=Instal·lació=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ php -v&lt;br /&gt;
PHP 7.2.24-0ubuntu0.18.04.4 (cli) &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Instal·lo les dependències que es comenten: php-bcmath, php-gd, etc&lt;br /&gt;
&lt;br /&gt;
Primer de tot, es necessita ''composer'' com a sistema d'instal·lació i resolució de dependències a PHP:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get install composer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i ara ja puc instal·lar Laravel, de forma global:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ composer global require laravel/installer&lt;br /&gt;
&lt;br /&gt;
$ export PATH=$PATH:$HOME/.config/composer/vendor/bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I ara ja puc crear un projecte de Laravel. Ho faig amb ''composer'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ composer create-project --prefer-dist laravel/laravel blog&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Local Development Server:&lt;br /&gt;
&lt;br /&gt;
If you have PHP installed locally and you would like to use PHP's built-in development server to serve your application, you may use the serve Artisan command. This command will start a development server at http://localhost:8000:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd blog&lt;br /&gt;
$ php artisan serve&lt;br /&gt;
Laravel development server started: http://127.0.0.1:8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i efectivament ja tinc l'aplicatiu funcionant a:&lt;br /&gt;
*http://127.0.0.1:8000&lt;br /&gt;
&lt;br /&gt;
'''Public Directory: public/'''&lt;br /&gt;
&lt;br /&gt;
After installing Laravel, you should configure your web server's document / web root to be the public directory. The ''index.php'' in this directory serves as the front controller for all HTTP requests entering your application.&lt;br /&gt;
&lt;br /&gt;
Tanmateix, si mirem dins del fitxer ''public/index.php'' no s'entén res. La clau està en el directori ''routes/web.php'', on es defineixen les rutes que té l'aplicatiu.&lt;br /&gt;
=Tutorial ràpid=&lt;br /&gt;
[[Fitxer:Laravel_tutorial.png | thumbnail]]&lt;br /&gt;
Seguim aquest video de Youtube de 45 minuts i reproduim els exercicis, '''LARAVEL essentials you need to know in 45 minutes''':&lt;br /&gt;
*https://www.youtube.com/watch?v=ubfxi21M1vQ&amp;amp;t=612s&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ joe .env&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
aquí és on hi ha la informació de la connexió a la base de dades.&lt;br /&gt;
&lt;br /&gt;
Per arrencar el servidor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ php artisan serve&lt;br /&gt;
Laravel development server started: http://127.0.0.1:8000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I compte! El Laravel funciona amb el seu propi servidor web. Si tinc l'Apache tancat, també funciona.&lt;br /&gt;
&lt;br /&gt;
El primer fitxer important és el ''routes/web.php'', on hi ha la línia:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Route::get('/', function () {&lt;br /&gt;
    return view('welcome');&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
La vista ''welcome'' éstà a ''resources/welcome.blade.php'', i aquí puc veure tot el contingut de la pàgina de presentació de Laravel.&lt;br /&gt;
&lt;br /&gt;
Si afegeixo aquestes línies:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Route::get('/about', function () {&lt;br /&gt;
    echo &amp;quot;hola&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*http://localhost:8000/about&lt;br /&gt;
&lt;br /&gt;
Per tant, el web.php funciona com una llista de totes les pàgines que tinc en l'aplicació.&lt;br /&gt;
&lt;br /&gt;
==Controladors==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ php artisan make:controller HomeController&lt;br /&gt;
Controller created successfully.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El trobem a ''App/Http/Controllers/HomeController.php''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
namespace App\Http\Controllers;&lt;br /&gt;
&lt;br /&gt;
use Illuminate\Http\Request;&lt;br /&gt;
&lt;br /&gt;
class HomeController extends Controller&lt;br /&gt;
{&lt;br /&gt;
    //&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Defineixo la funció ''index'' que retorna la vista ''welcome'',&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class HomeController extends Controller&lt;br /&gt;
{&lt;br /&gt;
    public function index() {&lt;br /&gt;
    	return view('welcome');&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i ara, a ''web.php'', com a punt d'entrada posem:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Route::get('/','HomeController@index');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El resultat és el mateix, però estem visualitzant la portada a través d'un controlador.&lt;br /&gt;
&lt;br /&gt;
==Models (accés a bases de dades)==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ php artisan make:model Message&lt;br /&gt;
Model created successfully.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
El trobem a ''app/Message.php'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
namespace App;&lt;br /&gt;
&lt;br /&gt;
use Illuminate\Database\Eloquent\Model;&lt;br /&gt;
&lt;br /&gt;
class Message extends Model&lt;br /&gt;
{&lt;br /&gt;
    //&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Eloquent'' és el sistema que fa servir Laravel per accedir a les bases de dades. Si vull crear taules per guardar la informació dels missatges que crearé en la meva mini-aplicació, he de fer una ''migration'':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ php artisan make:migration create_messages_table&lt;br /&gt;
Created Migration: 2020_05_08_134106_create_messages_table&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aquesta migració la trobem a ''blog/database/migrations''. Tenim dues funcions: ''up()'' és per crear les taules; i ''down()'' és per esborrar les taules.&lt;br /&gt;
&lt;br /&gt;
En la funció ''up()'' definirem tots els camps de la taula. Queda de la següent manera:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    public function up()&lt;br /&gt;
    {&lt;br /&gt;
        Schema::create('messages', function (Blueprint $table) {&lt;br /&gt;
            $table-&amp;gt;increments('id');&lt;br /&gt;
            $table-&amp;gt;string('title');&lt;br /&gt;
            $table-&amp;gt;string('content');&lt;br /&gt;
            $table-&amp;gt;timestamps();&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ja podem fer el ''migrate'', i ja podem veure la taula en el mysql:&lt;br /&gt;
&lt;br /&gt;
Una coseta abans. Si vull connectar-me al mysql com a ''joan'' i no com a ''root'', primer hauré de fer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRANT ALL PRIVILEGES ON *.* TO 'joan'@'localhost' IDENTIFIED BY 'password';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i ara ja puc connectar-me:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
joan@joanHP:~$ mysql -u joan -p jbalmes&lt;br /&gt;
mysql&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Això és important perquè la comanda següent s'executa com a ''joan'' (recordar que llegeix les credencials per accedir a la base de dades de .env)&lt;br /&gt;
&lt;br /&gt;
Faig la migració:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ php artisan migrate&lt;br /&gt;
Migration table created successfully.&lt;br /&gt;
Migrating: 2014_10_12_000000_create_users_table&lt;br /&gt;
Migrated:  2014_10_12_000000_create_users_table (0.68 seconds)&lt;br /&gt;
Migrating: 2019_08_19_000000_create_failed_jobs_table&lt;br /&gt;
Migrated:  2019_08_19_000000_create_failed_jobs_table (1.26 seconds)&lt;br /&gt;
Migrating: 2020_05_08_134106_create_messages_table&lt;br /&gt;
Migrated:  2020_05_08_134106_create_messages_table (1.39 seconds)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ja tinc la taula creada:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; desc messages;&lt;br /&gt;
+------------+---------------------+------+-----+---------+----------------+&lt;br /&gt;
| Field      | Type                | Null | Key | Default | Extra          |&lt;br /&gt;
+------------+---------------------+------+-----+---------+----------------+&lt;br /&gt;
| id         | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |&lt;br /&gt;
| created_at | timestamp           | YES  |     | NULL    |                |&lt;br /&gt;
| updated_at | timestamp           | YES  |     | NULL    |                |&lt;br /&gt;
+------------+---------------------+------+-----+---------+----------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si vull eliminar les taules farem:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ php artisan migrate:reset&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Creo la vista ''master'' (script ''master.blade.php'') per mostrar els meus missatges&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;{{ str_replace('_', '-', app()-&amp;gt;getLocale()) }}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;title&amp;gt;@yield('title')&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- Fonts --&amp;gt;&lt;br /&gt;
        &amp;lt;link href=&amp;quot;https://fonts.googleapis.com/css?family=Nunito:200,600&amp;quot; rel=&amp;quot;stylesheet&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        @yield('content')&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i també la vista ''home'' (script ''home.blade.php'')&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@extends('master')&lt;br /&gt;
@section('title','Homepage')&lt;br /&gt;
@section('content')&lt;br /&gt;
	&amp;lt;h1&amp;gt;Content&amp;lt;/h1&amp;gt;&lt;br /&gt;
@endsection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i ara com a punt d'entrada (''HomeController.php'') retorno la vista ''home'' que acabo de crear, que tindrà per missió mostrar els missatges.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class HomeController extends Controller&lt;br /&gt;
{&lt;br /&gt;
    public function index() {&lt;br /&gt;
    	return view('home');&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Necessito un parell de dades:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; insert into messages(title,content,created_at) values('mis1', 'content mis 1',now());&lt;br /&gt;
mysql&amp;gt; insert into messages(title,content,created_at) values('mis2', 'content mis 2',now());&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i ara ja puc recuperar els missatges:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class HomeController extends Controller&lt;br /&gt;
{&lt;br /&gt;
    public function index() {&lt;br /&gt;
    	$messages = Message::all();&lt;br /&gt;
    	foreach ($messages as $message) {&lt;br /&gt;
    		echo $message-&amp;gt;title;&lt;br /&gt;
    	}die;&lt;br /&gt;
&lt;br /&gt;
    	return view('home');&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A la vista home li puc passar tots els missatges que retorna el controlador:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class HomeController extends Controller&lt;br /&gt;
{&lt;br /&gt;
    public function index() {&lt;br /&gt;
    	$messages = Message::all();&lt;br /&gt;
&lt;br /&gt;
    	return view('home', [&lt;br /&gt;
    		'messages' =&amp;gt; $messages&lt;br /&gt;
    	]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i la manera com els processa la vista ''home'' és:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@extends('master')&lt;br /&gt;
@section('title','Homepage')&lt;br /&gt;
@section('content')&lt;br /&gt;
	Recent messages:&lt;br /&gt;
	&amp;lt;ul&amp;gt;&lt;br /&gt;
		@foreach($messages as $message)&lt;br /&gt;
		&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;{{$message-&amp;gt;title}}&amp;lt;/strong&amp;gt;&lt;br /&gt;
			&amp;lt;br /&amp;gt;&lt;br /&gt;
			{{$message-&amp;gt;content}}&lt;br /&gt;
			&amp;lt;br /&amp;gt;&lt;br /&gt;
			&amp;lt;!-- {{ $message-&amp;gt;created_at-&amp;gt;format('d/m/Y') }} --&amp;gt;&lt;br /&gt;
			{{$message-&amp;gt;created_at-&amp;gt;diffForHumans()}}&lt;br /&gt;
		&amp;lt;/li&amp;gt;&lt;br /&gt;
		@endforeach&lt;br /&gt;
	&amp;lt;/ul&amp;gt;&lt;br /&gt;
@endsection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ara creem el formulari per introduir nous missatges:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;/create&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;...&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
creo un controlador per a processar els missatges&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ php artisan make:controller MessageController&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i creo una nova pàgina (ruta) on s'executarà el codi del controlador:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Route::post('/create','MessageController@create');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(fixem-nos que utilitza el mètode post)&lt;br /&gt;
&lt;br /&gt;
El tutorial s'acaba aconseguint que es creïn els missatges en el submit del formulari, i retorna a la pàgina principal (''/'') on es veu l'últim missatge creat.&lt;br /&gt;
&lt;br /&gt;
Finalment, es podem visualitzar els missatges amb la vista ''message/{id}'', i es crea un link per visualitzar aquesta vista.&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, maig 2020&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>