Deprecated: Creation of dynamic property Modulo::$string is deprecated in E:\webspace\borjaabad.com\www\application\Modulo.php on line 123

Deprecated: Creation of dynamic property Modulo::$string is deprecated in E:\webspace\borjaabad.com\www\application\Modulo.php on line 123

Deprecated: Creation of dynamic property Modulo::$buffer is deprecated in E:\webspace\borjaabad.com\www\application\Pagina.php on line 45

Deprecated: Creation of dynamic property Modulo::$buffer is deprecated in E:\webspace\borjaabad.com\www\application\Pagina.php on line 45
TITULO

Deprecated: Creation of dynamic property View::$seccion is deprecated in E:\webspace\borjaabad.com\www\modules\secciones\controllers\htmlController.php on line 39

CAPÍTULO IV




Deprecated: Creation of dynamic property View::$_noticia is deprecated in E:\webspace\borjaabad.com\www\modules\noticias\controllers\indexController.php on line 23
Creación del componente noticias

Este nuevo componente se realizará sobre la estructura básica del framework, que ya incluye un login, sistema de mensajes (alertify), gestión de media (js y css), ayuda en formularios, gestor de menú, etc. Le permitirá agregar, editar y eliminar noticias en el sistema.

Este nuevo componente se realizará sobre la estructura básica del framework, que ya incluye un login, sistema de mensajes (alertify), gestión de media (js y css), ayuda en formularios, gestor de menú, etc. Le permitirá agregar, editar y eliminar noticias en el sistema.

Lo primero será agregar nuestro componente en el archivo components.xml para que el framework conozca lo necesario acerca del mismo:


<component>

      <name>noticias</name>

      <displayName>Noticias</displayName>

      <menu>true</menu>

      <menus>

          <menuItem>

             <name>main</name>

             <path>noticias/views/common/menu_main.phtml</path>

            <default>true</default>

           </menuItem>

       </menus>

      <sqlprefix>not_</sqlprefix>

      <enabled>true</enabled>

</component>                                   



El nombre se usará para referirnos a él en el código y como identificador único. La opción menú, sirve para mostrar en el menú principal de la aplicación.

En la opción menuItem, podremos poner los menus que deseemos que use nuestro componente, y luego podrán ser definidos desde el controlador, solo deberemos setear la constante MENU con el nombre del menú que queramos cargar.


Archivos básicos:

Controllers

Models

Views

Tables

index

noticia

listadonoticias

noticias

firmante

seccion (extern)

editor

firmantes

firmante

listadofirmantes

menu_componente



Analicemos como va quedando el contenido del controlador principal de nuestro componente noticias:



class indexController extends Controller{

      

      public function __construct(){

              parent::__construct();

              Session::control();

      }


      //noticias/

      public function index(){

              $this->_view->renderizar('listado',true);

      }

      //noticias/nueva

      public function nueva(){      

              $firmante = $this->loadModel('firmante');

              $seccion = $this->loadModelFromOtherComponent('seccion','secciones');

              

              $this->_view->_secciones = $seccion->getSecciones();

              $this->_view->_firmantes = $firmante->getFirmantes();

              $this->_view->renderizar('nueva',true);

      }

}



Vemos cómo ejerce el sesión de control en el constructor. Si lo supera el método por defecto es index(), el cual llama a la vista listado.


El método nueva() ya es más interesante, vemos como carga los firmantes, los cuáles son un modelo del propio componente, y cómo también puede cargar modelos de otros componentes, como es el caso del componente sección. Aquí vemos pues una clara relación entre componentes.

Vemos un ejemplo de firmanteModel.php:


class firmanteModel extends Model{

      public $id;

      public $nombre;

      public $email;


      public function __construct(){

              parent::__construct();

              $this->cargaBD();

      }

      public function getFirmantes() {

              try {

                 $firmantes = $this->_db->query("SELECT * FROM firmantes") or  die(mysql_error().mysql_errno());

                     return $firmantes->fetchAll();

              }

              catch (PDOException $e) {

                     echo $e->getMessage();

                     return false;

              }

      }

}


      

Como resultado se llama a la vista, como por ejemplo nueva:


<form method="post" action="<?php echo BASE_URL.'noticias/nueva'; ?>">

<table>

      <tr>

      <td>

              <?php Form::select($this->_firmantes,'id','nombre','Firmantes'); ?>

      </td>

      <td>

              <?php Form::select($this->_secciones,'id','seccion','Secciones'); ?>

      </td>

      <td>Orden      

              <input type="text" name="orden"  size="5"  maxlength="9"/>

      </td>

      <td></td>

      <td>

              <?php Form::button('Guardar noticia','positive','add'); ?>

              <?php Form::button('Ampliar noticia','regular','blue'); ?>

              <?php Form::button('Eliminar noticia','negative','delete'); ?>

      </td>

      </tr>

      </table>

      <h2>Título</h2>       

              <textarea rows="1"  name="texto"></textarea>

      <h2>Subtítulo</h2>

              <textarea rows="1"  name="subtitulo"></textarea>  

      <h2>Entradilla</h2>

              <textarea rows="4"  name="entradilla"></textarea>

      <h2>Texto</h2>

              <textarea rows="15"  name="texto"></textarea>

</form>



Vemos alguna otra función del framework, como la que proporciona la clase Form que nos ayuda a pintar elementos de formulario asociados a fuente de datos, como en el caso de los select, o no, como en el caso de los botones que simplemente agrega una imagen y estilo a los botones.







Cabecera CMSUM

Deprecated: closedir(): Passing null is deprecated, instead the last opened directory stream should be provided in E:\webspace\borjaabad.com\www\application\Cache.php on line 81