Formulário de Notícias – Codeigniter

Crie itens de notícias

Agora você sabe ler dados de um banco de dados usando o CodeIgniter, mas ainda não gravou nenhuma informação no banco de dados. Nesta seção, você expandirá seu controlador de notícias e modelo criado anteriormente para incluir esta funcionalidade.

Crie um formulário

Para inserir dados no banco de dados, você precisa criar um formulário onde pode inserir as informações a serem armazenadas. Isso significa que você precisará de um formulário com dois campos, um para o título e outro para o texto. Você derivará o slug de nosso título no modelo. Crie a nova visualização em application / views / news / create.php .

< h2 > <? php  echo  $ title ;  ?> </ h2 >

<? php  echo  validation_errors ();  ?>

<? php  echo  form_open ( 'news / create' );  ?>

< Rótulo  para = "título" > Título </ rótulo > 
< entrada  tipo = "texto"  nome = "título"  /> < br  />

< Rótulo  para = "texto" > texto </ rótulo > 
< textarea  nome = "texto" > </ textarea > < br  />

< input  type = "submit"  name = "submit"  value = "Criar item de notícias"  />

</ form >

 

Existem apenas duas coisas aqui que provavelmente não parecem familiares para você: a form_open()função e a validation_errors()função.

A primeira função é fornecida pelo auxiliar de formulário e renderiza o elemento do formulário e adiciona funcionalidade extra, como adicionar um campo de prevenção de CSRF oculto . O último é usado para relatar erros relacionados à validação do formulário.

Volte para o seu controlador de notícias. Você vai fazer duas coisas aqui, verificar se o formulário foi enviado e se os dados enviados foram aprovados nas regras de validação. Você usará a biblioteca de validação de formulário para fazer isso.

public  function  create () 
{ 
    $ this -> load -> helper ( 'formulário' ); 
    $ this -> carregar -> biblioteca ( 'form_validation' );

    $ data [ 'title' ]  =  'Criar uma notícia' ;

    $ this -> form_validation -> set_rules ( 'título' ,  'Título' ,  'obrigatório' ); 
    $ this -> form_validation -> set_rules ( 'texto' ,  'Texto' ,  'obrigatório' );

    if  ( $ this -> form_validation -> run ()  ===  FALSE ) 
    { 
        $ this -> load -> view ( 'templates / header' ,  $ data ); 
        $ this- > load- > view ( 'news / create' ); 
        $ this- > load- > view ( 'templates / footer' );

    } 
    else 
    { 
        $ this -> news_model -> set_news (); 
        $ this -> load -> view ( 'notícias / sucesso' ); 
    } 
}

O código acima adiciona muitas funcionalidades. As primeiras linhas carregam o auxiliar de formulário e a biblioteca de validação de formulário. Depois disso, as regras para a validação do formulário são definidas. O set_rules()método leva três argumentos; o nome do campo de entrada, o nome a ser usado nas mensagens de erro e a regra. Nesse caso, o título e os campos de texto são obrigatórios.

O CodeIgniter possui uma biblioteca de validação de formulários poderosa, conforme demonstrado acima. Você pode ler mais sobre esta biblioteca aqui .

Continuando para baixo, você pode ver uma condição que verifica se a validação do formulário foi executada com êxito. Se não foi, o formulário é exibido, se foi enviado e passou em todas as regras, o modelo é chamado. Depois disso, uma visualização é carregada para exibir uma mensagem de sucesso. Crie uma visualização em application / views / news / success.php e escreva uma mensagem de sucesso.

Modelo

A única coisa que resta é escrever um método que grava os dados no banco de dados. Você usará a classe Query Builder para inserir as informações e usar a biblioteca de entrada para obter os dados postados. Abra o modelo criado anteriormente e adicione o seguinte:

função  pública set_news () 
{ 
    $ this -> carregar -> helper ( 'url' );

    $ slug  =  url_title ( $ this -> input -> post ( 'título' ),  'traço' ,  TRUE );

    $ data  =  array ( 
        'title'  =>  $ this -> input -> post ( 'title' ), 
        'slug'  =>  $ slug , 
        'text'  =>  $ this -> input -> post ( 'text' ) 
    );

    return  $ this -> db -> insert ( 'news' ,  $ data ); 
}

Este novo método se encarrega de inserir a notícia no banco de dados. A terceira linha contém uma nova função, url_title (). Esta função – fornecida pelo auxiliar de URL – remove a string que você passa, substituindo todos os espaços por travessões (-) e garante que tudo esteja em caracteres minúsculos. Isso deixa você com um bom slug, perfeito para criar URIs.

Vamos continuar preparando o registro que será inserido posteriormente, dentro do $dataarray. Cada elemento corresponde a uma coluna na tabela do banco de dados criada anteriormente. Você pode notar um novo método aqui, a saber, o post()método da biblioteca de entrada . Este método garante que os dados sejam limpos, protegendo você de ataques desagradáveis ​​de outras pessoas. A biblioteca de entrada é carregada por padrão. Por fim, você insere nosso $dataarray em nosso banco de dados.

Encaminhamento

Antes de começar a adicionar novos itens em seu aplicativo CodeIgniter, você deve adicionar uma regra extra ao arquivo config / routes.php . Certifique-se de que seu arquivo contém o seguinte. Isso garante que o Code Igniter veja ‘criar’ como um método em vez de um slug de um item de notícias.

$ route [ 'news / create' ]  =  'news / create' ; 
$ route [ 'news / (: any)' ]  =  'news / view / $ 1' ; 
$ route [ 'news' ]  =  'news' ; 
$ route [ '(: any)' ]  =  'pages / view / $ 1' ; 
$ route [ 'default_controller' ]  =  'pages / view' ;



			

One Reply on “Formulário de Notícias – Codeigniter”

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *