1. MVC
CodeIgniter는 MVC 아키텍처(컨트롤 레이어, 모델 레이어, 뷰 레이어)를 채택합니다.
애플리케이션 아래 폴더에 해당(그림 1):
모든 새 파일은 .php로 끝납니다.
뷰 레이어 뷰 폴더는 HTML 템플릿에 배치됩니다.
모델 계층 모델은 데이터베이스 작업을 위한 코드를 저장합니다
제어 계층 컨트롤러는 논리적 판단을 위한 코드를 저장하고 모델 계층에서 데이터를 얻은 후 뷰 계층으로 보냅니다. 사용자.
그림 1
기능:
1. 템플릿이 입력 양식을 추가합니다
2. 데이터에 대한 수신 양식 코드를 생성하고 사용자 입력에 대한 간단한 유효성 검사를 수행합니다.
3. 양식 위에 제목, 텍스트, 출시 시간을 출력합니다.
사용된 지식 포인트: CI 도우미 클래스(url) 및 입력 클래스(입력),
및 CI ActiveRecord 및 값을 템플릿에 전달합니다.
2. 초기 구성
1. 데이터베이스 연결
데이터베이스 구성 수정:/application/config/database.php
'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'test', 'dbdriver' => 'mysqli', 'dbprefix' => 'ts_',
2. 기본 경로 수정
CI 프레임워크는 단일 파일 입력 방식을 채택하며, 컨트롤 레이어는 기본적으로 index.php를 통해 접근해야 합니다. 예를 들어, 컨트롤러 폴더 아래에 test라는 클래스가 있고 test에는 home이라는 함수가 있습니다.
액세스 URL은 http://www.example.com/index.php/test/home입니다.
3. 출력 페이지
1. HTML 템플릿 직접 출력
Controllers 폴더와 views 폴더에 두 개의 새 파일을 생성합니다
Test.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Test extends CI_Controller { public function home() { $this->load->view('home'); } } home.php <?php defined('BASEPATH') OR exit('No direct script access allowed'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Home</title> </head> <body> <h1>这是我们的主页</h1> </body> </html>
브라우저에서 다음과 유사한 주소를 엽니다: http://test.com/index.php/test/home
2. 데이터베이스 항목 삽입
ts_news 데이터베이스 테이블 생성
Test.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Test extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('url'); $this->load->model('news_model'); } public function home() { $this->load->view('home'); } public function add_news(){ $title = $this->input->get('title',TRUE); $content = $this->input->get('content'); if ( (strlen($title) < 20 ) or (strlen($content) < 20 ) ){ echo '标题或正文内容过短'; return false; } $arr = array( 'id' => '', 'title' => $title, 'content' => $content, 'update_time' => time(), 'create_time' => time() ); $check = $this->news_model->insert($arr,'news'); if ($check) { redirect('test/home'); } else { echo '提交失败'; } } } home.php <?php defined('BASEPATH') OR exit('No direct script access allowed'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Home</title> </head> <body> <h1>这是我们的主页</h1> <hr> <form action="<?php echo site_url('test/add_news'); ?>"> <label for="title">标题</label> <input type="text" name="title" value=""> <br> <label for="content">正文</label> <textarea name="content" cols="30" rows="10"></textarea> <br> <input type="submit" value="提交" > </form> </body> </html> News_model.php <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class News_model extends CI_Model { public function __construct() { parent::__construct(); $this->load->database(); } public function insert($arr,$table) { $this->db->insert($table, $arr); if ($this->db->affected_rows() > 0) { return $this->db->insert_id(); } else { return FALSE; } } } 412ded80-4884-4a2f-ae37-6ba69cdc4278 493498ee-0f5c-4676-9cec-38e5a3f3e6fd 3. 查询数据库并输出 News_model.php增加 public function get_all($table) { $this->db->select('*'); $query = $this->db->get($table); $query = $query->result_array(); return $query; } Test.php 的 home修改为: public function home() { $news = $this->news_model->get_all('news'); $data['news'] = $news; $this->load->view('home',$data); }
홈 템플릿의 본문이 다음으로 수정되었습니다.
<body> <h1>这是我们的主页</h1> <?php foreach ($news as $key => $value) { echo '<div> <h3>'.$value['title'].'</h3> <span>发布时间:'.date('Y-m-d H:i:s',$value['create_time']).'</span> <p>'.$value['content'].'</p> </div>'; } ?> <hr> <form action="<?php echo site_url('test/add_news'); ?>"> <label for="title">标题</label> <input type="text" name="title" value=""> <br> <label for="content">正文</label> <textarea name="content" cols="30" rows="10"></textarea> <br> <input type="submit" value="提交" > </form> </body>
효과를 보려면 새로고침하세요.
위 내용은 CodeIgniter 입문 튜토리얼의 첫 번째 부분인 정보 공개(Information Release)를 내용의 일부로 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.