---
title: Menu lateral de secretarias em páginas Blade estáticas
---

# Menu lateral de secretarias em páginas Blade estáticas

Guia rápido para colocar o **mesmo menu lateral das páginas dinâmicas** (Saiba mais, Serviços, Contatos) em qualquer página `.blade.php` fixa — formulários, landing pages, etc.

**Você só precisa de uma coisa:** o **ID do órgão** (UUID da secretaria no banco).

---

## O que aparece na lateral?

O componente carrega automaticamente, para o órgão informado:

| Bloco | Conteúdo |
|-------|----------|
| **Saiba mais** | Secretário(a), competências, fale conosco e links cadastrados no admin |
| **Serviços** | Páginas HTML públicas daquele órgão (`/servicos/...`) |
| **Contatos** | Telefones cadastrados no admin |

É o mesmo visual das páginas do Gerenciador de HTMLs e das internas de secretaria.

---

## Passo 1 — Descobrir o ID do órgão

1. Acesse o **painel admin** → módulo de **Secretarias / Órgãos** (Structures).
2. Abra o órgão responsável pela página (ex.: SDSP para Família Acolhedora).
3. Copie o **ID** do registro — um UUID no formato:

```
0d516e21-12f6-4295-a5dc-129c3a0214b0
```

> Esse ID é o `structure_id`. Guarde na página onde for usar; não precisa de arquivo em `/config`.

---

## Passo 2 — Escolher o componente

Existem **dois** componentes. Na maioria dos casos, use o **wrapper** (opção A).

### Opção A — Página inteira com grid 9 + 3 (recomendado)

Envolve o conteúdo da página e já monta a coluna lateral.

**Arquivo:** `resources/views/components/portal/page-with-structure-sidebar.blade.php`

```blade
@extends('layouts.pmar.theme')

@section('content')
<x-portal.page-with-structure-sidebar structure-id="COLE_O_UUID_AQUI">
    {{-- Todo o conteúdo da sua página fica aqui dentro --}}
    <h1 class="mb-5 fw-bold">{{ __('Título da página') }}</h1>
    <p>{{ __('Texto, formulário, imagens...') }}</p>
</x-portal.page-with-structure-sidebar>
@endsection
```

**Exemplo real no projeto:** `resources/views/paginas/formularios/familia-acolhedora/index.blade.php`

```blade
<x-portal.page-with-structure-sidebar structure-id="0d516e21-12f6-4295-a5dc-129c3a0214b0">
    <div id="conteudo" class="content nopadding single-article post type-post espaco_conteudo">
        ...
    </div>
</x-portal.page-with-structure-sidebar>
```

### Opção B — Só a coluna lateral

Use quando a página **já tem** o grid `row` + coluna principal e você só quer encaixar o menu.

**Arquivo:** `resources/views/components/portal/structure-sidebar.blade.php`

```blade
<div class="container">
    <div class="row gx-5 gy-5">
        <div class="internas-secretarias-home-news col-lg-9 col-md-9 col-sm-12">
            {{-- seu conteúdo --}}
        </div>

        <x-portal.structure-sidebar structure-id="COLE_O_UUID_AQUI" />
    </div>
</div>
```

---

## Passo 3 — Migrar uma página que não tinha lateral

### Antes (sem menu lateral)

```blade
@section('content')
<div class="container">
    <div class="row">
        <section class="col-12 col-md-9">
            <h1>{{ __('Minha página') }}</h1>
            ...
        </section>
    </div>
</div>
@endsection
```

### Depois (com menu lateral)

1. **Remova** o `<div class="container">`, `<div class="row">` e a `<section class="col-md-9">` externos.
2. **Envolva** o miolo com `<x-portal.page-with-structure-sidebar structure-id="...">`.
3. **Cole** o UUID do órgão no atributo `structure-id`.
4. **Não altere** o conteúdo interno (textos, formulário, imagens).

```blade
@section('content')
<x-portal.page-with-structure-sidebar structure-id="0d516e21-12f6-4295-a5dc-129c3a0214b0">
    <h1>{{ __('Minha página') }}</h1>
    ...
</x-portal.page-with-structure-sidebar>
@endsection
```

