美文网首页ThinkPHP5.0学习记录
TP5自动生成目录报错-模块不存在:index

TP5自动生成目录报错-模块不存在:index

作者: Light413 | 来源:发表于2017-04-13 09:43 被阅读6234次

业余学习PHP好大一段时间了,初次接触这个框架,很多资料都是3.x的,特别目录文件也是傻瓜式生成。作为新一代的TP5.0之后好像之前的方式不能用了,可以自定义生成的目录和文件,这个听起来貌似很方便也很灵活。所以开始动手以下操作.

下载框架

作为新手自然想到去github下载最新版本。直接download之后没有发现thinkphp目录及内容,在官方文档中发现git方式需要两个步骤:

1.首先克隆下载应用项目仓库
git clone https://github.com/top-think/think tp5

2.然后切换到tp5目录下面,再克隆核心框架仓库:
git clone https://github.com/top-think/framework thinkphp
两个仓库克隆完成后,就完成了ThinkPHP5.0的Git方式下载

自动生成目录文件

开启服务后,把tp5放到指定的目录下,按照手册新建build.php生成目录配置文件

return [
// 生成运行时目录
    '__file__' => ['common.php','test.php'],
  
    // 定义index模块的自动生成
    'index'    => [
        '__file__'   => ['common.php'],
        '__dir__'    => ['behavior', 'controller', 'model', 'view'],
        'controller' => ['Index','Test', 'UserType'],
        'view'       => ['index/index'],
    ],

    'home'    => [
        '__file__'   => ['common.php'],
        '__dir__'    => ['behavior', 'controller', 'model', 'view'],
        'controller' => ['Test', 'UserType'],
    ],


];

然后在index.php

// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

// 读取自动生成定义文件
$build = include 'build.php';

// 运行自动生成
\think\Build::run($build);

以上基本准备完毕,打开浏览器http://localhost/tp/public/直接报错:

Snip20170413_2.png


目前我的目录:

Snip20170413_1.png

直接按照提示新建index模块、控制器如下:

Snip20170413_3.png

再次运行率,不在报错了,也按build中的规则生成了自定义的目录文件。即使以后继续运行,原有的目录文件已存在会直接跳过也不会再次生成。

总结

本来一个小小的问题,自己没有新建index模块之前怎么都是报错,可能真的要自己新建一个,如果这样的话自动生成好像不那么自动了。查看官方文档也没有相应的描述,目前我就这样了。大不了把不需要的index模块再删掉。关于这个国产的TP5神器我还在进一步的学习了解中。

20170508更新

初始的时候为什么会报错找不到index模块?

经学习发现,在tp5 中convention.php文件中惯例配置文件中关于模块的配置默认已定义了默认加载的模块为index,部分代码如下

    // +----------------------------------------------------------------------
    // | 模块设置
    // +----------------------------------------------------------------------

    // 默认模块名
    'default_module'         => 'index',
    // 禁止访问模块
    'deny_module_list'       => ['common'],
    // 默认控制器名
    'default_controller'     => 'Index',
    // 默认操作名
    'default_action'         => 'index',
    // 默认验证器
    'default_validate'       => '',
    // 默认的空控制器名
    'empty_controller'       => 'Error',
    // 操作方法前缀
    'use_action_prefix'      => false,
    // 操作方法后缀
    'action_suffix'          => '',
    // 自动搜索控制器
    'controller_auto_search' => false,

所以开始加载的时候必须已经存在index模块和相关控制器。

  • 更改默认配置的加载模块

根据配置的优先级惯例配置->应用配置->扩展配置->场景配置->模块配置->动态配置,我们可以在模块配置config.php中修改默认加载的模块已覆盖惯例配置中的配置。

'default_module' => 'home',//修改为默认加载home模块

  • 也可以在初始的inde.php中修改添加如下:
// 定义应用目录
define('APP_PATH', __DIR__ . '/../mydemo/');

define('BIND_MODULE','home');

// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

绑定默认到home的模块。

以上能很好地解释为什么在自动生成模块的时候必须新建一个index的模块和相关的控制器了。

相关文章

  • TP5自动生成目录报错-模块不存在:index

    业余学习PHP好大一段时间了,初次接触这个框架,很多资料都是3.x的,特别目录文件也是傻瓜式生成。作为新一代的TP...

  • 2022-07-21

    1. Rust自动生成文档 路径为: [root]/target/doc/[项目名称]/index.html在模块...

  • tp5自动生成目录结构

    tp5具备自动创建目录的功能。相比于手动创建,命令行下快速操作更有感觉;同时,创建过程中对整体目录的把握会更好。 ...

  • centos 下 部署好thinkphp thinkphp框架报

    环境:nginx centos6.7 错误:thinkphp框架报错:项目目录不可写,目录无法自动生成! 请使用项...

  • Hello world

    目录结构:-- index.html-- index.js-- hello.js hello模块: index模块...

  • 18-webpack 实现 Html、JavaScript、CS

    在 10- webpack 自动生成 index.html 之后,index.html 的自动生成任务 由 htm...

  • TP5 Nginx 提示:模块不存在:index

    配置nginx后,发现TP接口无法正常访问默认情况下的ip/think 也无法访问,推测Nginx异常查找后,发现...

  • webpack插件命令写好后

    在项目中的根目录下 运行 webpack 就能生成buid文件夹了,里面会自动生成 两个文件 index.html...

  • vue cli目录

    vue-cli脚手架生成的目录,各主要目录: api目录下包含index.js文件导出各模块对应js文件封装的ap...

  • Vue+webpack+vue-router+nginx部署

    1.修改生产环境的配置 修改config/index.js的build模块(vue-cli生成的目录结构)修改as...

网友评论

    本文标题:TP5自动生成目录报错-模块不存在:index

    本文链接:https://www.haomeiwen.com/subject/vyzvattx.html