Criação de fonte de arquivo Modx revo com upload. MODx Revolution: criando recursos e carregando arquivos do frontend

No Evolution, tudo era bem simples: você cria direitos para o usuário e pronto! E aqui você precisa fazer muitos passos, mas por outro lado - no Modx Revolution com os direitos de documentos e arquivos, você pode fazer o que quiser (a menos, é claro, que você entenda isso). Bem, vamos começar!

1. Vá para "Segurança" - "Controle de Acesso" no menu superior do painel de administração

2. Vá para a guia "Política de Acesso"

3. Clique no botão "Criar política de acesso"

Uma janela com campos será aberta. No campo Nome escrevemos "gerente", o modelo de política de acesso é AdministratorTemplate. Clique no botão salvar

4. Após salvar a política de acesso "manager", vemos que ela apareceu em nossa lista de políticas de acesso

5. Gerenciador de edição

6. Remova as caixas de seleção de parâmetros desnecessários

Na parte inferior desta página que se abre, há uma lista de opções (permissões). Precisamos desmarcar os parâmetros que são responsáveis ​​por exibir quaisquer recursos no painel de administração para evitar editar ou excluir os documentos, arquivos, elementos necessários para que o site funcione corretamente.

Desmarque as caixas das seguintes opções:

  • access_permissions Exibir página com configurações de direitos de acesso do usuário
  • painéis Exibir e gerenciar painéis
  • element_tree Capacidade de visualizar a árvore de elementos na navegação esquerda
  • menu_reports Mostrar "Relatórios" no menu superior
  • menu_security Mostra o item "Segurança" no menu superior
  • menu_system Mostra o item "Sistema" no menu superior
  • menu_tools Mostrar "Ferramentas" no menu superior
  • new_static_resource Crie novos recursos estáticos.
  • remove_locks Remova todos os bloqueios do site

7. Vá para a aba "Segurança" - "Controle de Acesso" - "Funções"


8. Clique no botão "Criar novo", no campo Nome que dirigimos em Manager, Rank - 9, clique no botão "Salvar"


9. Salve as alterações e acesse o menu "Segurança" - "Controle de Acesso" - "Grupos de Usuários"


Clique com o botão direito do mouse em "Administrador" e clique em "Criar grupo de usuários"

10. Crie um novo grupo: Nome - Gerente, Política de back-end - sem política, clique em "Salvar"

11. Nós o encontramos na lista de Grupos de Usuários e clicamos em "editar"

12. Acesse o menu "Acesso a contextos" e clique em "Adicionar contexto"

13. Contexto - gerente, Função mínima - Gerente - 9, Política de acesso - Gerente

14. Adicionando outro contexto

Ou melhor, editamos a web existente: Contexto - web, Função mínima - Gerente - 9, Política de acesso - Administrador. Clique no botão "Salvar"

15. Veremos tal imagem! Salvamos tudo na guia "Grupo de usuários: Gerenciador"

16. A seguir: "Segurança" - "Gerenciamento de usuários"

17. Crie um novo usuário (este será nosso cliente) - clique no botão "Novo usuário".

Você pode dar a ele qualquer nome, eu vou chamá-lo de gerente

18. Nome de usuário - gerente, clique na caixa de seleção - Ativo, dirigir no e-mail

19. Especifique uma senha

20. Antes de salvar, vá para a aba "Permissões"

21. Clique no botão "Adicionar usuário ao grupo", Grupo de usuários - "Gerente", Função - "Gerente"

Nós salvamos. Isso completa a criação do painel de administração, onde o cliente tem acesso apenas para editar e criar páginas na árvore de documentos. Mas esse usuário ainda tem acesso a todos os arquivos do sistema. E assim agora faremos com que ele tenha acesso a apenas uma pasta, que criaremos na raiz do site Modx Revolution

22. Vá para a aba "Ferramentas" - "Fontes de arquivo"

23. Uma lista de todas as fontes de arquivos será aberta. Por padrão, apenas um é criado - Sistema de arquivos

Antes de criar uma nova fonte de arquivo, você deve primeiro modificá-la. Clique em "Filesystem" com o botão direito do mouse e selecione "Edit"

24. Uma janela como esta será aberta. Clique em "Adicionar grupo de usuários"

25. Grupos de usuários - Administrador, Função mínima - Superusuário - 0, Política - Administrador de fonte de mídia. Clique em "Salvar"

26. Retorne às fontes de arquivo e crie uma nova fonte de arquivo

Vamos chamá-lo de "Gerenciador", Origem do arquivo Tim - Sistema de arquivos

27. Clique com o botão direito do mouse na nova fonte de arquivo "Gerenciador" e selecione "Editar"

28. Essa janela se abrirá! Precisamos alterar os primeiros 4 parâmetros

Em basePath, no campo de valor, dirigimos /Gerente/, basePathRelative e baseUrlRelative saem como estão com os valores "Yes", no campo baseUrl escrevemos Gerente/

29. Vá para o parâmetro tv

30. Clique na guia mais recente "Fontes de arquivo"

e altere a fonte do arquivo de "Filesystem" para "Manager". Salve !

31. Adicione um grupo de usuários ao "Gerente"

Agora, após todas as etapas realizadas, vá em "Fonte do arquivo" - "Gerenciador" e adicione um grupo de usuários a esta fonte de arquivo

32. Grupos de usuários - Gerente, Função mínima - Gerente - 9, Política - Administrador de fonte de mídia. Clique em "Salvar"

Imediatamente após salvar, a fonte do arquivo "Gerenciador" desaparecerá para o administrador. Para poder editar esta fonte de arquivo, você precisa ir ao menu "Segurança - Controle de Acesso". Abra o grupo de gerenciadores para edição: Gerenciador e na guia "Fontes de arquivo" encontre e exclua o gerenciador de origem . Só então podemos editar novamente determinada fonte sob o administrador.

33. Por precaução, limpe o cache

e nosso usuário com direitos limitados e acesso a sistema de arquivo criado!

Não vou dizer que é fácil o suficiente, mas se você fizer isso automaticamente, não parecerá algo difícil. Espero que tenha dado tudo certo para você! Boa sorte com seus projetos!

Um artigo que analisa como Revolução MODX um sistema de direitos de acesso é organizado, bem como algumas instruções típicas para definir permissões para usuários.

Sistema de permissão no MODX

O MODX Revolution não permite atribuir permissões diretamente a um usuário. Neste sistema esta acção Através dos grupo de usuários.

Em outras palavras, para conceder alguns direitos ao usuário, é necessário:

  • crie um grupo e atribua os privilégios necessários a ele;
  • colocar um ou mais usuários neste grupo.

Mas ser usuário de um grupo não significa que ele receberá todos os seus privilégios. Os direitos que o usuário receberá serão determinados pela função atribuída a ele neste grupo. A função (classificação) do usuário no grupo é definida usando um número de 0 a 9999. Esse valor determina qual usuário receberá privilégios de grupo e qual não receberá.

Em outras palavras Função- este é um tipo de mecanismo que permite atribuir diferentes direitos a diferentes usuários dentro do mesmo grupo.

Vamos dar um pequeno exemplo.


Neste exemplo:

  • Do utilizador Usuário1 pertence ao grupo Grupo 1. Tem aqueles privilégios de grupo cujo papel é mais 2000 .
  • Do utilizador Usuário2 está em 2 grupos. Tem 2 privilégios de grupo. Do primeiro grupo Grupo 1) tem aqueles privilégios cujo papel é maior ou igual a 1000 . E a partir do segundo ( grupo2) - aqueles privilégios cujo papel é maior ou igual a 9999 .
  • Do utilizador Usuário3 está em um grupo grupo2. Este grupo lhe dá aqueles direitos cujo papel é maior ou igual a 5000 .

Política de acesso no MODX

A configuração de privilégios para um grupo no MODX Revolution é feita usando políticas de acesso. Ela (a política de acesso) é atribuída a um grupo em relação a determinadas entidades MODX, ou seja, o contexto, o grupo de recursos, a categoria do elemento, a origem do arquivo e o namespace. Além disso, também indica papel mínimo, que o usuário deste grupo precisa ter esses privilégios.

Considere uma imagem.

Privilégios que os usuários de um grupo recebem, dependendo do papel que cada um desempenha nele

Neste exemplo:

  • Do utilizador Usuário1(função no Grupo1 - 2000 ) tem todos os privilégios de grupo Grupo 1, cujo papel é maior ou igual a 2000. Ou seja, isto K1, K2 e G2.
  • Do utilizador Usuário2 tem o papel mais alto no grupo (0) e, portanto, todos os seus privilégios ( K1, K2, G1 e G2).
  • Do utilizador Usuário3 tem no grupo Grupo 1 o papel mais baixo 9999 ). De acordo com isso, ele pode executar ações no sistema definido em K2 e G2.

