Como iniciar una aplicacion en Symfony

Lista de acciones desde la linea de comando

Siguelas y cambia las partes de username y demas para tu propio proyecto.

  • Crear el directorio del proyecto en public_html con
$ mkdir blog
  • Cambiarse al directorio del blog con: >
$ cd blog
  • Iniciar el proyecto con
symfony init-project blog
  • Crear el frontend
$symfony init-app frontend
  • Editar la base de datos con
vi config/schema.yml
  • Agregar la base de datos:
propel:
  weblog_post:
    _attributes: { phpName: Post }
    id:
    title:       varchar(255)
    excerpt:     longvarchar
    body:        longvarchar
    created_at:
  weblog_comment:
    _attributes: { phpName: Comment }
    id:
    post_id:
    author:      varchar(255)
    email:       varchar(255)
    body:        longvarchar
    created_at:
  • Configurar la base de datos para mysql >
$ vi config/database.yml
all:
   propel:
    class:          sfPropelDatabase
    param:
      dsn:          mysql://username:password@localhost/databasename
  • Checa el archivo de configuracion de config/propel.ini y edita tu usuario y contraseña
propel.database.createUrl  = mysql://username:password@localhost/
propel.database.url        = mysql://username:password@localhost/databasename
  • Generar el modelo con >
$ symfony propel-build-model
  • Generar el SQL con >
$ symfony propel-build-sql
  • Crear las tablas en mysql con >
$ symfony propel-insert-sql

Scaffolding

  • Crear el andamiaje del CRUD
$ symfony propel-generate-crud frontend post Post
$ symfony propel-generate-crud frontend comment Comment
$ symfony clear-cache

Acceder a la aplicacion

  • Cambia o mueve el archivo .htaccess que esta en el directorio blog/web
$ mv web/.htaccess web/.htaccess.bak
  • Apunta tu navegador a la direccion
http://localhost/~tuusername/blog/web
  • Deberá aparecer la aplicación media fea porque no están bien direccionadas algunas imágenes y archivos de estilo
  • Agrega al URL lo siguiente para acceder al CRUD de los posts
http://localhost/~turusername/blog/web/frontend_dev.php/post

Frontend Template

  • Cambiamos el front end.
$ vi apps/frontend/templates/layout.php
  • Busca donde dice <body> y sustituye por esto
<div id="container" style="width:600px;margin:0 auto;border:1px solid grey;padding:10px">
  <div id="navigation" style="display:inline;float:right">
    <ul>
      <li><?php echo link_to('Lista de posts', 'post/list') ?></li>
      <li><?php echo link_to('Lista de comentarios', 'comment/list') ?></li>
    </ul>
  </div>
  <div id="title">
    <h1><?php echo link_to('Mi primer proyecto en Symfony', '@homepage') ?></h1>
  </div>
  <div id="content" style="clear:right">
    <?php echo $sf_data->getRaw('sf_content') ?>
  </div>
</div>

Haciendo que se vea chida la página

  • Poner la liga simbolica siguiente (remplasen lyama po su username)
ln -s /usr/share/php/data/symfony/web/sf /home/lyama/public_html/blog/web/sf
  • Habilitar el archivo .htaccess en el directorio de nuestroa app (blog/web) con la siguiente modificacion
Options +FollowSymLinks +ExecCGI
<IfModule mod_rewrite.c>
  RewriteEngine On
  #
  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  RewriteBase /~lyama/blog/web/
  #
  # we skip all files with .something
  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteRule .* - [L]
  #
  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f
  #
  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
#
# big crash from our front web controller
ErrorDocument 500 "<h2>Application error</h2>symfony application failed to start properly"
  • Cambiar el titulo de la página. Modifica el archivo blog/apps/frontend/config/view.yml con lo siguiente:
$ vi apps/frontend/config/view.yml
  • Edita title: para poner el titulo de tu pagina
metas:
  title:        Mi Chidisimo Blog en Symfony
  robots:       index, follow
  description:  symfony project
  keywords:     symfony, project
  language:     en
  • Creando la pagina inicial. Hay que iniciar el modulo principal con lo siguiente:
$ symfony init-module frontend main
  • Cambiar la funcion de inicio en el archivo
$ vi apps/frontend/modules/main/actions/actions.class.php
  • Borrar la funcion executeIndex()
public function executeIndex() 
{
}
  • Edita el archivo apps/frontend/modules/main/templates/indexSuccess.php para poner un mensaje
<h1>Bienvenido al blog de Leonardo</h1>
<p>Eres el visitante numero <?php echo rand(1000,5000) ?> de este dia.</p>
  • Edita el archivo apps/frontend/config/routing.yml para que tenga lo siguiente:
homepage:
  url:   /
  param: { module: main, action: index }
  • No olvidar limpiar el cache
$ symfony cc

Agregando los comentario

  • Editamos la acción que ejecutara en post para que se agreguen los comentarios
$ vi apps/frontend/modules/post/actions/actions.class.php
  • Busca la funcion public function executeShow() para agregarle al final lo siguiente:
$c = new Criteria();
$c->add(CommentPeer::POST_ID, $this->getRequestParameter('id'));
$c->addAscendingOrderByColumn(CommentPeer::CREATED_AT);
$this->comments = CommentPeer::doSelect($c);
  • Agregamos en los templates lo sigueiente
$ vi apps/frontend/modules/post/templates/showSuccess.php
  • Generamos la entrada de comentarios en el archivo
$ vi apps/frontend/modules/post/templates/showSuccess.php
 ...
<?php use_helper('Text', 'Date') ?>
<hr />
<?php if ($comments) : ?>
 <p><?php echo count($comments) ?> comment<?php if (count($comments) > 1) : ?>s<?php endif; ?> to this post.</p>
<?php foreach ($comments as $comment): ?>
  <p><em>posted by <?php echo $comment->getAuthor() ?> on <?php echo format_date($comment->getCreatedAt()) ?></em></p>
    <div class="comment" style="margin-bottom:10px;">
      <?php echo simple_format_text($comment->getBody()) ?>
    </div>
  <?php endforeach; ?>
<?php endif; ?>
 
symfony_php_guia_inicial.txt · Última modificación: 2009/11/16 14:44 por Leonardo Yamasaki Maza
 
 
 
Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki