Vistes

Les vistes són la manera de presentar el resultat (una pantalla del nostre lloc web) de forma visual a l'usuari, el qual podrà interactuar amb ella i tornar a fer una petició.

Les vistes a més ens permeten separar tota la part de presentació de resultats de la lògica (controladors) i de la base de dades (models).

Per tant no hauran de realitzar cap tipus de consulta ni processament de dades, simplement rebran dades i els prepararan per a mostrar-los com HTML.

Definir vistas

Les vistes s'emmagatzemen a la carpeta resources/viewscom fitxers PHP, i per tant tindran l'extensió .php.

Contindran el codi HTML del nostre lloc web, barrejat amb els assets (CSS, imatges, Javascripts, etc., que estaran emmagatzemats a la carpeta public) i una mica de codi PHP (o codi Blade de plantilles, com veurem més endavant) per presentar les dades d'entrada com un resultat HTML.

A continuació s'inclou un exemple d'una vista simple que simplement mostrarà per pantalla ¡Hola <nom>!, on <nom> és una variable de PHP que la vista ha de rebre com a entrada per poder mostrar-la.

resources/views/home.php

<html>
    <head>
        <title>La meva web</title>
    </head>
    <body>
        <h1>¡Hola <?php echo $nom; ?>!</h1>
    </body>
</html>

Referenciar i retornar vistes

Un cop tenim una vista hem d'associar-la a una ruta per poder mostrar-la.

Per això hem d'anar al fitxer routes/web.php com hem vist abans i escriure el següent codi:

Route::get('/', function()
{
    return view('home', array('nom' => 'Javi'));
});

Estem definint que la vista es torni quan es faci una petició tipus GET a l'arrel del nostre lloc.

El valor retornat per la funció genera la vista usant el mètode view() i la retorna.
Aquesta funció rep com a paràmetres:

  • El nom de la vista (en aquest cas home), el qual serà un fitxer emmagatzemat a la carpeta views.
    • Recordeu que la vista anterior d'exemple l'havíem guardat en resources/views/home.php. Per indicar el nom de la vista s'utilitza el mateix nom del fitxer però sense l'extensió .php ni la ruta resources/view.
  • Com a segon paràmetre rep una matriu de dades que se li passaran a la vista.
    • En aquest cas la vista rebrà una variable anomenada $nom amb valor "Javi".

En l'exemple, per carregar la vista emmagatzemada en el fitxer home.php la referenciem mitjançant el nom home, sense la ruta resources/views.

Les vistes es poden organitzar en subcarpetes dins de la carpeta resources/views.

Per exemple podríem tenir una carpeta resources/views/user i dins d'aquesta totes les vistes relacionades, com per exemple login.php, register.php o profile.php.

Per referenciar les vistes que estan dins de subcarpetes hem d'utilitzar la notació tipus "dot", en què les barres que separen les carpetes es substitueixen per punts.

Per exemple, per fer referència a la vista resources/views/user/login.phpfaríem servir el nom user.login, o la vista resources/views/user/register.php la carregaríem de la forma:

Route::get('register', function()
{
    return view('user.register');
});

Passar dades a una vista

Per passar dades a una vista hem d'utilitzar el segon paràmetre del mètode view, el qual accepta un array associatiu.

En aquest array podem afegir totes les variables que vulguem utilitzar dins de la vista, ja siguin de tipus variable normal (cadena, sencer, etc.) o un altre array o objecte amb més dades.

Per exemple, per enviar a la vista profile totes les dades de l'usuari el qual té el id rebem a través de la ruta hauríem de fer:

Route::get('user/profile/{id}', function($id)
{
    $user = // Carregar les ades de l'usuari a partir de $id
    return view('user.profile', array('user' => $user));
});

Laravel més ofereix una alternativa que crea un notació una mica més clara.

En lloc de passar un array com a segon paràmetre podem utilitzar el mètode with per indicar una a una les variables o continguts que volem enviar a la vista:

$view = view('home')->with('nombre', 'Javi');

$view = view('user.profile')
            ->with('user', $user)
            ->with('editable', false);

Referències

  • Llibre Lavarel 5 (Antonio Javier Gallego): Vistas

#FpInfor #DawMp07 #DawMp07Uf3 #DawMp07Uf4 #Laravel #API

Autor: Sergi Coll

results matching ""

    No results matching ""