Uma política de acesso é um conjunto de direitos concedidos a um usuário para executar ações em um site executando o CMS MODX Revolution.

Por que é implementado desta forma? Isso se deve ao fato de que há muitos direitos no MODX e é mais conveniente atribuí-los em grupos (ou seja, usando uma política de acesso), em vez de um de cada vez.

Por exemplo, a política de acesso Carregar, listar e visualizar tem o seguinte conjunto de permissões:

  • carregar (carregar objetos);
  • list (obtenha uma coleção de objetos);
  • visualizar (objetos de visualização).

Como criar sua própria política de acesso

Ao definir permissões para um grupo de usuários, você não está limitado às políticas existentes (pré-instaladas) no sistema MODX. Você pode criar novos, se necessário. A criação de políticas no MODX é baseada em modelo de política de acesso. Um modelo de política de acesso é uma entidade MODX Revolution que define a lista máxima de permissões disponíveis quando uma política de acesso é criada.

Assim, para crie uma política de acesso com as permissões necessárias necessário:

  1. Encontre um modelo de política de acesso adequado (se necessário, edite um existente ou crie um novo).
  2. Crie uma política de acesso selecionando o modelo apropriado.
  3. Inclua de toda a lista de permissões oferecidas pelo modelo, apenas aquelas que você deseja conceder aos usuários (se eles tiverem essa política).
Como o conjunto de permissões de política de acesso disponíveis é determinado

Ao criar uma política de acesso, sempre comece atribuindo o número mínimo de direitos que um usuário precisa para realizar determinadas ações no sistema. Se necessário, você sempre pode expandir as permissões concedidas ao usuário.

Usuário anônimo

No MODX Revolution, qualquer visitante não autorizado do site é anônimo e pertence ao grupo (anônimo). Você pode verificar isso facilmente se criar o snippet a seguir, fazer sua chamada no modelo de recurso e abrir a página.

Código do snippet de PHP GetUser:

usuario->get("usuario");

Chamando um snippet em uma página:

[[!GetUser]]

Resultado do trabalho:

(anônimo)

As ações de usuários anônimos no site no MODX são reguladas pela configuração de permissões de grupo (anônimo). Se necessário, você pode conceder privilégios adicionais a este grupo ou restringi-los.

Instruções típicas para definir permissões

Nesta seção, veremos as instruções que você pode usar quando precisar:

  • restringir o acesso a determinados recursos para usuários anônimos;
  • crie um gerenciador de conteúdo que precise ter acesso para trabalhar com recursos no painel de administração, bem como a capacidade de fazer upload de fotos.

Restringir o acesso a determinados recursos

Vamos considerar um exemplo em que restringimos o acesso de usuários anônimos a determinados recursos (por exemplo, a uma conta pessoal, à página "Alterar senha", etc.). O acesso a esses recursos será fornecido apenas a usuários registrados.

Para fazer isso você precisa:

  1. Crio Usuários do grupo de recursos(Conteúdo -> Grupos de Recursos -> botão "Criar Grupo de Recursos"). No formulário que aparece, digite no campo "Nome" - Comercial e clique no botão "Salvar". Coloque os recursos necessários nele (acesso ao qual você deseja restringir para visitantes anônimos).
  2. Crio grupo de usuários Usuários(ícone de engrenagem -> Controle de acesso -> botão Novo grupo de usuários). Na caixa de diálogo que se abre, digite no campo "Nome" - Comercial, "Contextos" - rede, "Políticas de back-end" - (sem política).
  3. Mude para o modo de edição de grupo (no menu de contexto Usuários, selecione o item "Editar grupo de usuários").
  4. Abra a guia "Permissões" e nela "Acesso a grupos de recursos". Clique no botão "Adicionar grupo de recursos" e preencha o formulário que se abre ("Grupo de recursos" - grupo, "Contexto" - (rede), O papel mínimo é Membro (9999), "Política de Acesso" - Carregar, listar e visualizar).

Depois disso, qualquer usuário anônimo ou outro (que não tenha direitos) receberá recurso 404(porque ele nem sequer tem o direito carga) se ele tentar abrir alguma página deste grupo.