O layout fica igual às páginas dinâmicas do portal, sem copiar HTML dos blocos Saiba mais / Serviços / Contatos.

---

## Como passar o ID — formas corretas

| Forma | Quando usar | Exemplo |
|-------|-------------|---------|
| **String direta** | Quase sempre — mais simples | `structure-id="0d516e21-12f6-4295-a5dc-129c3a0214b0"` |
| **Variável do controller** | ID vindo do backend | `:structure-id="$structureId"` |

### O que NÃO fazer

```blade
{{-- ERRADO: config() lê chaves de configuração, não é para colar o UUID --}}
<x-portal.page-with-structure-sidebar :structure-id="config('0d516e21-12f6-4295-a5dc-129c3a0214b0')">
```

`config('alguma-coisa')` só funciona para chaves definidas em arquivos como `config/app.php`.  
Passar o UUID como nome da chave retorna `null` e **a lateral não aparece**.

---

## Props disponíveis

### `x-portal.page-with-structure-sidebar`

| Prop | Obrigatório | Padrão | Descrição |
|------|-------------|--------|-----------|
| `structure-id` | Sim | — | UUID do órgão no admin |
| `main-col-class` | Não | `internas-secretarias-home-news col-lg-9 col-md-9 col-sm-12` | Classes da coluna de conteúdo |

Exemplo com classe customizada na coluna principal:

```blade
<x-portal.page-with-structure-sidebar
    structure-id="0d516e21-12f6-4295-a5dc-129c3a0214b0"
    main-col-class="col-lg-9 col-md-9 col-sm-12"
>
```

### `x-portal.structure-sidebar`

| Prop | Obrigatório | Padrão | Descrição |
|------|-------------|--------|-----------|
| `structure-id` | Sim | — | UUID do órgão |
| `aria-label` | Não | Traduzível | Texto de acessibilidade do `<aside>` |

---

## Onde os dados vêm?

A lógica está em `app/Support/StructureSidebar.php`. Ela busca no banco:

- `structures` — órgão com `status = ATIVADO`
- `links` — links laterais do órgão
- `htmls` — serviços HTML visíveis do órgão
- `phones` — telefones do órgão

Os blocos visuais são os **mesmos partials** já usados no portal:

- `resources/views/paginas/parts/links.blade.php`
- `resources/views/paginas/parts/servicos.blade.php`
- `resources/views/paginas/parts/telefones.blade.php`

Para alterar o que aparece na lateral, edite os cadastros no **admin do órgão** (links, telefones, páginas HTML), não a Blade estática.

---

## Resolução de problemas

### A lateral não aparece

| Causa provável | O que verificar |
|----------------|-----------------|
| UUID errado ou vazio | Conferir o ID no admin do órgão |
| Órgão desativado | `status` do Structure precisa ser `ATIVADO` |
| `config()` usado com UUID | Use `structure-id="uuid"` direto |
| Cache de views | Rodar `php artisan view:clear` |

### A lateral aparece vazia em algum bloco

- **Saiba mais vazio:** cadastre links em Admin → Links do órgão.
- **Serviços vazio:** crie páginas HTML com `structure_id` do órgão e `visibility = ATIVADO`.
- **Contatos vazio:** cadastre telefones em Admin → Telefones do órgão.

### Em mobile a lateral fica abaixo do conteúdo

Comportamento normal do Bootstrap (`col-lg-3` só fica ao lado em telas médias/grandes). Igual às demais páginas do portal.

---

## Checklist rápido

- [ ] Copiei o UUID do órgão no admin
- [ ] Envolvi o conteúdo com `<x-portal.page-with-structure-sidebar structure-id="...">`
- [ ] Removi `container` / `row` / `col-md-9` duplicados na borda externa
- [ ] Mantive `{{ __('...') }}` nos textos visíveis
- [ ] Não usei `config()` para passar o UUID
- [ ] Testei em desktop e mobile

---

## Resumo em uma linha

> Cole o UUID do órgão em `structure-id` e envolva sua página com `<x-portal.page-with-structure-sidebar>` — pronto, menu lateral igual ao das secretarias.
