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 $data
array. 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 $data
array 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”
Really clean site, appreciate it for this post. Dorice Fonsie Parsifal