Se você deseja que usuários anônimos, ao abrir páginas protegidas, sejam enviados para algum outro (por exemplo, autorização), você deve executar adicionalmente o seguinte (ou seja, conceder o direito carga para este grupo de recursos):

  1. Aberto configurações de sistema(Ícone de engrenagem -> Configurações do sistema). Selecione o namespace "core", seção "Site". Localizar parâmetro página_não autorizada(Página de erro 403 "Acesso negado") e especifique como um valor - ID do recurso, contendo o formulário "Autorização".
  2. Mudar para o modo de edição de grupo (anônimo). Na seção "Acesso a grupos de recursos" (guia "Permissões"), adicione Usuários do grupo de recursos e defina os direitos necessários para isso (neste caso, "Contexto" - (rede), O papel mínimo é Membro (9999), "Política de Acesso" - Carregar apenas).
Configurando o acesso ao grupo de recursos Usuários para usuários anônimos

Configurando permissões para o gerenciador de conteúdo

Neste exemplo, criaremos um grupo de “Gerentes”, cujos usuários poderão fazer upload de imagens para um diretório no painel de administração e trabalhar com determinados recursos.

Para fazer isso, você pode, por exemplo, usar a seguinte instrução:

1. Crie um novo Gerenciador de política de acesso com os direitos necessários:

  • Abra a página "Controle de Acesso" (ícone "Engrenagem" -> Controle de Acesso) e vá para a guia "Política de Acesso".
  • Faça uma cópia da política "Editor de conteúdo".
  • Edite a cópia criada, ou seja, altere o campo de nome para Manager e marque as caixas ao lado dos direitos directory_list, file_list, file_manager, file_remove, file_tree, file_upload. Como resultado, a política de acesso do Gerente terá 30 permissões. Isso deve ser feito para conceder ao usuário direitos para trabalhar com arquivos.
  • Clique no botão "Salvar".
Formulário de configuração de política de acesso do gerente

2. Oculte recursos aos quais os gerentes não devem ter acesso no painel de administração:

  • Abra a página Grupos de Recursos e clique no botão Criar Grupo de Recursos.
  • No formulário que se abre, digite o "Nome" - Fechado para gerentes, "Contextos" - gerente e marca Opção "Conceder acesso automaticamente ao grupo Administrador".
  • Clique no botão "Salvar".
  • Arraste para o grupo criado os recursos que precisam ficar ocultos para os gerentes no painel de administração.

3. Forneça acesso ao diretório onde o usuário fará upload de fotos.

  • Abra a página "Fontes de arquivo", clique no botão "Criar nova fonte arquivos".
  • No formulário que se abre, digite o texto no campo "Nome" imagens, em "Descrição" - Imagens, em "Tipo de origem do arquivo" - Sistema de arquivo.
  • Clique no botão "Salvar".
  • Edite a fonte de arquivo recém-criada (botão direito do mouse -> Editar ação).
  • Altere o valor dos parâmetros: basePath - ativos/imagens/, baseUrl - ativos/imagens/, permitidoFileTypes - jpg, jpeg, png, gif.
  • Clique no botão "Salvar".
Configurando a origem do arquivo Imagens

Uma fonte de arquivo que não tenha um grupo de usuários associado a ela estará disponível para todos os usuários de back-end. Portanto, para evitar que os usuários do grupo Gerentes mostrem outras origens de arquivo que não estejam associadas a mais de um grupo, eles podem, por exemplo, ser atribuídos ao grupo de usuários Administrador.

MODX - Associando uma fonte de arquivo do sistema de arquivos ao grupo de administradores

O sistema de controle de acesso MODX, utilizando a fonte dos arquivos, permite que diferentes usuários especifiquem determinados diretórios aos quais terão acesso, bem como determinar o conjunto de seus privilégios neles. Em outras palavras, é um sistema que, por exemplo, pode ser usado para fornecer a alguns usuários alguns diretórios e outros - outros.

