src/Application/Controller/BasedatosController.php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\Adapter\Adapter;
use Zend\Db\Sql\Sql;
use Application\Model\Entity\Usuarios;
class BasedatosController extends AbstractActionController {
public $dbAdapter;
public function indexAction() {
return new ViewModel();
}
// ***************************
public function mostrarAction() {
$this->dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$valores = array
(
"titulo" => "Mostrando datos desde TableGateway",
'datos' => $u->getUsuarios()
);
return new ViewModel($valores);
}
// ***************************
public function verAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$id = (int) $this->params()->fromRoute('id', 0); // sacar el id por la url GET
$valores = array(
"titulo" => "Mostrando detalle del usuario",
'datos' => $u->getUsuarioPorId($id)
);
return new ViewModel($valores);
}
// ***********************************
public function addAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$data = array(
"nombre" => "usernuevo",
"email" => "usernuesssvo@gmail.com"
);
$u->addUsuario($data);
// $u->updateUsuario("3",$data);
//
// una vez hecho mostrar todos los registros de nuevo
$valores = array(
"titulo" => "Insertando uno nuevo",
"datos" => $u->getUsuarios()
);
return new ViewModel($valores);
}
// ***********************************
public function updateAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$data = array(
"nombre" => "usermodificado",
"email" => "usermodificado@gmail.com"
);
$u->updateUsuario("4",$data);
// una vez hecho mostrar todos los registros de nuevo
$valores = array(
"titulo" => "Modificando un registro",
"datos" => $u->getUsuarios()
);
return new ViewModel($valores);
}
// ***********************************
public function deleteAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$u = new Usuarios($this->dbAdapter);
$data = array(
"nombre" => "usermodificado",
"email" => "usermodificado@gmail.com"
);
$u->deleteUsuario("4", $data);
// una vez hecho mostrar todos los registros de nuevo
$valores = array(
"titulo" => "Borrando un registro",
"datos" => $u->getUsuarios()
);
return new ViewModel($valores);
}
}
-------------------------------------------------------------------------------
src/Application/Model/Entity/Usuarios.php
namespace Application\Model\Entity;
use Zend\Db\TableGateway\TableGateway;
use Zend\Db\Adapter\Adapter;
class Usuarios extends TableGateway {
public function __construct(Adapter $adapter = null, $databaseSchema = null, ResultSet $selectResultPrototype = null) {
return parent::__construct('usuarios', $adapter, $databaseSchema, $selectResultPrototype);
}
public function getUsuarios() {
$datos = $this->select();
return $datos->toArray();
}
public function getUsuarioPorId($id) {
$id = (int) $id;
$registro = $this->select(array('id' => $id));
$row = $registro->current();
if (!$row) {
throw new \Exception("No hay registros asociados al valor $id");
}
return $row;
}
public function addUsuario($data=array()) {
$this->insert($data);
}
public function updateUsuario($id, $data=array()) {
$this->update($data, array('id' => $id));
}
public function deleteUsuario($id) {
$this->delete(array('id' => $id));
}
}
---------------------------------------------------------------------
view/Application/basedatos/mostrar.phtml
<h1><?php echo $this->titulo?></h1>
<table style="width:400px; text-align:left">
<tr>
<th>Id</th>
<th>Nombre</th>
<th>E-Mail</th>
</tr>
<?php foreach ($this->datos as $dato){ ?>
<tr style="background-color:<?php echo $this->cycle(array("#F0F0F0","#FFFFFF"))->next()?>">
<td><?php echo $dato["id"] ?></td>
<td><?php echo $dato["nombre"] ?></td>
<td><?php echo $dato["email"] ?></td>
<td>
<a href="<?php echo $this->basePath() ?>/application/basedatos/ver/<?php echo $dato["id"]?>">ver</a>
</td>
</tr>
<?php } ?>
<?php
$this->cycle()->assign(array("#F0F0F0", "#FFFFFF"));
$this->cycle()->prev();
?>
</table>
Las vistas de add.phtml, delete.phtml y update.phtml serán idénticas a las de mostrar.phtml
------------------------------------------------------
Para verlo:
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/mostrar
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/add
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/update
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/delete
Mostrando entradas con la etiqueta Zend Framework. Mostrar todas las entradas
Mostrando entradas con la etiqueta Zend Framework. Mostrar todas las entradas
Zend Framework: Base de datos
config/autoload/local.php
return array
(
'service_manager'=>array(
'factories'=>array(
'Zend\Db\Adapter'=>'Zend\Db\Adapter\AdapterServiceFactory',
),
),
'db'=>array(
'username'=>'root',
'password'=>'',
'driver'=>'Pdo',
'dsn'=>'mysql:dbname=pruebazend;host:localhost',
'driver_options'=>array(
PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES \'utf8\''
),
),
);
---------------------------------------------------------------------------------------------------------
Creamos un nuevo controlador:
src/Application/Controler/BasedatosController.php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\Adapter\Adapter;
use Zend\Db\Sql\Sql;
class BasedatosController extends AbstractActionController {
public $dbAdapter;
public function indexAction() {
return new ViewModel();
}
// ***************************
public function resultAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$sql = "select * from tablazend order by id desc";
$result = $this->dbAdapter->query($sql, Adapter::QUERY_MODE_EXECUTE);
$datos = $result->toArray(); // toArray para q lo muestre más formateado
return(new ViewModel(
array(
"titulo"=> "Mi primera conexión zend a base datos usando result",
"datos" => $datos
)
));
}
// ***************************
public function sqlAction() { // Otra forma: lo mismo que el otro pero con SQL
$this->dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter');
$sql = new Sql($this->dbAdapter);
$select = $sql->select()
->from('tablazend')
->where(array('id'=>'2'))
->order('id desc');
$selectString = $sql->getSqlStringForSqlObject($select);
// echo $selectString;
$result = $this->dbAdapter->query($selectString, Adapter::QUERY_MODE_EXECUTE);
$datos = $result->toArray();
return(new ViewModel(
array(
"titulo"=> "Mi primera conexión zend a base datos usando SQL",
"datos" => $datos
)
));
}
}
--------------------------------------------------------------
Añadir el nuevo controlador a:
application/config/module.config.php:
....
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController',
'Application\Controller\Formulario' => 'Application\Controller\FormularioController',
'Application\Controller\Basedatos' => 'Application\Controller\BasedatosController'
),
),
....
---------------------------------------------------------
Ahora las vistas para esos dos métodos:
view/application/basedatos/result.phtml
<h1><?php echo $this->titulo;?></h1>
<?php
foreach ($this->datos as $registro) {
echo "Id:".$registro["id"]."<br>";
echo "Nombre:".$registro["nombre"]."<br>";
echo "Email:".$registro["email"]."<hr>";
}
?>
view/application/basedatos/sql.phtml
<h1><?php echo $this->titulo;?></h1>
<?php
foreach ($this->datos as $registro) {
echo "Id:".$registro["id"]."<br>";
echo "Nombre:".$registro["nombre"]."<br>";
echo "Email:".$registro["email"]."<hr>";
}
?>
-------------------------------------------------
Para verlo:
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/sql
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/result
return array
(
'service_manager'=>array(
'factories'=>array(
'Zend\Db\Adapter'=>'Zend\Db\Adapter\AdapterServiceFactory',
),
),
'db'=>array(
'username'=>'root',
'password'=>'',
'driver'=>'Pdo',
'dsn'=>'mysql:dbname=pruebazend;host:localhost',
'driver_options'=>array(
PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES \'utf8\''
),
),
);
---------------------------------------------------------------------------------------------------------
Creamos un nuevo controlador:
src/Application/Controler/BasedatosController.php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\Adapter\Adapter;
use Zend\Db\Sql\Sql;
class BasedatosController extends AbstractActionController {
public $dbAdapter;
public function indexAction() {
return new ViewModel();
}
// ***************************
public function resultAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$sql = "select * from tablazend order by id desc";
$result = $this->dbAdapter->query($sql, Adapter::QUERY_MODE_EXECUTE);
$datos = $result->toArray(); // toArray para q lo muestre más formateado
return(new ViewModel(
array(
"titulo"=> "Mi primera conexión zend a base datos usando result",
"datos" => $datos
)
));
}
// ***************************
public function sqlAction() { // Otra forma: lo mismo que el otro pero con SQL
$this->dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter');
$sql = new Sql($this->dbAdapter);
$select = $sql->select()
->from('tablazend')
->where(array('id'=>'2'))
->order('id desc');
$selectString = $sql->getSqlStringForSqlObject($select);
// echo $selectString;
$result = $this->dbAdapter->query($selectString, Adapter::QUERY_MODE_EXECUTE);
$datos = $result->toArray();
return(new ViewModel(
array(
"titulo"=> "Mi primera conexión zend a base datos usando SQL",
"datos" => $datos
)
));
}
}
--------------------------------------------------------------
Añadir el nuevo controlador a:
application/config/module.config.php:
....
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController',
'Application\Controller\Formulario' => 'Application\Controller\FormularioController',
'Application\Controller\Basedatos' => 'Application\Controller\BasedatosController'
),
),
....
---------------------------------------------------------
Ahora las vistas para esos dos métodos:
view/application/basedatos/result.phtml
<h1><?php echo $this->titulo;?></h1>
<?php
foreach ($this->datos as $registro) {
echo "Id:".$registro["id"]."<br>";
echo "Nombre:".$registro["nombre"]."<br>";
echo "Email:".$registro["email"]."<hr>";
}
?>
view/application/basedatos/sql.phtml
<h1><?php echo $this->titulo;?></h1>
<?php
foreach ($this->datos as $registro) {
echo "Id:".$registro["id"]."<br>";
echo "Nombre:".$registro["nombre"]."<br>";
echo "Email:".$registro["email"]."<hr>";
}
?>
-------------------------------------------------
Para verlo:
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/sql
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/result
Zend Framework: Formularios
FormularioController.php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Application\Form\Formularios;
use Application\Model\Entity\Procesa;
class FormularioController extends AbstractActionController {
public function indexAction()
{
return new ViewModel();
}
public function formularioAction() {
$form = new Formularios("form");
return new ViewModel(
array(
"titulo"=>"Formularios en ZF2",
"form"=>$form,
"url"=>$this->getRequest()->getBaseUrl()
)
);
}
public function recibeAction() {
$data = $this->request->getPost();
$procesa = new Procesa($data);
$datos = $procesa->getData();
return new ViewModel(
array(
"datos"=>$datos
)
);
}
}
module\Application\src\Application\Form\Formularios.php:
namespace Application\Form;
use Zend\Captcha\AdapterInterface as CaptchaAdapter;
use Zend\Form\Element;
use Zend\Form\Form;
use Zend\Captcha;
use Zend\Form\Factory;
class Formularios extends Form {
public function __construct($name = null) {
parent::__construct($name);
$factory = new Factory();
$nombre = $factory->createElement(array(
'type' => 'Zend\Form\Element\Text',
'name' => 'nombre',
'options' => array(
'label' => 'Escribe tu nombre completo:',
),
'attributes' => array(
'class' => 'classLSG'
),
));
$this->add($nombre);
$email = $factory->createElement(array(
'type' => 'Zend\Form\Element\Email',
'name' => 'email',
'options' => array(
'label' => 'Correo',
),
'attributes' => array(
'class' => 'classLSG'
),
));
$this->add($email);
$this->add(array(
'name' => 'send',
'attributes' => array(
'type' => 'submit',
'value' => 'Enviar',
'title' => 'Enviar'
),
));
}
}
module\Application\src\Application\Model\Entity\Procesa.php:
namespace Application\Model\Entity;
class Procesa {
private $nombre;
private $correo;
public function __construct($datos=array()) {
$this->nombre = $datos["nombre"];
$this->correo = $datos["email"];
}
public function getData() {
$array = array(
"nombre" => $this->nombre,
"email" => $this->correo
);
return $array;
}
}
module\Application\view\application\formulario\fomulario.phtml:
<h1><?php echo $this->titulo?></h1>
<?php
$form = $this->form;
$form->prepare();
$form->setAttributes(array(
'action' => $this->url.'/application/formulario/recibe',
'method' => 'post'
));
$formLabel = $this->plugin('formLabel');
echo $this->form()->openTag($form);
?>
<div class="form_element">
<?php
$nombre = $form->get('nombre');
echo $formLabel->openTag().$nombre->getOption('label')." ";
echo $this->formInput($nombre);
echo $formLabel->closeTag();
?>
</div>
<div class="form_element">
<?php
$email = $form->get('email');
echo $formLabel->openTag().$email->getOption('label')." ";
echo $this->formInput($email);
echo $formLabel->closeTag();
?>
</div>
<?php
echo $this->formElement($form->get('send'));
echo $this->form()->closeTag();
?>
module\Application\view\application\formulario\recibe.phtml:
<h1>Recibo los datos</h1>
<ul>
<li>Nombre : <?php echo $this->datos["nombre"]?></li>
<li>E-Mail : <?php echo $this->datos["email"]?></li>
</ul>
Para ejecutarlo:
http://localhost/zend/zendproyecto8LSG/public/application/formulario/formulario
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Application\Form\Formularios;
use Application\Model\Entity\Procesa;
class FormularioController extends AbstractActionController {
public function indexAction()
{
return new ViewModel();
}
public function formularioAction() {
$form = new Formularios("form");
return new ViewModel(
array(
"titulo"=>"Formularios en ZF2",
"form"=>$form,
"url"=>$this->getRequest()->getBaseUrl()
)
);
}
public function recibeAction() {
$data = $this->request->getPost();
$procesa = new Procesa($data);
$datos = $procesa->getData();
return new ViewModel(
array(
"datos"=>$datos
)
);
}
}
module\Application\src\Application\Form\Formularios.php:
namespace Application\Form;
use Zend\Captcha\AdapterInterface as CaptchaAdapter;
use Zend\Form\Element;
use Zend\Form\Form;
use Zend\Captcha;
use Zend\Form\Factory;
class Formularios extends Form {
public function __construct($name = null) {
parent::__construct($name);
$factory = new Factory();
$nombre = $factory->createElement(array(
'type' => 'Zend\Form\Element\Text',
'name' => 'nombre',
'options' => array(
'label' => 'Escribe tu nombre completo:',
),
'attributes' => array(
'class' => 'classLSG'
),
));
$this->add($nombre);
$email = $factory->createElement(array(
'type' => 'Zend\Form\Element\Email',
'name' => 'email',
'options' => array(
'label' => 'Correo',
),
'attributes' => array(
'class' => 'classLSG'
),
));
$this->add($email);
$this->add(array(
'name' => 'send',
'attributes' => array(
'type' => 'submit',
'value' => 'Enviar',
'title' => 'Enviar'
),
));
}
}
module\Application\src\Application\Model\Entity\Procesa.php:
namespace Application\Model\Entity;
class Procesa {
private $nombre;
private $correo;
public function __construct($datos=array()) {
$this->nombre = $datos["nombre"];
$this->correo = $datos["email"];
}
public function getData() {
$array = array(
"nombre" => $this->nombre,
"email" => $this->correo
);
return $array;
}
}
module\Application\view\application\formulario\fomulario.phtml:
<h1><?php echo $this->titulo?></h1>
<?php
$form = $this->form;
$form->prepare();
$form->setAttributes(array(
'action' => $this->url.'/application/formulario/recibe',
'method' => 'post'
));
$formLabel = $this->plugin('formLabel');
echo $this->form()->openTag($form);
?>
<div class="form_element">
<?php
$nombre = $form->get('nombre');
echo $formLabel->openTag().$nombre->getOption('label')." ";
echo $this->formInput($nombre);
echo $formLabel->closeTag();
?>
</div>
<div class="form_element">
<?php
$email = $form->get('email');
echo $formLabel->openTag().$email->getOption('label')." ";
echo $this->formInput($email);
echo $formLabel->closeTag();
?>
</div>
<?php
echo $this->formElement($form->get('send'));
echo $this->form()->closeTag();
?>
module\Application\view\application\formulario\recibe.phtml:
<h1>Recibo los datos</h1>
<ul>
<li>Nombre : <?php echo $this->datos["nombre"]?></li>
<li>E-Mail : <?php echo $this->datos["email"]?></li>
</ul>
Para ejecutarlo:
http://localhost/zend/zendproyecto8LSG/public/application/formulario/formulario
Zend Framework: Paso parámetros entre Modelo->Controlador->Vista
En module\Application\src\Application\Model\Entity crear un fichero Modelo1.php:
namespace Application\Model\Entity;
class Modelo1 {
private $idCliente;
private $texto;
private $numeros;
public function __construct($idCliente) {
$this->idCliente = $idCliente;
$this->texto = "Enviando datos desde mi propio modelo";
$this->numeros = array();
}
public function getTexto() {
return($this->texto);
}
private function cargarNumeros() {
$this->numeros = array("123", "234", "345");
}
public function getArray() {
self::cargarNumeros();
return($this->numeros);
}
public function getIdCliente() {
return($this->idCliente);
}
}
--------------------------------------------------
En \module\Application\src\Application\Controller\indexController.php añadimos:
use Application\Model\Entity\Modelo1;
y una nueva función:
public function cargarmodeloAction() {
$modeloAux = new Modelo1("999");
$idCliente = $modeloAux->getIdCliente();
$texto = $modeloAux->getTexto();
$numeros = $modeloAux->getArray();
return new ViewModel(
array(
"idCliente"=>$idCliente,
"texto"=>$texto,
"numeros"=>$numeros
)
);
}
--------------------------------------------------
Y finalmente en \module\Application\view\application\index crear fichero cargarmodelo.phtml:
<h1>Hola de cargarmodelo.phtml</h1>
<h3>IdCliente: <?php echo $this->idCliente;?></h3>
<h3>Valor enviado desde modelo: <?php echo $this->texto;?></h3>
<h3>Números:<br> <?php
foreach ($this->numeros as $key=>$valor) {
echo $valor."<br>";
}
?>
</h3>
-----------------------------------------------------
Para ejecutarlo:
http://localhost/proyectozend/public/application/index/cargarmodelo
namespace Application\Model\Entity;
class Modelo1 {
private $idCliente;
private $texto;
private $numeros;
public function __construct($idCliente) {
$this->idCliente = $idCliente;
$this->texto = "Enviando datos desde mi propio modelo";
$this->numeros = array();
}
public function getTexto() {
return($this->texto);
}
private function cargarNumeros() {
$this->numeros = array("123", "234", "345");
}
public function getArray() {
self::cargarNumeros();
return($this->numeros);
}
public function getIdCliente() {
return($this->idCliente);
}
}
--------------------------------------------------
En \module\Application\src\Application\Controller\indexController.php añadimos:
use Application\Model\Entity\Modelo1;
y una nueva función:
public function cargarmodeloAction() {
$modeloAux = new Modelo1("999");
$idCliente = $modeloAux->getIdCliente();
$texto = $modeloAux->getTexto();
$numeros = $modeloAux->getArray();
return new ViewModel(
array(
"idCliente"=>$idCliente,
"texto"=>$texto,
"numeros"=>$numeros
)
);
}
--------------------------------------------------
Y finalmente en \module\Application\view\application\index crear fichero cargarmodelo.phtml:
<h1>Hola de cargarmodelo.phtml</h1>
<h3>IdCliente: <?php echo $this->idCliente;?></h3>
<h3>Valor enviado desde modelo: <?php echo $this->texto;?></h3>
<h3>Números:<br> <?php
foreach ($this->numeros as $key=>$valor) {
echo $valor."<br>";
}
?>
</h3>
-----------------------------------------------------
Para ejecutarlo:
http://localhost/proyectozend/public/application/index/cargarmodelo
Zend Framework: Crear un nuevo módulo
En config/application.config.php:
'modules' => array(
'Application',
'Modnuevo'
),
Ir a /module y duplicar la carpeta Application, a la nueva carpeta llamarla Modnuevo
module\Modnuevo
namespace Modnuevo;
Modnuevo/config/module.config.php:
'invokables'=>array(
'Modnuevo\Controller\Modnuevo'=>'Modnuevo\Controller\ModnuevoController'
...
'routes'=>array(
'modnuevo'=>array(
'type'=>'Segment',
'options'=>array(
'route' => '/modnuevo[/[:action]]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'Modnuevo\Controller\Modnuevo',
'action' => 'index'
),
),
),
),
...
'template_map' => array(
'modnuevo/index/index' => __DIR__ . '/../view/modnuevo/index/index.phtml',
module/Modnuevo/src/Modnuevo/Controller/ModnuevoController.php:
namespace Modnuevo\Controller;
...
class ModnuevoController extends...
module\Modnuevo\view\modnuevo\modnuevo\index.phtml
<h1>Mi primer modulo creado por mi</h1>
module\Leandro\view\layout\layout.phtml
<?php echo $this->doctype(); ?>
<html lang="es_ES">
<head>
<?php echo$this->headMeta()->setCharset('utf8')?>
<?php echo $this->headTitle($this->valor)?>
<?php echo $this->headLink()->prependStylesheet($this->basePath().'/css/estiloLSG.css')?>
<?php echo $this->headStyle()?>
<?php echo $this->headScript()->prependFile($this->basePath().'/js/jquery.min.js')?>
</head>
<body>
<div class="header">aa</div>
<div class="content"><?php echo $this->content?></div>
<div class="footer">footer</div>
<?php echo $this->inlineScript() ?>
</body>
</html>
'modules' => array(
'Application',
'Modnuevo'
),
Ir a /module y duplicar la carpeta Application, a la nueva carpeta llamarla Modnuevo
module\Modnuevo
namespace Modnuevo;
Modnuevo/config/module.config.php:
'invokables'=>array(
'Modnuevo\Controller\Modnuevo'=>'Modnuevo\Controller\ModnuevoController'
...
'routes'=>array(
'modnuevo'=>array(
'type'=>'Segment',
'options'=>array(
'route' => '/modnuevo[/[:action]]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'Modnuevo\Controller\Modnuevo',
'action' => 'index'
),
),
),
),
...
'template_map' => array(
'modnuevo/index/index' => __DIR__ . '/../view/modnuevo/index/index.phtml',
module/Modnuevo/src/Modnuevo/Controller/ModnuevoController.php:
namespace Modnuevo\Controller;
...
class ModnuevoController extends...
module\Modnuevo\view\modnuevo\modnuevo\index.phtml
<h1>Mi primer modulo creado por mi</h1>
module\Leandro\view\layout\layout.phtml
<?php echo $this->doctype(); ?>
<html lang="es_ES">
<head>
<?php echo$this->headMeta()->setCharset('utf8')?>
<?php echo $this->headTitle($this->valor)?>
<?php echo $this->headLink()->prependStylesheet($this->basePath().'/css/estiloLSG.css')?>
<?php echo $this->headStyle()?>
<?php echo $this->headScript()->prependFile($this->basePath().'/js/jquery.min.js')?>
</head>
<body>
<div class="header">aa</div>
<div class="content"><?php echo $this->content?></div>
<div class="footer">footer</div>
<?php echo $this->inlineScript() ?>
</body>
</html>
Zend Framework: Layouts
Guardar nuestro propio código:
en /public/css nuestras hojas de estilo
en /public/js nuestros js
----------------------------------------------------------------
Creamos un controlador nuevo:
class TrabajoController extends AbstractActionController {
public function indexAction() {
$view = new ViewModel();
$this->layout()->titulo = "Titulo LSG";
$this->layout()->saludo = "saludo enviado desde el controlador";
$this->layout('layout/trabajo'); // La vista que queremos que cargue
return $view;
}
}
------------------------------------------------------------------
Siempre que se cree un nuevo controlador hay que añadirlo en \module\Application\config\module.config.php
'Application\Controller\Trabajo' => 'Application\Controller\TrabajoController'
----------------------------------------------------
Se crea nuestro html en \view\application\trabajo\index.phtml:
<h1>Este será el contenido principal de esta vista de zendproyecto4 de LSG</h1>
---------------------------------------------------
En module/Application/view/layout/trabajo.phtml:
<?php echo $this->doctype(); ?>
<html lang="es_ES">
<head>
<?php echo $this->headMeta()->setCharset('utf8')?>
<?php echo $this->headTitle($this->titulo)?>
<?php echo $this->headMeta()->appendName('keywords', 'framework, PHP, productivity');?>
<?php echo $this->headMeta()->setProperty('og:title', 'my article title');?>
<?php echo $this->headMeta()->setProperty('og:type', 'article');?>
<?php echo $this->headLink()->prependStylesheet($this->basePath().'/css/estiloLSG.css')?>
<?php echo $this->headStyle()?>
<?php echo $this->headScript()->prependFile($this->basePath().'/js/jquery.min.js')?>
</head>
<body>
<div class="header">Encabezado</div>
<div class="content">
<h1>Saludo : <?php echo $this->saludo?></h1>
<?php
// this->content muestra lo que haya en nuestro HTML creado en \view\application\trabajo\index.phtml
echo $this->content;
?>
</div>
<div class="footer">footer</div>
<?php echo $this->inlineScript() ?>
</body>
</html>
------------------------------------------------------
en /public/css nuestras hojas de estilo
en /public/js nuestros js
----------------------------------------------------------------
Creamos un controlador nuevo:
class TrabajoController extends AbstractActionController {
public function indexAction() {
$view = new ViewModel();
$this->layout()->titulo = "Titulo LSG";
$this->layout()->saludo = "saludo enviado desde el controlador";
$this->layout('layout/trabajo'); // La vista que queremos que cargue
return $view;
}
}
------------------------------------------------------------------
Siempre que se cree un nuevo controlador hay que añadirlo en \module\Application\config\module.config.php
'Application\Controller\Trabajo' => 'Application\Controller\TrabajoController'
----------------------------------------------------
Se crea nuestro html en \view\application\trabajo\index.phtml:
<h1>Este será el contenido principal de esta vista de zendproyecto4 de LSG</h1>
---------------------------------------------------
En module/Application/view/layout/trabajo.phtml:
<?php echo $this->doctype(); ?>
<html lang="es_ES">
<head>
<?php echo $this->headMeta()->setCharset('utf8')?>
<?php echo $this->headTitle($this->titulo)?>
<?php echo $this->headMeta()->appendName('keywords', 'framework, PHP, productivity');?>
<?php echo $this->headMeta()->setProperty('og:title', 'my article title');?>
<?php echo $this->headMeta()->setProperty('og:type', 'article');?>
<?php echo $this->headLink()->prependStylesheet($this->basePath().'/css/estiloLSG.css')?>
<?php echo $this->headStyle()?>
<?php echo $this->headScript()->prependFile($this->basePath().'/js/jquery.min.js')?>
</head>
<body>
<div class="header">Encabezado</div>
<div class="content">
<h1>Saludo : <?php echo $this->saludo?></h1>
<?php
// this->content muestra lo que haya en nuestro HTML creado en \view\application\trabajo\index.phtml
echo $this->content;
?>
</div>
<div class="footer">footer</div>
<?php echo $this->inlineScript() ?>
</body>
</html>
------------------------------------------------------
Zend Framework
Lo primero descargarse la última versión full disponible de: http://framework.zend.com/downloads/latest Por ejemplo la Zend Framework 1.12.7 Full Descomprimir el Zip en wamp/www Ahora cambiar las variables del entorno para poder ejecutar proyectos desde cualquier sitio: En el caso de Windows 7: Equipo (bton derecho) -> Propiedades -> Configuración Avanzada del sistema -> Opciones avanzadas -> Variables de Entorno Añadir a PATH (o crearla si no existe): D:\wamp\bin\php\php5.4.3;D:\wamp\www\zend1_127\bin; Así ya podemos desde cualquier parte de la consola del sistema ejecutar las instrucciones de Zend para crear proyectos, como por ejemplo: zf show versión Más información en: http://aprendiendophp5.blogspot.com.es/2012/01/zendframework-0.html
OTRA FORMA: a) Descargar de: https://github.com/zendframework/ZendSkeletonApplication b) Descomprimir el fichero c) Abrir la consola (CMD) e irse al directorio y ejecutar: php composer.phar self-update php composer.phar install Si diese problema de conexion SSL hay que modificar el PHP.INI (tanto el del WAMP como el que está en wamp\bin\php\...) descomentando extension=php_openssl.dll. También tienes que activar el módulo de Apache: ssl_module d) Una vez instalado todo ya te vas a la carpeta public/ del framework creado y te cargará la página por defecto. Más información en:
www.cesarcancino.com/categorias/detalle/zend-framework
----------------------------------------------
CREAR APLICACION
a) En \module\Application\src\Application\Controller duplicar uno que ya exista de antes, por ejemplo: TrabajoControler.php, y dentro del fichero cambiar a:
class TrabajoController extends ....
b) En \module\Application\config\module.config.php añadir en controllers:
'Application\Controller\Trabajo' => 'Application\Controller\TrabajoController'
c) En \module\Application\view\layout duplicar uno que ya exista de antes, por ejemplo: trabajo.phtml
d) En \module\Application\view\application\trabajo crear el html de la página, por ejemplo:
<h1>Hola mundo</h1>
Suscribirse a:
Entradas (Atom)
