Verificando se arquivo de outro servidor existe com cURL php

Verificando se arquivo de outro servidor existe com cURL php

Abaixo utilizo o cURL para verificar se existe, e informo o retorno que eu coleto somente o código do http.
Caso o retorno seja 200, é porque existe!!!

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

return $retCode;

Usar post content json no cURL do PHP

Usar post content json no cURL do PHP

Neste formato abaixo estou passando um array para como atributos do post para ser enviado para uma $URL específica.
Este método

$url = ‘http://www.teste.com.br/teste/’;
$data = array();
$data[‘cod_usuario’] = $cod_usuario;
$data = json_encode($data); #convertendo inputs para json

ini_set(‘MAX_EXECUTION_TIME’, 300);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); #campos que serão enviados
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); #ativa se for ter retorno do chamada
curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Content-Type: application/json’)); #tipo do header, neste caso o json
$result = curl_exec($ch); #resultado em caso de retorno
curl_close($ch);

#abaixo estou decodificando o json retornado, mas como está vindo como objeto, adicione o conversor para (array).
$result = (array) json_decode($result);

Passo a passo certificado SSL Let’s Encrypt – Windows Server

Segue o passo a passo para a instalação / renovação do SSL no Windows Server. A chave vence dentro de 90 dias

Use o zerossl para converter o arquivo;  https://zerossl.com/free-ssl/#crt

  1. Preencher com a chave Lets encript (domain.key) e o CSR gerado pelo IIS ou por outra ferramenta
  2. Criar o arquivo de verificação no IIS (diretório /.well-known/acme-challenge), como o iis não aceita . no nome do diretório é necessário criar um alias no website com este nome e dar as devidas permissões
  3. Se o iis estiver down dar o start
  4. Baixar o conteúdo do certificado atualizado no site e renomear com a extensão CRT
  5. Abrir o arquivo de certificado e nos detalhes localizar o “thumbprint”, copiar o conteúdo

Melhores Plugins Sublime

Melhores Pluguins Sublime

 

CTRL + SHIFT + P

Escolha a opção: Install Package

O sublime irá listar vários pacotes interessantes como os citados abaixo.

 

PHP.

  • BracketHighlighter
  • Composer
  • DocBlockr
  • Emmet
  • Gist
  • Git
  • GitGutter
  • PHP Codebeautifier
  • PHP Companion
  • PHP Constructors
  • Xdebug Client
  • SublimeCodeIntel
  • CSS-CodeIntel
  • PHP-CodeIntel
  • HTML-CodeIntel
  • JSON-CodeIntel
  • JavaScript-CodeIntel

 

 

Reference: https://medium.com/@juniorb2s/melhores-plugins-sublime-para-php-4b011aa02cdf

Reference SublimeCodeIntel: https://github.com/SublimeCodeIntel/SublimeCodeIntel#using

 

Arquivo Completo

Package Control.sublime-settings User:

{
“bootstrapped”: true,
“in_process_packages”:
[
],
“installed_packages”:
[
“BracketHighlighter”,
“CodeIgniter 2 ModelController”,
“CodeIgniter Snippets”,
“Composer”,
“DocBlockr”,
“Emmet”,
“Gist”,
“Git”,
“GitGutter”,
“Package Control”,
“PHP Codebeautifier”,
“PHP Companion”,
“PHP Constructors”,
“SublimeCodeIntel”,
“CSS-CodeIntel”,
“PHP-CodeIntel”,
“HTML-CodeIntel”,
“JSON-CodeIntel”,
“JavaScript-CodeIntel”,
“Xdebug Client”
]
}

 

 

INSTALAÇÃO

bulb SublimeCodeIntel LSP