4. Criar novo grupo Comercial e atribuir-lhe os direitos necessários.

  • Abra a página "Controle de acesso", vá para a guia "Grupos de usuários e usuários", clique no botão "Novo grupo de usuários".
  • Na caixa de diálogo que se abre, preencha os seguintes campos: "Nome" - gerentes; "Descrição" - Gerentes; "Contextos" - web, gerente; "Política de back-end" - Gerente.
  • Clique no botão "Salvar".
  • Mude para o modo de edição do grupo de usuários recém-criado “Gerentes” (clique com o botão direito do mouse no grupo -> item no menu de contexto “Editar”).
  • Vá para a guia "Permissões".
  • Abra a seção "Acesso a contextos". Acesso ao contexto rede: "Papel mínimo" - Membro (9999); Política de acesso - Carregar, listar e visualizar. Acesso ao contexto gerente: "Papel mínimo" - Membro (9999), Política de acesso - Gerente.
  • Na seção "Acesso à origem do arquivo", adicione uma nova entrada com os seguintes valores: "Fonte" - imagens; "Papel mínimo" - Membro (9999), "Política de Acesso" - Administrador de origem de mídia.
  • Clique no botão "Salvar"

5. Criar do utilizador e adicione-o ao grupo "Gerente". Defina o valor da função para 9999 (Membro). Este papel será suficiente para ele obter todas as permissões deste grupo. Isso se deve ao fato de que para esse grupo não atribuímos políticas de acesso que exigiriam um papel maior que 9999.

Adicionando um usuário ao grupo Gerente (função de membro)

Boa tarde a todos os leitores do blog WebHow! Eu finalmente encontrei um ótimo plugin de destaque de código de artigo, e agora posso ir direto ao assunto. Então, brincadeiras à parte, hoje haverá um post duro para quem sonha em organizar um mural, catálogo ou qualquer outro serviço em seu site MODx, onde os próprios visitantes postarão seu conteúdo.

Quem conhece pelo menos um pouco o MODx sabe que, para postar conteúdo, o usuário deve ter acesso ao painel de administração. Claro, você não quer distribuí-lo para a esquerda e para a direita. Portanto, é necessário garantir que os usuários possam criar recursos e fazer upload de arquivos para eles diretamente das páginas do site.

Não sou programador, e quando tive que criar um quadro de mensagens no MODx, tudo o que pude fazer foi procurar uma solução pronta. Havia algumas opções diferentes para um trecho que permitiria a publicação de um recurso do frontend para o MODx Revolution.

O princípio é aproximadamente o mesmo para todos: com a ajuda do FormIt, é criada uma página com um formulário, na chamada da qual o nome do trecho é escrito. Cada tipo de anúncio tem seus próprios campos de TV, por exemplo, cidade, número de telefone ou um campo para upload de imagens. Quando o usuário envia o formulário, o recurso é criado.

No entanto, quase todos os trechos que encontrei eram muito complicados: cada parâmetro de TV tinha que ser escrito no código do trecho, e isso não me agradava. Porque para cada tipo de anúncio, eu concebi pelo menos 3 campos adicionais, e escrevo todos eles em um snippet... não, existe uma maneira melhor e mais fácil. Foi encontrado por mim na parte em inglês do fórum oficial do MODx.com E se você não fala e lê inglês muito bem ou está com preguiça de procurar uma opção adequada de vários no tópico, vou lhe dizer como para usá-lo.

Sobre este tópico, gravei uma instrução em vídeo passo a passo. Você encontrará todos os materiais para isso logo abaixo do player.

trecho de código formit2resource

getObject("modResource",array("id"=>$hook->getValue("resource_id"))); if (empty($doc))( $doc = $modx->newObject("modResource"); $doc->set("createdby", $modx->user->get("id")); ) else ( $doc->set("editedby", $modx->user->get("id")); ) $allFormFields = $hook->getValues(); foreach ($allFormFields as $field=>$value) ( ​​if ($field !== "spam" && $field !== "resource_id")( $doc->set($field, $value); ) ) $ alias = $doc->cleanAlias($fields["pagetitle"]); if($modx->getCount(modResource, array("alias"=>$alias))!= 0) ( $count = 1; $newAlias ​​= $alias; while($modx->getCount(modResource, array ("alias"=>$newAlias))!= 0) ( $newAlias ​​= $alias; $newAlias.= "-" . $count; $count++; ) $alias = $newAlias; ) $doc- >set("alias" ,$alias); $doc->set("modelo", $modelo); $doc->salvar(); foreach ($allFormFields as $field=>$value) ( ​​if (!empty($value) && $tv = $modx->getObject("modTemplateVar", array ("name"=>$field))) ( /* manipula caixas de seleção e elementos de seleção múltipla */ if (is_array($value)) ( $featureInsert = array(); while (list($featureValue, $featureItem) = each($value)) ( $featureInsert = $featureItem; ) $ value = implode("||",$featureInsert); ) $tv->setValue($doc->get("id"), $value); $tv->save(); ) ) $modx- >cacheManager ->refresh(); retorne verdadeiro;

