1. 프로젝트 배포
1. 가상 호스트 배포/로컬 배포
public/index.php를 제거하고 루트 디렉터리/index.php로 변경합니다. 웹사이트 루트 디렉터리에 index.php 파일을 생성하세요. 내용은 다음과 같습니다.
<?php // 定义应用目录 define('APP_PATH', __DIR__ . '/apps/'); // 加载框架引导文件 require './thinkphp/start.php';
기본적으로는 이것이 가장 간단한 구성입니다.
2. 서버 배포
서버 배포 프로젝트 파일 입구는 공개입니다. 장점: 공개 디렉터리에 있는 파일만 외부 네트워크에서 볼 수 있습니다. , 확장, 테스트, 공급업체. 더 간단한 의미는 이러한 파일 아래의 콘텐츠는 도메인 이름을 통해 액세스할 수 없지만 프레임워크 사용에는 영향을 미치지 않는다는 것입니다.
2. 모듈 생성(모듈 자동 생성)
내 프로젝트는 로컬 www/thinkphp 디렉토리에 배포됩니다. 그렇게 하기 전에 프로젝트를 완료하는 데 필요한 모듈 수를 명확하게 고려하십시오.
예제 시작
1. Common(공용 모듈), Home(프런트엔드 모듈), Admin(백엔드 모듈)의 세 가지 모듈을 만듭니다. 공개 모듈은 필수적입니다.
수정의 경우 public 아래에 index.php 이렇게 열어주세요
// 定义应用目录 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php';
맨 마지막에 이 두 문장을 추가해주세요
$build = include '../build.php'; // 运行自动生成 \think\Build::run($build);
build.php 설정 (디렉토리 자동 생성) 매뉴얼 참고 : http://www kancloud.cn/manual/thinkphp5/118021
프로젝트의 루트 디렉터리에 build.php 파일이 있습니다. 파일을 열면 다음과 같은 내용이 표시됩니다.
<?php return [ // 生成应用公共文件 '__file__' => ['common.php', 'config.php', 'database.php'], // 定义demo模块的自动生成 (按照实际定义的文件名生成) 'demo' => [ '__file__' => ['common.php'], '__dir__' => ['behavior', 'controller', 'model', 'view'], 'controller' => ['Index', 'Test', 'UserType'], 'model' => ['User', 'UserType'], 'view' => ['index/index'], ], // 其他更多的模块定义 ];
그런 다음 필요한 파일 이름을 지정합니다. 여기에 추가하세요. 다음과 같이 데모를 직접 주석 처리할 수 있습니다.
<?php return [ // 生成应用公共文件 '__file__' => ['common.php', 'config.php', 'database.php'], //公共模块目录 'common' => [ '__file__' => ['common.php'], '__dir__' => ['controller', 'model','lang'], 'controller' => ['Index'], 'model' => ['Base'], ], // Index模块 'home' => [ '__file__' => ['common.php'], '__dir__' => ['behavior', 'controller', 'model', 'view','lang'], 'controller' => ['Index'], 'model' => ['Test'], 'view' => ['index/index'], ], // Admin 模块 'admin' => [ '__file__' => ['common.php'], '__dir__' => ['behavior', 'controller', 'model', 'view','lang'], 'controller' => ['Index'], 'model' => ['Test'], 'view' => ['index/index'], ], ];
1) SITE_PATH와 RUNTIME_PATH는 모두 나중에 쉽게 호출할 수 있도록 먼저 index.php에 배치됩니다.
2) 이 두 가지는 함께 사용해야 합니다
$build = include './build.php'; // 运行自动生成 \think\Build::run($build);
관련 권장 사항: "ThinkPHP Tutorial"
3. 기본 클래스 만들기
시작하기 전에 먼저 "기본 클래스"를 설정해야 합니다. 왜 모직물인가? 예를 들어, 회원센터 관련 컨트롤러에 접속하려면 해당 컨트롤러에 회원 관련 컨트롤러에 대한 접근을 허용하기 위한 '로그인 제한'이 있어야 하나요? 기본 클래스의 역할이 나옵니다.
1. 세 가지 주요 기본 클래스 생성
원본 기본 클래스
위치: thinkphpappscommoncontrollerbase.php
기능: 기본 모듈, Index 모듈, Admin 모듈 아래의 콘텐츠를 모두 호출할 수 있습니다.
코드:
<?php /** * 原始基类 * */ namespace app\Common\controller; use think\Controller; class Base extends Controller{ public function _initialize() { parent::_initialize(); echo '原始基类'; } public function test1(){ return 'test1'; } }
인덱스 모듈 기본 클래스
위치: thinkphpappscommoncontrollerbase.php
기능: 인덱스 모듈 아래의 컨트롤러는 "기본 클래스를 상속"하고 "기본 클래스를 호출"해야 합니다.
코드:
<?php /** * 前端基类 * */ namespace app\index\controller; use app\Common\controller\Base; class IndexBase extends Base { public function _initialize() { parent::_initialize(); } public function index() { } }
관리 모듈 기본 클래스
위치: thinkphpappscommoncontrollerbase.php
기능: 관리 모듈 아래의 컨트롤러는 "기본 클래스를 상속"하고 "기본 클래스를 호출"해야 합니다.
코드:
/** * 后台首页 * */ namespace app\Admin\controller; use app\Admin\controller\AdminBase; class Index extends AdminBase { public function _initialize() { parent::_initialize(); } public function index() { return $this->fetch(); } }
(사용자 모듈 기본 클래스, 멤버가 있으면 이것도 생성해야 함)
기본 클래스를 만드는 주요 목적은 "상속"과 "호출"입니다.
4. 템플릿 경로를 설정하세요
기본 템플릿 경로는 모듈/뷰 파일에 있습니다. 관리하기 불편하다고 생각하셔서 Template 디렉터리에 설정하고 싶으시면 그렇게 하시면 됩니다.
템플릿 매개변수, 영향을 받을 수 있는 매개변수는 현재 모듈 아래의 config.php template->view_path 매개변수입니다.
실제 작업
1. 공유 매개변수 구성
index 또는 Admin 모듈에서 config.php 호출을 용이하게 하기 위해 apps/config.php에서 일부 매개변수를 설정합니다.
apps/config.php, 일부 매개변수를 추가하세요.
'template' => [// 模板路径 'view_path' => 'template/', // 就是这里 /** * 前台文件配置 * Author: MR.zhou * */ 'index' => [ // 模快名称 'model_name' =>'index', // 默认模板文件名称 'default_template' => 'default', // 这里可以切换模块下的默认模板名称 ], /** * 后台文件配置 * Author: MR.zhou * */ 'admin'=>[ // 模快名称 'model_name' =>'admin', // 默认模板文件名称 'default_template' =>'default', // 这里可以切换模块下的默认模板名称 ],
2. 템플릿 매개변수 설정
index/config.php
'template'=> [ // 模板路径 'view_path'=> config('template.view_path').config('index.model_name').'/'.config('index.default_template').'/', ],
admin/config.php
<?php //配置文件 return [ // 模板配置 'template' => [ // 模板路径 'view_path' => config('template.view_path').config('admin.model_name').'/'.config('index. default_template').'/', ], ];
확장:
1. 템플릿 접미사 view_suffix, 그 영향
http://localhost/thinkphp/index / news/index/id/1212
http://localhost/thinkphp/index/news/index/id/1212.html
5. 데이터 폴더를 구성하세요
프로젝트 아래에 다양한 파일들을 보면 , 조금 지저분하다고 느껴지면 다음 구성을 수행할 수 있습니다.
데이터 폴더를 구성하고 다양한 파일을 정리하여 더욱 편안하게 보이도록 하세요.
1. 런타임 폴더를 설정하세요
index.php
define('RUNTIME_PATH', __DIR__ . '/data/runtime/');
2. 업로드된 이미지와 파일을 저장하도록 업로드를 설정하세요
3. jquery.js, 부트스트랩, 일부 효과 플러그인 등을 저장하도록 설정하세요. on
// 视图输出字符串内容替换 'view_replace_str' => [ '__DATA__' => SITE_PATH.'data/', // 上传文件路径 '__UPLOAD__' =>SITE_PATH.'data/upload/', // 静态文件路径 (如bootshop,js,css) '__STATIC__' =>SITE_PATH.'data/upload/', ],
4 , 템플릿 아래에 CSS, js, 이미지를 쉽게 호출할 수 있도록 템플릿 파일 경로를 정의하세요.
'view_replace_str' => [ // 模板文件路径 '__TEMPLATE__' => config('template.view_path').config('index.model_name').'/'.config('index.default_template') .'/', // 模板下的共享文件路径(css,js,images...) '__PUBLIC__' => SITE_PATH.'/'.config('template.view_path').config('index.model_name').'/'.config('index. default_template').'/public/', ],
템플릿 페이지 참조:
<script src=__PUBLIC__js/jqueyr.js”> <link href=”__PUBLIC__css/style.css”> <img src="__PUBLIC__images/1.png">
5 원하는 것을 넣을 수 있으며 직접 설정하세요
6. 공용 모듈 common
common 이 모듈은 Thinkphp 프레임워크인 공용 모듈에 속하며 기본적으로 호출될 수 있습니다.
실용: 모든 모듈에서 사용할 수 있는 모델, 컨트롤 및 이벤트를 추출하여 공개 모듈 아래에 배치합니다.
1. 공개 이벤트 appscommoncommon.php
기능: 일반적으로 비밀번호 암호화 저장, 드롭다운 상자 캡슐화, 폴더에 파일 읽기
/** * 密码加密 * @param string $password * @param string $password_salt * @return string */ function password($password, $password_salt){ return md5(md5($password) . md5($password_salt)); }
2 공개 구성 appscommonconfig.php
인덱스 모듈과 관리 모듈의 공통 부분 추출하여 여기에 넣습니다. 예: 공개 템플릿 경로
'template' => [ // 模板路径 'view_path' => 'template/', ]
3, 공개 언어 패키지 appscommonlangzh-cn.php
比如经常用到的词 提交成功、提交失败、执行成功、执行错误、添加成功、添加失败、修改成功、修改失败、删除成功、删除失败... 可以放到公共语言包,在Index模块、Admin模块都可以用的到。
<?php /** * 全局语言包 * zh-cn * */ return [ 'success' => '执行成功', 'error' => '执行失败', 'add_success' => '添加成功', 'add_error' => '添加失败', 'edit_success' => '修改成功', 'edit_error' => '修改失败', 'delete_success' => '删除成功', 'delete_error' => '删除失败', ];
php页面调用:$lang = lang('success')
html页面调用:{:lang('success')}
4、公共控制器 apps\common\common.php
跟上面差不多个意思 Index模块、Admin模块都能用到的放这里。
5、公共模块 apps\common\common.php
跟上面差不多个意思 Index模块、Admin模块都能用到的放这里。
七、设置错误页面①
设置网站的错误提示页面,也是一个很重要的环节。
1、空操作
在当前控制器里面增加_empty操作
public function _empty(){ $this->error('方法不存在'); } Public function index(){ }
测试方法:
正常:
http://localhost/thinkphp/index/index/index
错误: 会提示“方法不存在”
http://localhost/thinkphp/index/index/df
2、空控制器
在模块下建立Error控制器,
位置: index/error.php 相关参数:empty_controller
代码:
<?php /** * 前端首页 * */ namespace app\index\controller; use app\index\controller; class Error extends IndexBase { public function index(){ echo '访问的控制器不存在'; } }
测试:http://localhost/thinkphp/index/inde3dfx/index
3、异常错误抛出
能够影响它的是,当前模块下的配置文件。如果当前配置文件无效,则会自动锁定公共模块下的配置参数。
相关参数:exception_tmpl,error_message
// 异常页面的模板文件 'exception_tmpl'=> THINK_PATH . 'tpl' . DS . 'think_exception.tpl',
八、设置错误页面②
完美的去设置错误页面
1、准备一个错误页面 error.html,位置:thinkphp\template\index\default\error.html ,准备把前段所有的错误提示都指向这里。
2、空操作指向
在apps\index\controller\Indexbase.php,“基类”里面设置_empty。
<?php /** * 前端基类 * */ namespace app\index\controller; use app\Common\controller\Base; class IndexBase extends Base { public function _initialize() { parent::_initialize(); } /** * 空操作 跳转 * */ public function _empty(){ //abort(); exception(); // 这两种方法都可以 } }
3、空控制器指向
在apps\index\controller\Error.php
<?php /** * 空控制器跳转 * */ namespace app\index\controller; use app\index\controller; class Error extends IndexBase { public function index(){ abort(); } }
4、异常错误指向
在 index/config.php exception_tmpl 参数
'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl', //'exception_tmpl' =>'E:/wamp/www/thinkphp/template/index/default/error.html',
注意:地址一定要绝对路径。
拓展,
401,404,500等错误页面自定义
相关参数:http_exception_template
手册地址:http://www.kancloud.cn/manual/thinkphp5/163256
代码:
config.php
'http_exception_template' => [ // 定义404错误的重定向页面地址 404 => ROOT_PATH.config('template.view_path').config('index.model_name').'/'.config ('index.default_template').'/404.html', // 还可以定义其它的HTTP status 401 => ROOT_PATH.config('template.view_path').config('index.model_name').'/'.config ('index.default_template').'/401.html', ],
控制器调用
abort(404,'错误信息')
error.html,404.html 页面代码,可以参考thinkphp\thinkphp\tpl\think_exception.tpl
九、路由别名Route
主要作用:隐藏自己的真实路由名称
Route.php
方法一:
<?php use think\Route; Route::alias('home','index/index'); Route::alias('admin','admin/index');
方法二:
<?php return [ '__pattern__' => [ 'name' => '\w+', ], '[hello]' => [ ':id' => ['index/hello', ['method' => 'get'], ['id' => '\d+']], ':name' => ['index/hello', ['method' => 'post']], ], '__alias__' => [ 'home' => 'index/index', 'admin'=> 'admin/index' ], ];
http://localhost/thinkphp/index.php/home/test 同等与http://localhost/thinkphp/index.php/index/index/test
http://localhost/thinkphp/index.php/admin/edit/ 同等与http://localhost/thinkphp/index.php/admin/index/edit
注释:别名 => ‘模型/控制器’ ( 别名等于模块+控制器)
十、路由设置,隐藏indx.php
网站根目录下.htaccess
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
위 내용은 ThinkPHP를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!