This is the experimental fork with Language Server Protocol support of SublimeCodeIntel. The following languages are available:

  • CSS-CodeIntel -> CSS/SCSS/Sass/Less
  • Cpp-CodeIntel -> C/C++/Objective-C/Objective-C++
  • HTML-CodeIntel -> HTML
  • JSON-CodeIntel -> JSON/JSONC
  • JavaScript-CodeIntel -> JavaScript/TypeScript/Node.js
  • Markdown-CodeIntel -> Markdown
  • OCaml-CodeIntel -> OCaml
  • PHP-CodeIntel -> PHP
  • Python-CodeIntel -> Python2/Python3
  • Rust-CodeIntel -> Rust
  • YAML-CodeIntel -> YAML

Installation

For the moment, SublimeCodeIntel LSP isn’t available in Package Control yet, to install you need to directly add repositories as well as adding the installed packages.

From command palette add SublimeCodeIntel and the relevant repositories:

Ex.: Package Control: Add Repository -> https://github.com/Kronuz/SublimeCodeIntel Package Control: Install Package -> SublimeCodeIntel

Package Control: Add Repository -> https://github.com/Kronuz/Python-CodeIntel Package Control: Install Package -> Python-CodeIntel

Or directly modify your Packages/User/Package Control.sublime-settings:

{
	"installed_packages": [
		"SublimeCodeIntel",
		"CSS-CodeIntel",
		"Cpp-CodeIntel",
		"HTML-CodeIntel",
		"JSON-CodeIntel",
		"JavaScript-CodeIntel",
		"Markdown-CodeIntel",
		"OCaml-CodeIntel",
		"PHP-CodeIntel",
		"Python-CodeIntel",
		"Rust-CodeIntel",
		"YAML-CodeIntel"
	],
	"repositories": [
		"https://github.com/Kronuz/SublimeCodeIntel",
		"https://github.com/Kronuz/CSS-CodeIntel",
		"https://github.com/Kronuz/Cpp-CodeIntel",
		"https://github.com/Kronuz/HTML-CodeIntel",
		"https://github.com/Kronuz/JSON-CodeIntel",
		"https://github.com/Kronuz/JavaScript-CodeIntel",
		"https://github.com/Kronuz/Markdown-CodeIntel",
		"https://github.com/Kronuz/OCaml-CodeIntel",
		"https://github.com/Kronuz/PHP-CodeIntel",
		"https://github.com/Kronuz/Python-CodeIntel",
		"https://github.com/Kronuz/Rust-CodeIntel",
		"https://github.com/Kronuz/YAML-CodeIntel"
	]
}


Using

  • Start typing code as usual, autocomplete will pop up whenever it’s available. SublimeCodeIntel will also allow you to jump around symbol definitions even across files with just a click ..and back.

    For Mac OS X:

    • Jump to definition = Control+Click
    • Jump to definition = Control+Command+Alt+Up
    • Go back = Control+Command+Alt+Left
    • Manual Code Intelligence = Control+Shift+space

    For Linux:

    • Jump to definition = Super+Click
    • Jump to definition = Control+Super+Alt+Up
    • Go back = Control+Super+Alt+Left
    • Manual Code Intelligence = Control+Shift+space

    For Windows:

    • Jump to definition = Alt+Click
    • Jump to definition = Control+Windows+Alt+Up
    • Go back = Control+Windows+Alt+Left
    • Manual Code Intelligence = Control+Shift+space

Don’t despair! The first time you use it it needs to build some indexes and it can take more than a few seconds.

It just works!

 

Usando controller sem model – Cakephp

Usando controller sem model - Cakephp

Para utilizar uma controller que não tenha vinculo com nenhum banco de dados (não precisa de MODEL), basta utilizar o comando $uses e setar como false.


class
MyController extends AppController{
var $uses =false
;

}

Retirar o cache do navegador – todas linguagens de programação

The correct minimum set of headers that works across all mentioned clients (and proxies):

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

The Cache-Control is per the HTTP 1.1 spec for clients and proxies (and implicitly required by some clients next to Expires). The Pragma is per the HTTP 1.0 spec for prehistoric clients. The Expires is per the HTTP 1.0 and 1.1 spec for clients and proxies. In HTTP 1.1, the Cache-Controltakes precedence over Expires, so it’s after all for HTTP 1.0 proxies only.