código de trecho formit2file

usuário->get("id"); // Caminho da raiz que o usuário especifica // cria um caminho exclusivo para este envio de formulário $uploadpath = "assets/uploads/".$mydir."/"; // obtém o caminho completo para a pasta exclusiva $target_path = $modx->config["base_path"] . $uploadpath; // obtém os nomes dos arquivos enviados: $submittedfiles = array_keys($_FILES); // percorre os arquivos foreach ($submittedfiles as $sf) ( // obtém o nome do arquivo e verifica se está correto. $filename = basename($_FILES[$sf]["name"]); // obtém a extensão do arquivo $ ext = pathinfo($filename, PATHINFO_EXTENSION); $ext = mb_strtolower($ext); // não diferencia maiúsculas de minúsculas // é o nome do arquivo vazio (nenhum arquivo carregado) if($filename != "") ( // é este é o tipo certo de arquivo? if(in_array($ext, $ext_array)) ( // limpa o nome do arquivo e torna único $ filename = $counter . "." . $ext; $filename = str_replace(" ", " _" , $filename); // espaços para sublinhar $filename = date("Ym-d_G-i-s_") . $filename; // adiciona data e hora // caminho completo para o novo arquivo $myTarget = $target_path . $filename ; // cria diretório para mover o arquivo se ele não existir mkdir($target_path, 0755, true); // o arquivo foi movido para a pasta apropriada com sucesso? if(move_uploaded_file($_FILES[$sf][ "tmp_name "], $myTarget)) ( // define um novo espaço reservado com o novo caminho completo (se você precisar dele em ganchos subsequentes) $myFile = $upload caminho. $nomedoarquivo; $hook->setValue($sf,$meuArquivo); // define as permissões no arquivo if (!chmod($myTarget, 0644)) ( /*alguma função de depuração*/ ) ) else ( // Arquivo não enviado $errorMsg = "Ocorreu um problema ao enviar o arquivo."; $hook->addError($sf, $errorMsg); $output = false; // gera erro de envio ) ) else ( // Tipo de arquivo não permitido $errorMsg = "Tipo de arquivo não permitido."; $hook->addError ($sf, $errorMsg); $output = false; // gera erro de envio ) // se não houver arquivo, não erro, mas retorna em branco ) else ( $hook->setValue($sf, ""); ) $contador = $contador + 1; ) return $saída;

Amigos! Não se esqueça de substituir seus campos de TV e IDs de seus recursos no código do formulário. Tenha cuidado e você terá sucesso.

Chamar FormIt

[[!FormIt? &hooks=`formit2file,formit2resource,redirect` &redirectTo=`ID da página que contém a mensagem` &template=`ID do modelo de anúncio` ]]

Condição para chamar um pedaço com um formulário

[[!+modx.user.id:is=`0`:then=`É necessária autorização para postar anúncios [[!Loginza? &groups=`3` &profileFields=`username,email,fullname,photo`]]`:else=`[[$form_add]]`]]

Exemplo de código de formulário

[[+fi.error.error_message]]

Nome
[[+fi.error.pagetitle]]
*
Cidade
[[+fi.error.city]]
*

Descrição detalhada

[[+fi.error.content]]

Anexar fotos:

Você pode colocar até cinco fotos no catálogo. Formatos aceitos: .jpg, .png, .gif
Foto ou logotipo principal * [[+fi.error.img]]
Foto adicional (1) [[+fi.error.foto1]]
Foto adicional (2) [[+fi.error.foto2]]
Foto adicional (3) [[+fi.error.foto3]]
Foto adicional (4) [[+fi.error.foto4]]

Condição para exibir uma imagem

[[*img:notempty=``]]
Agora os usuários do seu site podem não apenas colocar anúncios, mas também complementá-los com fotos, assim como em qualquer quadro de avisos. Mas e se ocorrer um erro ao preencher o formulário? Por exemplo, uma pessoa digitou errado e digitou o número de telefone errado, ou talvez quisesse apenas adicionar um anúncio ou alterar o preço do produto.

Eu vou te dizer da próxima vez. E por hoje é só, espero que este artigo tenha sido útil para você.