Passo a passo para a instação do Laravel 5.1 em ambiente Linux e Mac:
1 - Abra a terminal
2 - Acessando o diretório dos seus projetos:
cd /var/www/html
3 - Baixando/Instalando o Laravel:
composer create-project laravel/laravel --prefer-dist
4 - Alterando no nome da pasta do framework:
mv laravel/ projeto
5 - Acessando a pasta do framework:
cd /projeto
6 - Iniciando o framework:
php artisan serve
7 - Verificando se a instalação está correta, abra a navegador e acesse:
http://localhost:8000/
quinta-feira, 1 de outubro de 2015
terça-feira, 1 de setembro de 2015
Instalando o composer como variavel global
Para instalar o composer como váriavel global em ambiente linux/mac faremos seguiremos o passo-a-passo abaixo:
Mais informações:
https://getcomposer.org/doc/00-intro.md
1 - Baixando e instaçando o composer:curl -sS https://getcomposer.org/installer | php
2 - Movendo o composer para a pasta correta:
sudo mv composer.phar /usr/local/bin/composer
3 - Digite composer no terminal e verifique se a instalação aconteceu da forma correta.
Mais informações:
https://getcomposer.org/doc/00-intro.md
segunda-feira, 18 de maio de 2015
Codeigniter em Português
Traduzindo todas as mensagens do codeigniter para português.
01 - Baixe o pacote .zip do link abaixo.
https://github.com/CIBr/CodeIgniter-Portuguese-BR
02 - Descompacte o pacote e mova a pasta portuguese-br para diretório application/language/ do seu projeto.
03 - No arquivo application/config/config.php troque o valor do array $config['language'] para portuguese-br.
04 - Realize os testes.
Obs: No link passado também existe a forma de utilizar o pacote de tradução. Créditos para Infog.
01 - Baixe o pacote .zip do link abaixo.
https://github.com/CIBr/CodeIgniter-Portuguese-BR
02 - Descompacte o pacote e mova a pasta portuguese-br para diretório application/language/ do seu projeto.
03 - No arquivo application/config/config.php troque o valor do array $config['language'] para portuguese-br.
04 - Realize os testes.
Obs: No link passado também existe a forma de utilizar o pacote de tradução. Créditos para Infog.
terça-feira, 14 de abril de 2015
Criando uma rota Literal no Zend Framework 2
Acessando a url: http://localhost:8888/usuario
//Definindo o namespace
namespace Application;
//Registrando a rota
namespace Application;
//Registrando a rota
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index',
),
),
),
'usuario' => array(
'type' => 'literal',
'options' => array(
'route' => '/usuario', // Não esquecer da barra "/"
'defaults' => array(
'controller' => 'Application\Controller\Usuario',
'action' => 'index',
),
),
),
//Registrando o controller
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController',
'Application\Controller\Usuario' => 'Application\Controller\UsuarioController'
),
),
2 - Em module/Application/src/Application/Controller/ criar arquivo UsuarioController.php
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class UsuarioController extends AbstractActionController
{
public function indexAction()
{
return new ViewModel();
}
}
?>
3 - Em module/Application/view/application/ (nome do modulo Application) criar pasta usuario (nome do controller UsuarioController) e dentro o arquivo index.phtml (nome do método indexAction).
//Digite o código html para teste
<h1>Usuário</h1>
4 - No Linux/Mac
cd /var/www/html/seu_projeto/public
php -S localhost:8888
5 - No browser digite a url: http://localhost:8888/usuario
segunda-feira, 13 de abril de 2015
Flash Messages no Zend Framework 2
//No Controller
public function deleteAction() {
//pegando o parametro vindo do $_GET
$id = $this->params()->fromRoute('id', 0);
//instanciando e enviando a entidade para o serviço
$service = $this->getServiceLocator()->get('service');
$delete = $service->delete($id);
if ($delete == null) {
$this->flashMessenger()->addSuccessMessage('Registro excluído com sucesso!');
} else {
$this->flashMessenger()->addErrorMessage('Não foi possível excluir o registro!');
}
return $this->redirect()->toRoute('usuario', array('controller' => 'usuario', 'action' => 'index'));
}
//Na view
<?php
echo $this->flashMessenger()->renderCurrent('error', array('alert', 'alert-danger'));
echo $this->flashMessenger()->renderCurrent('success', array('alert', 'alert-success'));
?>
public function deleteAction() {
//pegando o parametro vindo do $_GET
$id = $this->params()->fromRoute('id', 0);
//instanciando e enviando a entidade para o serviço
$service = $this->getServiceLocator()->get('service');
$delete = $service->delete($id);
if ($delete == null) {
$this->flashMessenger()->addSuccessMessage('Registro excluído com sucesso!');
} else {
$this->flashMessenger()->addErrorMessage('Não foi possível excluir o registro!');
}
return $this->redirect()->toRoute('usuario', array('controller' => 'usuario', 'action' => 'index'));
}
//Na view
<?php
echo $this->flashMessenger()->renderCurrent('error', array('alert', 'alert-danger'));
echo $this->flashMessenger()->renderCurrent('success', array('alert', 'alert-success'));
?>
quarta-feira, 1 de abril de 2015
Mudança de Template no Zend Framework 2 (setTemplate)
//Controller
use Zend\View\Model\ViewModel;
public function indexAction(){
$view = new ViewModel(array('msg'=>'layout login'));
$view->setTemplate('layout/login');
return $view;
}
//Em view/layout
01 - Criar o arquivo login.phtml
02 - Coloque no arquivo
<?php echo $this->msg; ?>
use Zend\View\Model\ViewModel;
public function indexAction(){
$view = new ViewModel(array('msg'=>'layout login'));
$view->setTemplate('layout/login');
return $view;
}
//Em view/layout
01 - Criar o arquivo login.phtml
02 - Coloque no arquivo
<?php echo $this->msg; ?>
sexta-feira, 20 de fevereiro de 2015
Configurando DataFixture no Zend Framework2
01 - No arquivo module.config.php do módulo:
'doctrine' => array(
'fixture' => array(
__NAMESPACE__.'_fixture' => __DIR__ . '/../src/'.__NAMESPACE__.'/Fixture',
),
),
02 - No terminal (Linux/Mac) dentro da pasta do seu projeto zend framework execute:
vendor/bin/doctrine-module data-fixture:import
quinta-feira, 29 de janeiro de 2015
Gerando Getters and Setters com Doctrine2 no Zend Framework 2
No terminal (Linux/Mac), rode o seguinte comando:
vendor/bin/doctrine-module orm:generate-entities --filter="Tabela" --generate-annotations="true" --generate-methods="true" module/Tabela/src/
PS: Nome da Tabela sempre em maiúsculo.
vendor/bin/doctrine-module orm:generate-entities --filter="Tabela" --generate-annotations="true" --generate-methods="true" module/Tabela/src/
PS: Nome da Tabela sempre em maiúsculo.
Redirecionando Controller no Codeigniter
01 - Vá em /application/config/routes.php
02 - Adicione o seguinte indice ao array $route
$route['admin'] = "usuario";
Agora quando for digitado admin na url, o codeigniter irá redirecionar para o controller usuario.
02 - Adicione o seguinte indice ao array $route
$route['admin'] = "usuario";
Agora quando for digitado admin na url, o codeigniter irá redirecionar para o controller usuario.
quarta-feira, 28 de janeiro de 2015
Configuração Doctrine no module.config.php no Zend Framework 2
No arquivo module.config.php do seu Modulo, após o indice view_manager colocar a seguinte configuração:
'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
),
'orm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
)
)
)
),
'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
),
'orm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
)
)
)
),
segunda-feira, 26 de janeiro de 2015
Assets Helper
01 - /application/config/autoload.php
$autoload['helper'] = array('url', 'modulo', 'assets');
02 - Na root criar a pasta assets e criar os arquivo com o nome do controller, por exemplo:
usuario.css
usuario.js
cliente.css
cliente.js
03 - /application/helper/assets_helper.php
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//carregando o .css/.js referente ao modulo, caso existam
function moduleAssets(){
$CI = & get_instance();
$controller = $CI->uri->segment(1) == false ? 'usuario' : strtolower($CI->uri->segment(1));
$css = "assets/css/{$controller}.css";
$js = "assets/js/{$controller}.js";
$files = null;
if(file_exists($css)){
$files .= "<link rel='stylesheet' type='text/css' href='".base_url($css)."' />\n";
}
if(file_exists($js)){
$files .= "<script src='".base_url($js)."'></script>\n";
}
return $files;
}
?>
04 - View
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Codeigniter Assets</title>
<?php echo moduleAssets(); ?>
</head>
$autoload['helper'] = array('url', 'modulo', 'assets');
02 - Na root criar a pasta assets e criar os arquivo com o nome do controller, por exemplo:
usuario.css
usuario.js
cliente.css
cliente.js
03 - /application/helper/assets_helper.php
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//carregando o .css/.js referente ao modulo, caso existam
function moduleAssets(){
$CI = & get_instance();
$controller = $CI->uri->segment(1) == false ? 'usuario' : strtolower($CI->uri->segment(1));
$css = "assets/css/{$controller}.css";
$js = "assets/js/{$controller}.js";
$files = null;
if(file_exists($css)){
$files .= "<link rel='stylesheet' type='text/css' href='".base_url($css)."' />\n";
}
if(file_exists($js)){
$files .= "<script src='".base_url($js)."'></script>\n";
}
return $files;
}
?>
04 - View
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Codeigniter Assets</title>
<?php echo moduleAssets(); ?>
</head>
quarta-feira, 21 de janeiro de 2015
Integração MailChimp com Codeigniter
01 - Fazer o download da classe do MailChimp para o Codeigniter:
https://github.com/waynhall/CodeIgniter-Library-for-MailChimp-API-v1.3
02 - Coloque a classe MCAPI no diretório /application/libraries /
03 - Configuração de conexão com o MailChimp
$config = array(
'apikey' => 'db5b0123456789621651ca27f7c7657-us8', //API KEY do MailChimp
'secure' => FALSE //default
);
$this->load->library('MCAPI', $config, 'mail_chimp');
$list_id = 'b2d4012345'; //LIST ID do MailChimp
04 - Testando se a conexão com o MailChimp está correta:
$conexao = $this->mail_chimp->ping();
var_dump($conexao);
Irá retornar Everything's Chimpy! se tudo estiver correto ou FALSE caso encontre alguma falha na conexão.
05 - Exemplo simples de como cadastrar os dados no MailChimp:
$email = trim($this->input->post('email'));
$merge_vars = array(
'FNAME'=> trim($this->input->post('nome')),
'LNAME'=> trim($this->input->post('sobrenome')),
'MMERGE4' => trim($this->input->post('telefone'))
);
//todos os parametros são obrigatórios
$listSubscribe = $this->mail_chimp->listSubscribe($list_id, $email, $merge_vars);
06 - Para mais informações consultar: https://apidocs.mailchimp.com/api/1.3/
https://github.com/waynhall/CodeIgniter-Library-for-MailChimp-API-v1.3
02 - Coloque a classe MCAPI no diretório /application/libraries /
03 - Configuração de conexão com o MailChimp
$config = array(
'apikey' => 'db5b0123456789621651ca27f7c7657-us8', //API KEY do MailChimp
'secure' => FALSE //default
);
$this->load->library('MCAPI', $config, 'mail_chimp');
$list_id = 'b2d4012345'; //LIST ID do MailChimp
04 - Testando se a conexão com o MailChimp está correta:
$conexao = $this->mail_chimp->ping();
var_dump($conexao);
Irá retornar Everything's Chimpy! se tudo estiver correto ou FALSE caso encontre alguma falha na conexão.
05 - Exemplo simples de como cadastrar os dados no MailChimp:
$email = trim($this->input->post('email'));
$merge_vars = array(
'FNAME'=> trim($this->input->post('nome')),
'LNAME'=> trim($this->input->post('sobrenome')),
'MMERGE4' => trim($this->input->post('telefone'))
);
//todos os parametros são obrigatórios
$listSubscribe = $this->mail_chimp->listSubscribe($list_id, $email, $merge_vars);
06 - Para mais informações consultar: https://apidocs.mailchimp.com/api/1.3/
segunda-feira, 29 de dezembro de 2014
Instanciar Model em uma Library no Codeigniter
//application/libraries
<?php
class Auth{
private $CI;
public function __construct() {
$this->CI =& get_instance();
}
public function check(){
$this->CI->load->model('usuario_model');
$check = $CI->usuario_model->find();
return $check;
}
}
<?php
class Auth{
private $CI;
public function __construct() {
$this->CI =& get_instance();
}
public function check(){
$this->CI->load->model('usuario_model');
$check = $CI->usuario_model->find();
return $check;
}
}
sexta-feira, 26 de dezembro de 2014
Instanciar Library em um Helper no Codeigniter
//application/helpers/
function setPagination($total_rows){
$CI =& get_instance();
$CI->load->library('pagination');
$config['base_url'] = _SERVER.'/www/cipadrao/usuario/index/';
$config['first_link'] = 'Primeiro';
$config['last_link'] = 'Último';
$config['next_link'] = 'Próximo';
$config['prev_link'] = 'Anterior';
$config['per_page'] = _PER_PAGE;
$config['num_links'] = _NUM_LINKS;
$config['total_rows'] = $total_rows;
return $CI->pagination->initialize($config);
}
function setPagination($total_rows){
$CI =& get_instance();
$CI->load->library('pagination');
$config['base_url'] = _SERVER.'/www/cipadrao/usuario/index/';
$config['first_link'] = 'Primeiro';
$config['last_link'] = 'Último';
$config['next_link'] = 'Próximo';
$config['prev_link'] = 'Anterior';
$config['per_page'] = _PER_PAGE;
$config['num_links'] = _NUM_LINKS;
$config['total_rows'] = $total_rows;
return $CI->pagination->initialize($config);
}
quarta-feira, 24 de dezembro de 2014
Paginação/Pagination Helper no Codeigniter
//config/constants.php
define('_SERVER', 'http://'.$_SERVER['SERVER_NAME']);
define('_PER_PAGE', 3);
define('_NUM_LINKS', 5);
//Controller
public function index(){
//criando paginação
$this->load->helper('pagination_helper');
$total_rows = $this->count();
$limit[0] = _PER_PAGE;
$limit[1] = $this->uri->segment(3) ? $this->uri->segment(3) : 0;
setPagination($total_rows);
//selecionando os dados
$this->data['usuarios'] = $this->usuario->findAll(null, null, $limit);
$this->data['pagination'] = $this->pagination->create_links();
//padronizando o caminho da página
$page = setPage($this->data['module'], 'lista');
//chamando a page pelo template
$this->template->view($page, $this->data);
}
//Pagination_helper
function setPagination($total_rows){
$CI =& get_instance();
$CI->load->library('pagination');
$config['base_url'] = _SERVER.'/usuario/index/';
$config['first_link'] = 'Primeiro';
$config['last_link'] = 'Último';
$config['next_link'] = 'Próximo';
$config['prev_link'] = 'Anterior';
$config['per_page'] = _PER_PAGE;
$config['num_links'] = _
$config['total_rows'] = $total_rows;
return $CI->pagination->initialize($config);
}
define('_SERVER', 'http://'.$_SERVER['SERVER_NAME']);
define('_PER_PAGE', 3);
define('_NUM_LINKS', 5);
//Controller
public function index(){
//criando paginação
$this->load->helper('pagination_helper');
$total_rows = $this->count();
$limit[0] = _PER_PAGE;
$limit[1] = $this->uri->segment(3) ? $this->uri->segment(3) : 0;
setPagination($total_rows);
//selecionando os dados
$this->data['usuarios'] = $this->usuario->findAll(null, null, $limit);
$this->data['pagination'] = $this->pagination->create_links();
//padronizando o caminho da página
$page = setPage($this->data['module'], 'lista');
//chamando a page pelo template
$this->template->view($page, $this->data);
}
//Pagination_helper
function setPagination($total_rows){
$CI =& get_instance();
$CI->load->library('pagination');
$config['base_url'] = _SERVER.'/usuario/index/';
$config['first_link'] = 'Primeiro';
$config['last_link'] = 'Último';
$config['next_link'] = 'Próximo';
$config['prev_link'] = 'Anterior';
$config['per_page'] = _PER_PAGE;
$config['num_links'] = _
$config['total_rows'] = $total_rows;
return $CI->pagination->initialize($config);
}
terça-feira, 9 de dezembro de 2014
Flashdata Messages no Codeigniter
//Controller
<?php
public function excluir($cliente_id){
$this->load->model('cliente_model');
$delete = $this->cliente_model->delete($cliente_id);
if($delete){
$this->session->set_flashdata('sucesso', 'Cliente excluído com sucesso.');
}
else{
$this->session->set_flashdata('erro', 'Não foi possível excluir o cliente.');
}
redirect('cliente');
}
?>
//View
<?php
if($this->session->flashdata('erro')){
echo '<div class="erro">'.$this->session->flashdata('erro').'</div>';
}
if($this->session->flashdata('sucesso')){
echo '<div class="sucesso">'.$this->session->flashdata('sucesso').'</div>';
}
?>
<?php
public function excluir($cliente_id){
$this->load->model('cliente_model');
$delete = $this->cliente_model->delete($cliente_id);
if($delete){
$this->session->set_flashdata('sucesso', 'Cliente excluído com sucesso.');
}
else{
$this->session->set_flashdata('erro', 'Não foi possível excluir o cliente.');
}
redirect('cliente');
}
?>
//View
<?php
if($this->session->flashdata('erro')){
echo '<div class="erro">'.$this->session->flashdata('erro').'</div>';
}
if($this->session->flashdata('sucesso')){
echo '<div class="sucesso">'.$this->session->flashdata('sucesso').'</div>';
}
?>
segunda-feira, 24 de novembro de 2014
Gerando as Entidades com Doctrine2 no Zend Framework2
01 - Configurar o arquivo /config/autoload/doctrine_orm.local.php
02 - No terminal (Linux/Mac)
cd /caminho/para/seu/projeto/root_do_projeto
03 - vendor/bin/doctrine-module orm:convert-mapping --filter="NomeTabela" --from-database annotation module/NomeController/src/NomeController/Entity/
04 - Verificar se o arquivo foi criando em /module/NomeController/src/NomeController/Entity/
//Observações
01 - O nome da tabela
A tabela nome_tabela na geração da entidade dever ser nomeada NomeTabela.
02 - No terminal o comando vendor/bin/doctrine-module, mostra todas as funções disponíveis do doctrine2.
02 - No terminal (Linux/Mac)
cd /caminho/para/seu/projeto/root_do_projeto
03 - vendor/bin/doctrine-module orm:convert-mapping --filter="NomeTabela" --from-database annotation module/NomeController/src/NomeController/Entity/
04 - Verificar se o arquivo foi criando em /module/NomeController/src/NomeController/Entity/
//Observações
01 - O nome da tabela
A tabela nome_tabela na geração da entidade dever ser nomeada NomeTabela.
02 - No terminal o comando vendor/bin/doctrine-module, mostra todas as funções disponíveis do doctrine2.
quinta-feira, 20 de novembro de 2014
Configurando Doctrine2 no Zend Framework2
01 - No diretório /config/autoload, criar o arquivo doctrine_orm.local.php:
<?php
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => '127.0.0.1', //Não usar localhost
'port' => '3306',
'user' => 'root',
'password' => '',
'dbname' => 'nome_do_banco',
'driverOptions' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
)
)
)
)
),
);
?>
02 - No diretório data criar a pasta DoctrineORMModule e dentra ela criar a pasta Proxy.
<?php
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => '127.0.0.1', //Não usar localhost
'port' => '3306',
'user' => 'root',
'password' => '',
'dbname' => 'nome_do_banco',
'driverOptions' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
)
)
)
)
),
);
?>
02 - No diretório data criar a pasta DoctrineORMModule e dentra ela criar a pasta Proxy.
terça-feira, 18 de novembro de 2014
Instalando Doctrine2/Hounddog no Zend Framework 2
No zendframework
01 - Composer.json
01 - Composer.json
{
"name": "zendframework/skeleton-application",
"description": "Skeleton Application for ZF2",
"license": "BSD-3-Clause",
"keywords": [
"framework",
"zf2"
],
"homepage": "http://framework.zend.com/",
"minimum-stability": "dev",
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.*",
"doctrine/doctrine-module": "dev-master",
"doctrine/doctrine-orm-module": "dev-master",
"hounddog/doctrine-data-fixture-module": "dev-master"
}
}
No Terminal
02 - php composer.phar self-update
03 - php composer.phar install
04 - cd public
05 - php -S localhost:8888
No browser
06 - localhost:8888
No zendframework
07 - Em config/application.config.php
'modules' => array(
'Application',
'DoctrineModule',
'DoctrineORMModule',
'DoctrineDataFixtureModule'
),
No zendframework
07 - Em config/application.config.php
'modules' => array(
'Application',
'DoctrineModule',
'DoctrineORMModule',
'DoctrineDataFixtureModule'
),
segunda-feira, 17 de novembro de 2014
Instalando o Zend Framework2
Acesse o link:
01 - http://framework.zend.com/downloads/skeleton-app
No terminal (Linux/Mac)
02 - cd caminho/para/pasta/www
03 - git clone git://github.com/zendframework/ZendSkeletonApplication.git
04 - mv ZendSkeletonApplication/ zf2
05 - cd zf2
06 - php composer.phar self-update
07 - php composer.phar install
08 - cd public
09 - php -S localhost:8888
No browser
10 - localhost:8888
01 - http://framework.zend.com/downloads/skeleton-app
No terminal (Linux/Mac)
02 - cd caminho/para/pasta/www
03 - git clone git://github.com/zendframework/ZendSkeletonApplication.git
04 - mv ZendSkeletonApplication/ zf2
05 - cd zf2
06 - php composer.phar self-update
07 - php composer.phar install
08 - cd public
09 - php -S localhost:8888
No browser
10 - localhost:8888
Assinar:
Postagens (Atom)