If you don’t care about IE6 and its broken caching when serving pages over HTTPS with only no-store, then you could omit Cache-Control: no-cache.

Cache-Control: no-store, must-revalidate
Pragma: no-cache
Expires: 0

If you don’t care about IE6 nor HTTP 1.0 clients (HTTP 1.1 was introduced 1997), then you could omit Pragma.

Cache-Control: no-store, must-revalidate
Expires: 0

If you don’t care about HTTP 1.0 proxies either, then you could omit Expires.

Cache-Control: no-store, must-revalidate

On the other hand, if the server auto-includes a valid Date header, then you could theoretically omit Cache-Control too and rely on Expires only.

Date: Wed, 24 Aug 2016 18:32:02 GMT
Expires: 0

But that may fail if e.g. the enduser manipulates the operating system date and the client software is relying on it.

Other Cache-Control parameters such as max-age are irrelevant if the abovementioned Cache-Control parameters are specified. The Last-Modified header as included in most other answers here is only interesting if you actually want to cache the request, so you don’t need to specify it at all.

How to set it?

Using PHP:

header("Cache-Control: no-cache, no-store, must-revalidate");// HTTP 1.1.
header("Pragma: no-cache");// HTTP 1.0.
header("Expires: 0");// Proxies.

Using Java Servlet, or Node.js:

response.setHeader("Cache-Control","no-cache, no-store, must-revalidate");// HTTP 1.1.
response.setHeader("Pragma","no-cache");// HTTP 1.0.
response.setHeader("Expires","0");// Proxies.

Using ASP.NET-MVC

Response.Cache.SetCacheability(HttpCacheability.NoCache);// HTTP 1.1.Response.Cache.AppendCacheExtension("no-store, must-revalidate");Response.AppendHeader("Pragma","no-cache");// HTTP 1.0.Response.AppendHeader("Expires","0");// Proxies.

Using ASP.NET:

Response.AppendHeader("Cache-Control","no-cache, no-store, must-revalidate");// HTTP 1.1.Response.AppendHeader("Pragma","no-cache");// HTTP 1.0.Response.AppendHeader("Expires","0");// Proxies.

Using ASP:

Response.addHeader "Cache-Control","no-cache, no-store, must-revalidate"' HTTP 1.1.
Response.addHeader "Pragma","no-cache"' HTTP 1.0.
Response.addHeader "Expires","0"' Proxies.

Using Ruby on Rails, or Python/Flask:

response.headers["Cache-Control"]="no-cache, no-store, must-revalidate"# HTTP 1.1.
response.headers["Pragma"]="no-cache"# HTTP 1.0.
response.headers["Expires"]="0"# Proxies.

Using Python/Django:

response["Cache-Control"]="no-cache, no-store, must-revalidate"# HTTP 1.1.
response["Pragma"]="no-cache"# HTTP 1.0.
response["Expires"]="0"# Proxies.

Using Python/Pyramid:

request.response.headerlist.extend((('Cache-Control','no-cache, no-store, must-revalidate'),('Pragma','no-cache'),('Expires','0')))

Using Google Go:

responseWriter.Header().Set("Cache-Control","no-cache, no-store, must-revalidate")// HTTP 1.1.
responseWriter.Header().Set("Pragma","no-cache")// HTTP 1.0.
responseWriter.Header().Set("Expires","0")// Proxies.

Using Apache .htaccess file:

<IfModulemod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>

Using HTML4:

<metahttp-equiv="Cache-Control"content="no-cache, no-store, must-revalidate"/><metahttp-equiv="Pragma"content="no-cache"/><metahttp-equiv="Expires"content="0"/>

HTML meta tags vs HTTP response headers

Important to know is that when a HTML page is served over a HTTP connection, and a header is present in both the HTTP response headers and the HTML <meta http-equiv> tags, then the one specified in the HTTP response header will get precedence over the HTML meta tag. The HTML meta tag will only be used when the page is viewed from local disk file system via a file:// URL. See also W3 HTML spec chapter 5.2.2. Take care with this when you don’t specify them programmatically, because the webserver can namely include some default values.

