1. Déploiement du projet
1. >Supprimez public/index.php et remplacez-le par /index.php dans le répertoire racine. Créez le fichier index.php dans le répertoire racine du site Web avec le contenu suivant
<?php // 定义应用目录 define('APP_PATH', __DIR__ . '/apps/'); // 加载框架引导文件 require './thinkphp/start.php';
C'est essentiellement cela. C'est la configuration la plus simple.
2. Déploiement du serveur
L'entrée du fichier du projet de déploiement du serveur est publique Avantages : Seuls les fichiers du répertoire public sont visibles par les étrangers. Les fichiers au même niveau que public sont masqués en externe. réseau. Tels que : thinkphp, applications, extension, tests, fournisseur. La signification la plus simple est que le contenu de ces fichiers n’est pas accessible via le nom de domaine, mais cela n’affecte pas l’utilisation du framework.
2. Créer des modules (générer automatiquement des modules)Mon projet est déployé dans le répertoire local www/thinkphp. Avant de le faire, réfléchissez clairement au nombre de modules dont vous aurez besoin pour mener à bien votre projet.
Démarrez l'instance
1. Créez trois modules : Common (module public), Home (module front-end) et Admin (module back-end). Les modules publics sont essentiels.
Une fois modifié, il s'agit d'index.php sous public. Ouvrez-le comme ceci
// 定义应用目录 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php';
Ajoutez ces deux phrases à la fin
$build = include '../build.php'; // 运行自动生成 \think\Build::run($build);
configuration build.php (génération automatique du répertoire). ) Référence du manuel : http://www.kancloud.cn/manual/thinkphp5/118021
Il y a un fichier build.php dans le répertoire racine du projet. Après l'avoir ouvert, vous verrez quelque chose comme ceci. :
<?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'], ], // 其他更多的模块定义 ];
Ensuite, nous ajoutons ici le nom de fichier dont nous avons besoin. La démo donnée peut être commentée directement, comme suit :
<?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) Parmi eux, SITE_PATH et RUNTIME_PATH sont tous deux utilisés plus tard, et tous sont prioritaires. Mettez-le dans index.php pour un appel facile plus tard.
2) Ces deux choses doivent être utilisées ensemble
$build = include './build.php'; // 运行自动生成 \think\Build::run($build);
Recommandations associées : "
Tutoriel ThinkPHP3. en commençant la classe, vous devez d'abord configurer la "classe de base". Pourquoi ? Par exemple, si vous souhaitez accéder au contrôleur lié au centre membre, ces contrôleurs doivent-ils avoir une « restriction de connexion » pour autoriser l'accès au contrôleur lié aux membres ? Le rôle de la classe de base ressort.
1. Créer trois classes de base principales
Classe de base originale
Emplacement : thinkphpappscommoncontrollerbase.php
Fonction : Contenu sous le module de base, module Index, et le module Admin peut être appelé.
Code :
<?php /** * 原始基类 * */ namespace app\Common\controller; use think\Controller; class Base extends Controller{ public function _initialize() { parent::_initialize(); echo '原始基类'; } public function test1(){ return 'test1'; } }
Classe de base du module Index
Emplacement : thinkphpappscommoncontrollerbase.php
Fonction : les contrôleurs sous le module Index doivent "hériter de la classe de base" " et " appeler la classe de base ".
Code :
<?php /** * 前端基类 * */ namespace app\index\controller; use app\Common\controller\Base; class IndexBase extends Base { public function _initialize() { parent::_initialize(); } public function index() { } }
Classe de base du module Admin
Emplacement : thinkphpappscommoncontrollerbase.php
Fonction : Les contrôleurs du module Admin doivent "hériter de la classe de base" " et " appeler la classe de base ".
Code :
/** * 后台首页 * */ namespace app\Admin\controller; use app\Admin\controller\AdminBase; class Index extends AdminBase { public function _initialize() { parent::_initialize(); } public function index() { return $this->fetch(); } }
(Classe de base du module utilisateur, s'il y a un membre, celui-ci doit également être créé)
Le but principal de la création d'une classe de base est de " hériter" avec "appel".
4. Définissez le chemin du modèleLe chemin du modèle par défaut se trouve dans le fichier module/view. Si vous pensez que cela n'est pas pratique à gérer et que vous souhaitez le définir dans le répertoire Modèle, vous pouvez le faire.
Paramètres du modèle, les autres paramètres qui peuvent être affectés sont les paramètres config.php template->view_path sous le module actuel.
Opération pratique
1. Configurez les paramètres partagés
Définissez certains paramètres dans apps/config.php pour faciliter l'appel de config.php sous le module Index ou Admin.
apps/config.php, ajoutez quelques paramètres.
'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. Définir les paramètres du modèle
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').'/', ], ];
Extension :
1. Suffixe de modèle view_suffix, son impact
http://localhost/thinkphp/index/news/index/id/1212
http://localhost/thinkphp/index/news/ index /id/1212.html
5. Configurez le dossier de donnéesSi vous regardez les différents fichiers du projet et sentez qu'ils sont en désordre, vous devrait Les configurations suivantes sont possibles.
Configurez le dossier de données et organisez divers fichiers pour le rendre plus confortable.
1. Définissez le dossier d'exécution
index.php
define('RUNTIME_PATH', __DIR__ . '/data/runtime/');
2. Définissez le téléchargement pour stocker les images téléchargées et télécharger les fichiers
3. Stockez jquery.js, bootstrap, certains plug-ins d'effets, etc.
// 视图输出字符串内容替换 'view_replace_str' => [ '__DATA__' => SITE_PATH.'data/', // 上传文件路径 '__UPLOAD__' =>SITE_PATH.'data/upload/', // 静态文件路径 (如bootshop,js,css) '__STATIC__' =>SITE_PATH.'data/upload/', ],
4 Définissez le chemin du fichier modèle pour faciliter l'appel de CSS, js, d'images sous le modèle
'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/', ],
Référence de la page du modèle. :
<script src=__PUBLIC__js/jqueyr.js”> <link href=”__PUBLIC__css/style.css”> <img src="__PUBLIC__images/1.png">
5. Vous pouvez mettre ce que vous voulez, le paramétrer vous-même
6. Utilisation du module public communLe module commun est un module public, le framework Thinkphp, par défaut Peut être appelé.
Utilisation pratique : Extrayez les modèles, les contrôles et les événements pouvant être utilisés par n'importe quel module et placez-les sous le module public.
1. Événement public appscommoncommon.php
Fonction : stocker généralement le cryptage du mot de passe, l'encapsulation de la liste déroulante, lire les fichiers dans un dossier
/** * 密码加密 * @param string $password * @param string $password_salt * @return string */ function password($password, $password_salt){ return md5(md5($password) . md5($password_salt)); }
2. php
Extrayez les parties communes du module Index et du module Admin et placez-les ici, par exemple : chemin du modèle public
'template' => [ // 模板路径 'view_path' => 'template/', ]
3.
比如经常用到的词 提交成功、提交失败、执行成功、执行错误、添加成功、添加失败、修改成功、修改失败、删除成功、删除失败... 可以放到公共语言包,在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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!