Don't you speak portuguese? Translate this site with Google Translator

Pensamento do Dia

Uma hora de vida também é vida. (Ditado polaco/judeu)

9.3.2 - htmlHelper

9.3.2 – htmlHelper

Não perca a motivação só porque as coisas não estão correndo como o previsto. Adversidade gera sabedoria e é isso que levará você ao sucesso.

class Cake\View\Helper\HtmlHelper(View $view, array $config =[])

O papel do HtmlHelper no CakePHP é fazer opções relacionados a HTML mais fácil, mais rápido e mais resistente à mudança. Usando este helper permitirá que sua aplicação seja mais luz em seus pés, e mais flexível de onde ele é colocado em relação à raiz de um domínio.

Você deve ter notado o uso de um objeto chamado $this->Html, uma instância da classe Cake\View\Helper\HtmlHelper do CakePHP. O CakePHP vem com um conjunto de view helpers que simplificam tarefas como gerar links e formulários. Você pode aprender como usá-los em Helpers (Facilitadores), mas aqui é importante notar que o método link() irá gerar um link HTML com o referido título (primeiro parâmetro) e URL (segundo parâmetro).

Muitos métodos HtmlHelper incluem um parâmetro $at
tributes, que lhe permitem aderência em quaisquer atributo extras em suas tags. Aqui estão alguns exemplos de como usar o parâmetro $attributtes:

Desired attributes: <tag class="someClass" />
Array parameter: ['class' => 'someClass']

Desired attributes: <tag name="foo" value="bar" />
Array parameter:  ['name' => 'foo', 'value' => 'bar']

Inserindo Elementos Bem Formatados

A tarefa mais importante que o HtmlHelper realiza é a criação de marcação bem formado. Esta seção irá cobrir alguns dos métodos do HtmlHelper e como usá-los.

Criando a tag Charset

Cake\View\Helper\HtmlHelper::charset($charset=null)

Usado para criar a meta tag especificando o charset do documento. O default valor é UTF-8. Veja um exemplo:

echo $this->Html->charset();

Uma alternativa:

echo $this->Html->charset('ISO-8859-1');

 

Linkando para Arquivos CSS

Cake\View\Helper\HtmlHelper::css(mixed $path, array $options =[])

Cria um link para um CSS. Caso o bloco option seja configurado para true, a tag link é adicionada para o bloco CSS que você pode imprimir dentro da tag head do documento.

Este método de inclusão do CSS assume que o CSS especificado reside dentro do webroot/css e não inicia com '/':

echo $this->Html->css('forms');

Deve gerar:

<link rel="stylesheet" href="/css/forms.css" />

O primeiro parâmetro deve ser um array para incluir múltiplos arquivos:

echo $this->Html->css(['forms', 'tables', 'menu']);

 

Saída:

<link rel="stylesheet" href="/css/forms.css" />
<link rel="stylesheet" href="/css/tables.css" />
<link rel="stylesheet" href="/css/menu.css" />

Adicionando CSS de um Plugin:

echo $this->Html->css('DebugKit.toolbar.css');

 

Criando Meta tags

<?= $this->Html->meta(
    'favicon.ico',
    '/favicon.ico',
    ['type' => 'icon']
);
?>
<?= $this->Html->meta(
    'keywords',
    'enter any meta keyword here'
);
?>
<?= $this->Html->meta(
    'description',
    'enter any meta description here'
);
?>

Linkando para Imagens

Cake\View\Helper\HtmlHelper::image(string $path, array $options =[])

echo $this->Html->image('cake_logo.png', ['alt' => 'CakePHP']);

Gera:

<img src="/img/cake_logo.png" alt="CakePHP" />

 

echo $this->Html->image("recipes/6.jpg", [
    "alt" => "Brownies",
    'url' => ['controller' => 'Recipes', 'action' => 'view', 6]
]);

Plugin:

echo $this->Html->image('DebugKit.icon.png');

 

Criando Links

echo $this->Html->link(
    'Enter',
    '/pages/home',
    ['class' => 'button', 'target' => '_blank']
);
echo $this->Html->link(
    'Dashboard',
    ['controller' => 'Dashboards', 'action' => 'index', '_full' => true]
);
echo $this->Html->link(
    'Delete',
    ['controller' => 'Recipes', 'action' => 'delete', 6],
    ['confirm' => 'Are you sure you wish to delete this recipe?'],
);
echo $this->Html->link('View image', [
    'controller' => 'Images',
    'action' => 'view',
    1,
    '?' => ['height' => 400, 'width' => 500]
]);

Linkando Vídeos

<?= $this->Html->media('audio.mp3') ?>
 // Output
 <audio src="/files/audio.mp3"></audio>

 <?= $this->Html->media('video.mp4', [
     'fullBase' => true,
     'text' => 'Fallback text'
 ]) ?>