Generally, you’d better just not specify the HTML meta tags to avoid confusion by starters, and rely on hard HTTP response headers. Moreover, specifically those <meta http-equiv> tags are invalidin HTML5. Only the http-equiv values listed in HTML5 specification are allowed.

Verifying the actual HTTP response headers

To verify the one and other, you can see/debug them in HTTP traffic monitor of webbrowser’s developer toolset. You can get there by pressing F12 in Chrome/Firefox23+/IE9+, and then opening the “Network” or “Net” tab panel, and then clicking the HTTP request of interest to uncover all detail about the HTTP request and response. The below screenshot is from Chrome:

Chrome developer toolset HTTP traffic monitor showing HTTP response headers on stackoverflow.com

I want to set those headers on file downloads too

First of all, this question and answer is targeted on “web pages” (HTML pages), not “file downloads” (PDF, zip, Excel, etc). You’d better have them cached and make use of some file version identifier somewhere in URI path or querystring to force a redownload on a changed file. When applying those no-cache headers on file downloads anyway, then beware of the IE7/8 bug when serving a file download over HTTPS instead of HTTP. For detail, see IE cannot download foo.jsf. IE was not able to open this internet site. The requested site is either unavailable or cannot be found.

Reference: https://stackoverflow.com/questions/49547/how-to-control-web-page-caching-across-all-browsers

Comentário referencial no código, como FIXME TODO BUG ISSUE TODO como usar?

Você viu isto em código. Isto pode ser chamado de code tags.

Estritamente é um comentário como outro qualquer. Ele pode ter um significado específico para alguma ferramenta. É comum IDEs ou pelo menos extensões deles terem alguma coisa que vasculham o código procurando comentários que começam com:

  • TODO: (“para fazer”) Alguém [eu] precisa arrumar isso urgente
  • FIXME: (“me conserte”) Tem um erro que precisa ser consertado aqui, mas funciona (TOFIX:)
  • HACK: (“gambi”) Não teve outro jeito de resolver pra cumprir o prazo, depois melhoro
  • XXX: (“atenção”) Alguns editores destacam comentários com isto como algo importante sem dar semântica específica
  • DONE: (“feito”) Avisar que o TODO está resolvido. Quando remover isto?
  • UNDONE: (“desfeito”) Precisei voltar ao original por alguma razão
  • ASAP: (“tão rápido quanto possível”) Precisa arrumar isso urgente
  • REMOVE: (“remova”) Esse código foi colocado só para testar algo e deve sumir
  • NOTE: (“anotação”) Só para informar que tem algo importante agora
  • BUG: (“falha”) Tem um bug conhecido aqui que precisa ser arrumado – especialização do FIXME – costuma ter um número de ticket associado
  • ISSUE: (“questão”) Há uma dúvida aqui se deve ser assim mesmo
  • ERROR: (“erro”) Tem um erro reproduzível aqui – especialização do FIXME
  • BROKEN: (“quebrado”) não vai pra frente mesmo, não adianta insistir – especialização do FIXME
  • GLITCH (“falha”) Algo estranho ocorre aqui em situação bem específica
  • REVIEW: (“revise”) Revise isso pra mim, usado onde se costuma fazer peer review
  • WTF: (“que p0rr@ é essa?”) Fizeram um besteira muito grande aqui

 

Exemplo de Utilização:

 

// TODO: alguma coisa escrita
código....

 

 

Referencehttps://pt.stackoverflow.com/questions/121245/todo-o-que-%C3%A9-qual-sua-utilidade-e-como-usar

Como utilizar método de outra controller em cakephp

Como utilizar método de outra controller em cakephp

 

Para carregar outra controller ou fazer a chamada dela, vocÊ pode utlizar o requestAction.

Exemplo:

