ccc

Silex: Instalación desde cero en NetBeans

a) Descargar de http://silex.sensiolabs.org/download el FAT y descomprimirlo.
b) Copiarlo en donde quieras el proyecto (ej: c:\wamp\www\silex_new)
c) En NetBean con el botón derecho apuntar al nombre del proyecto (silex_new) y darle a composer -> update no dev, y te hará toda la instalación (incluido el doctrine)

NOTA: Si una vez ya hecha la página queremos añadir un nuevo módulo que nos faltaba solo hay que modificar el fichero: composer.json añadiendo el módulo que queramos, por ejemplo:
 "symfony/translation": "~2.3",

Y darle a botón derecho -> composer -> update no dev, y te añade el nuevo módulo para que funcione (te lo añade a la carpeta Vendor por lo que habrá que volver a subir esa carpeta al servidor)

d) Crear una carpeta llamada views dentro de web.

e) Crear un .htaccess en la carpeta web:
<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    #RewriteBase /path/to/app
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
</IfModule>

f) Editar el index.php para empezar a añadir tus URL amigables:
$app = new Silex\Application();
$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/views',
));

$app->get('/', function () {
    return 'Bienvenido to the homepage';
})
->bind('homepage');
Para ejecutarlo: http://localhost:82/silex_new/web/

g) Ejemplo con una vista creada por ti, por eje,plo crear views/hola.twig:
hola mundo, bienvenido {{ nombre }}

Y en el index el controller sería:
$app->get('/hola/{nombre}', function ($nombre) use ($app) {
    return $app['twig']->render('hola.twig', array(
        'nombre' => $nombre,
    ));
})
->bind('hola');
Para ejecutarlo: http://localhost:82/silex_new/web/hola/Pepe

h) Crear barra de navegación para una web:
crear menu.twig:
<head>
    <link rel="stylesheet" type="text/css" href="{{ app.request.basepath }}/css/estilo.css">
</head>

{% set route = app.request.attributes.get('_route') %}
<ul>
    <li><a {% if route == 'inicio'%} class="active" {%endif%} href="{{ path('inicio') }}">Inicio</a></li>
    <li><a {% if route == 'hola'%} class="active" {%endif%} href="{{ path('hola', {nombre: 'Leandro'}) }}">Hola mundo</a></li>
</ul>

En el index:
$app->get('/', function () use ($app) {
   // return 'Bienvenido, estás en la página principal de esta página. Disfrútala';
   return $app['twig']->render('inicio.twig');
})
->bind('inicio');

$app->get('/hola/{nombre}', function ($nombre) use ($app) {
    return $app['twig']->render('hola.twig', array(
        'nombre' => $nombre
    ));
})
->bind('hola');

estilo.css se guarda en la carpeta web:
li { display:inline-block; }
.active { font-weight:bold; color:red; }

No hay comentarios:

Publicar un comentario