<?= $this->Html->media(
     ['video.mp4', ['src' => 'video.ogg', 'type' => "video/ogg; codecs='theora, vorbis'"]],
     ['autoplay']
 ) ?>

Link para Imagens

Cake\View\Helper\HtmlHelper::image(string $path, array $options = [])

Creates a formatted image tag. The path supplied should be relative to webroot/img/.

echo $this->Html->image('cake_logo.png', ['alt' => 'CakePHP']);

 

Irá mostrar:

<img src="/img/cake_logo.png" alt="CakePHP" />

 

CSS CakePHP

Customizar CSS do bootstrap numa view

echo $this->Form->input('grupo',['style'=>'width: 200px']);

 

Tipos de Campos

input[type="text"],

input[type="password"],

input[type="email"],

input[type="tel"],

input[type="select"] {

max-width: 280px;

}

 

Usando num template login.ctp

<div class="users form">
<?= $this->Flash->render('auth') ?>    
    <?= $this->Form->create() ?>
    <div align="center">
    <fieldset>
        <legend><?= __('<h3><b>Favor entrar seu com login e senha</b></h3>') ?></legend>
        <?= $this->Form->input('username', ['label'=>'Login', 'class'=>'col4']) ?>
        <?= $this->Form->input('password',['label'=>'Senha', 'class'=>'col4']) ?>
    </fieldset>
    <?= $this->Form->button(__('Acessar')); ?>
    <?= $this->Form->end() ?>
    </div>
</div>


No arquivo  webroot/css/custom.css

/* Para a customização da largura dos campos de form: echo $this->Form->input('grupo',['class'=>'col2']); */
.col1{
    width:50px;
}

.col2{
    width:100px;
}

.col3{
    width:150px;
}

.col4{
    width:200px;
}

.col5{
    width:250px;
}

.col6{
    width:300px;
}

.col7{
    width:350px;
}

.col8{
    width:400px;
}

.col9{
    width:950px;
}

JavaScript em View/Template

<div class="actions columns col-lg-2 col-md-3">
    <h3><?= __('Ações') ?></h3>
    <ul class="nav nav-stacked nav-pills">
        <li class="active disabled"><?= $this->Html->link(__('Novo Materiai'), ['action' => 'add']) ?></li>
        <li><?= $this->Html->link(__('Listar Materiais'), ['action' => 'index']) ?></li>
    </ul>
</div>

<script type="text/javascript">

function grupoFocus() { 
    // conta_grupo receber o valor da combo grupo
    var elt = document.getElementById('grupo');
    var selection=elt.options[elt.selectedIndex].innerHTML;
    document.getElementById('conta').value = selection;
    // Foco na descrição
    document.getElementById('descricao').focus();
}
</script>

<div class="materiais form col-lg-10 col-md-9 columns">
    <?= $this->Form->create($materiai); ?>
    <fieldset>
        <legend><?= __('Add Materiai') ?></legend>
        <?php
            echo $this->Form->input('codigo', ['autofocus'=>'autofocus']);
            echo $this->Form->input('grupo', ['label'=>'','id'=>'grupo','readonly' => true,'options' => $grupos, 'empty'=>'Selecione o grupo', 'onchange'=>'grupoFocus()']);
            echo $this->Form->input('conta_grupo',['id'=>'conta', 'readonly'=>true]);
            echo $this->Form->input('descricao',['id'=>'descricao']);
            echo $this->Form->input('uid_inclusao');
            echo $this->Form->input('uid_data_inclusao');
            echo $this->Form->input('uid_alteracao');
            echo $this->Form->input('uid_data_alteracao');
            echo $this->Form->input('status');
        ?>
    </fieldset>
    <?= $this->Form->button(__('Enviar'), ['class' => 'btn-success']) ?>
    <?= $this->Form->end() ?>
</div>

Mais detalhes em:

http://book.cakephp.org/3.0/en/views/helpers/html.html

http://book.cakephp.org/3.0/en/views/helpers/paginator.html

http://book.cakephp.org/3.0/en/views/helpers/form.html

http://book.cakephp.org/3.0/en/views.html

http://book.cakephp.org/3.0/en/core-libraries/form.html

http://book.cakephp.org/3.0/en/core-libraries/email.html

http://book.cakephp.org/3.0/en/views/helpers.html

 

Comments fornecido por CComment

Novo Testamento

ORA, a fé é o firme fundamento das coisas que se esperam, e a prova das coisas que se não vêem.
(Hb, 11:1)

Rotas no Mapa do Google

© 2015 Ribamar FS. All Rights Reserved. Designed By JoomShaper