echo $this->requestAction(
    array('controller' => 'articles', 'action' => 'featured'),
    array('named' => array('limit' => 3))
);

 ou

echo $this->requestAction(
    array('controller' => 'articles', 'action' => 'featured'),
    array('named' => array('limit' => 3))
);

echo $this->requestAction(
    array('controller' => 'articles', 'action' => 'view'),
    array('pass' => array(5))
);

 

 

Outra forma é:

App::import(‘Controller’, ‘Posts’);
$post = new PostsController();
$post->myFunction();

 

Diferente de quando usamos o $this->loadModel(‘Posts’) que irá efetuar execuções para o banco de dados, como o “find” ou “save”.

 

 

Referência: https://book.cakephp.org/2.0/en/controllers.html
Referência: https://stackoverflow.com/questions/7902293/how-to-use-methods-from-other-controllers-in-cakephp

Valida email via jquery

Validação de E-mail em Jquery

 

function IsEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}

Esqueça as funções javascript alert() e confirm()

 

Esqueça as funções javascript alert() e confirm()

Uma das coisas que mais me incomoda em sistemas web é a enorme quantidade de alertas do sistema. Confirmações, perguntas, informações — todos utilizando o visual padrão do sistema operacional. Para nossa felicidade, a evolução do javascript permitiu que estes verdadeiros inimigos da usabilidade fossem substituídos por versões mais elegantes e amigáveis. Conheça uma delas, o plugin m2brDialog, para jQuery.Apesar de neste artigo você conferir um método para substituir as janelas padrões de sistema, gostaria de começar com o seguinte conselho: evite o uso de confirmações. O Windows Vista é a maior prova de que inúmeras perguntas e avisos incomodam — e muito — qualquer usuário. Algumas alternativas incluem avisos de confirmação mais discretos, como o modelo lançado pelo Google, exibido no canto superior da tela, ou perguntas inline, exibidas de forma dinâmica diretamente no miolo do sistema. É claro que, em alguns casos, é necessário impedir que o usuário clique ou execute qualquer funcionalidade antes de confirmar a ação. É aí que entra o m2brDialog.O objetivo principal deste plugin é substituir completamente o uso de alertas e confirmações padrões. Possui como dependências o framework javascript jQuery, além de sua extensão para interfaces caso você queira habilitar a opção de arrastar a janela. O m2brDialog funciona baseado no evento clique e seu visual é totalmente customizável, todo baseado em CSS — o tema padrão utiliza o set de ícones Tango, mas nada impede que você implemente suas próprias imagens.

Caso você precise de uma introdução ao jQuery, leia os primeiros parágrafos de meu artigo sobre uma interface drag and drop utilizando o framework.

Download: m2brDialog

Opções da extensão jQuery m2brDialog()

Confira o conjunto de opções disponíveis para configurar o alerta exibido:

largura valor inteiro que define a largura do aviso, em pixels
altura valor inteiro que define a altura do aviso, em pixels
tipo string indicando o tipo do aviso, estando disponíveis as seguintes opções: alerta, erro, pergunta e info
titulo string a ser exibida no título do aviso
texto conteúdo da mensagem do alerta
draggable true ou false para definir se o usuário pode arrastar e mover o aviso (depende da extensão jQuery UI)
botoes array com o conteúdo, tipo e links dos botões do aviso
tempoExibicao tempo de duração da exibição do alerta, em segundos
condicao array com funções que determinam a condição se o alerta deve ser exibido ou não (saiba mais abaixo)

m2brDialog na prática

Faça a chamada para os arquivos javascript do jQuery e do plugin m2brDialog dentro da tag head de seu HTML, bem como o link para a folha de estilos.

 

  1.     <link rel=”stylesheet” type=”text/css” href=”m2br.dialog.css” />
  2.     <script src=”jquery.js”></script>
  3.     <script src=”jquery.m2brdialog.pack.js”></script>

No exemplo abaixo, buscamos todos os elementos a (links) que possuam a classe “link-alerta” e atribuímos um alerta com a mensagem “Teste m2brDialog”:

  1. $(document).ready(function(){
  2.     $(‘a.link-alerta’).m2brDialog({
  3.     largura        : ‘300’,
  4. altura        : ‘120,
  5. tipo        : ‘alerta’,
  6. titulo        : ‘TESTE’,
  7. texto        : ‘Teste m2brDialog’
  8. });
  9. });

Agora vamos criar uma janela de confirmação em todos os elementos com a classe “m2brdialog-pergunta”, com os botões confirmar e cancelar. Caso o usuário clique em confirmar, será redirecionado para o link www.daviferreira.com. A janela também terá a propriedade de drag and drop:

  1. $(document).ready(function(){
  2. $(‘.m2brdialog-pergunta’).m2brDialog({
  3. tipo:         ‘pergunta’,
  4. titulo:        ‘Confirme’,
  5. texto:        ‘Tem certeza que deseja executar esta operação?’,
  6. draggable: true,
  7. botoes: {
  8. 1: {
  9. label: ‘confirmar’,
  10. tipo: ‘link’,
  11. endereco: ‘http://www.daviferreira.com’
  12. },
  13. 2: {
  14. label: ‘cancelar’,
  15. tipo: ‘fechar’
  16. }
  17. }
  18. });
  19. });

Funções condicionais

Em alguns casos, precisaremos de uma condição para exibir ou não o alerta. Por exemplo, em um formulário, exibir a mensagem de alerta apenas se algum campo obrigatório não tiver sido preenchido. É para isto que serve o parâmetro de configuração avançada condicao. Esta propriedade recebe um vetor com duas funções. A primeira representa a condição e a segunda a URL de retorno caso esta condição seja verdadeira. Vejamos como funcionaria no exemplo do formulário citado anteriormente:

 

  1. <form name=”frm-newsletter” id=”frm-newsletter” method=”post” action=””>
  2. <label for=”email”>Seu e-mail</label>
  3. <input type=”text” name=”email” id=”email” size=”60″ />
  4. <input type=”button” id=”btn-newsletter” value=”OK” />
  5. </form>
  6. <script type=”text/javascript”>
  7. $(document).ready(function(){
  8. $(‘#btn-newsletter’).m2brDialog({
  9. tipo            : ‘erro’,
  10. titulo            : ‘Erro!’,
  11. texto            : ‘Por favor, preencha o campo e-mail’,
  12. condicao        : {
  13. origem        : function() {
  14.                             return ($(‘#email’).val() ? true : false);
  15.             },
  16. retorno        : function() { return true; }
  17. }
  18. });
  19. });
  20. </script>

Note que na opção de configuração condicao são passados dois valores: origem e retorno. Na origem estamos validando o campo de id email, verificando se ele foi preenchido. Caso retorne true, ou seja, caso ele esteja preenchido, o alerta é ignorado e o script executa a função retorno — no nosso exemplo um simples return true;. O alerta de erro apenas será exibido caso o campo esteja vazio.

Demo: veja o m2brDialog em ação!

Pra finalizar, uma gambiarra

Nem sempre o alerta será exibido a partir de um clique em algum link ou botão. Uma função AJAX, por exemplo, pode retornar um alerta. Neste caso, utilizamos o código abaixo:

  1. var alertaPadrao = function(titulo, msg, tipo, altura, largura) {
  2.         $(‘body’).append(‘<a href=”#” id=”alerta-padrao”></a>’);
  3.         $(‘#alerta-padrao’).m2brDialog({
  4.                 draggable: true,
  5.                 texto: msg,
  6.                 tipo: tipo,
  7.                 titulo: titulo,
  8.                 altura: altura,
  9.                 largura: largura,
  10.                 botoes: {
  11.                     1: {
  12.                         label: ‘Fechar’,
  13.                         tipo: ‘fechar’
  14.                     }
  15.                 }
  16.         });
  17.         $(‘#alerta-padrao’)
  18.             .click()
  19.             .remove();
  20. };

Sim, uma tremenda de uma gambiarra! O que este código faz é criar um elemento a, simular seu clique e depois destruí-lo. Vamos supor que sua função retorna um aviso de operação concluída. Seria só chamar o nosso alertaPadrao desse jeito:

 

  1. <script type=”text/javascript”>
  2. $(document).ready(function(){
  3.     alertaPadrao(‘Informação:’, ‘Operação concluída com sucesso.’, ‘info’, 110, 250);
  4. });
  5. </script>

E aí, curtiu? Em caso de dúvidas ou sugestões, envie um comentário utilizando o formulário abaixo. Até a próxima!

Atualizações [26/11/2008]

Código-fonte e arquivo CSS do script atualizados com correções enviadas pelo leitor Rômulo, envolvendo bugs nas versões 6 e 7 do Internet Explorer. Valeu, Rômulo! 🙂

Atualizações [08/12/2008]

A rapaziada levantou a bola nos comentários sobre como passar um código dinâmico para nossa janela de confirmação, para o caso de uma listagem com exclusão, por exemplo.

No código a seguir você confere como atingir este objetivo utilizando o método each() nativo do jQuery. O primeiro passo é criar o HTML da tabela. Note que no atributo id do a estou passando o código de nossos registros.

  1. <table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″ id=”resultado”>
  2.     <thead>
  3.         <tr>
  4.             <th>Código</th>
  5.             <th>Nome</th>
  6.             <th>Ação</th>
  7.         </tr>
  8.     </thead>
  9.     <tbody>
  10.         <tr id=”linha-1″>
  11.             <td>1</td>
  12.             <td>Davi Ferreira</td>
  13.             <td><a href=”#” class=”item-excluir” id=”1″><img src=”excluir.png” width=”24″ height=”24″ alt=”excluir registro 1″ /></a></td>
  14.         </tr>
  15.         <tr id=”linha-2″ class=”alt”>
  16.             <td>2</td>
  17.             <td>Rômulo</td>
  18.             <td><a href=”#” class=”item-excluir” id=”2″><img src=”excluir.png” width=”24″ height=”24″ alt=”excluir registro 2″ /></a></td>
  19.         </tr>
  20.         <tr id=”linha-3″>
  21.             <td>3</td>
  22.             <td>Bruno</td>
  23.             <td><a href=”#” class=”item-excluir” id=”3″><img src=”excluir.png” width=”24″ height=”24″ alt=”excluir registro 3″ /></a></td>
  24.         </tr>
  25.         <tr id=”linha-4″ class=”alt”>
  26.             <td>4</td>
  27.             <td>João Francisco</td>
  28.             <td><a href=”#” class=”item-excluir” id=”4″><img src=”excluir.png” width=”24″ height=”24″ alt=”excluir registro 4″ /></a></td>
  29.         </tr>
  30.     </tbody>
  31. </table>

Agora, através da chamada .each() varremos todos os elementos da tabela de resultado com a classe item-excluir e atribuímos nossa m2brDialog passando o código dos registros no Sim do botão.

  1. $(document).ready(function(){
  2. $(‘table#resultado a.item-excluir’).each(function(){
  3. var codigo = $(this).attr(‘id’);
  4. $(this).m2brDialog({
  5. tipo:         ‘pergunta’,
  6. titulo:        ‘Confirme’,
  7. texto:        ‘Tem certeza que deseja excluir o registro ID’+
  8. ‘<span style=”color:#ffff00″>’+codigo+'</span>?’,
  9. draggable: true,
  10. botoes: {
  11. 1: {
  12. label        : ‘sim’,
  13. tipo        : ‘link’,
  14. endereco    : ‘excluir.php?codigo=’+codigo
  15. },
  16. 2: {
  17. label        : ‘não’,
  18. tipo        : ‘fechar’
  19. }
  20. }
  21. });
  22. });
  23. });

 

 

Referência/Criação: http://www.daviferreira.com/posts/esqueca-as-funcoes-javascript-alert-e-confirm