初用 TP5 框架, TP5 框架能不能实现模块里有子模块这种操作? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
5bb864e1fc775087
V2EX    问与答

初用 TP5 框架, TP5 框架能不能实现模块里有子模块这种操作?

  •  
  •   5bb864e1fc775087 2020-07-27 11:27:12 +08:00 2111 次点击
    这是一个创建于 1949 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现有这个文件

    \tp\application\index\controller\Controller1.php 

    用这个 url 可以正常访问, 不报错

    http://tp/index/controller1/func1 


    想实现文件这样存放, 多一级子目录(子模块)

    \tp\application\index\module1\controller\Controller1.php 

    但是用这个 url 访问会报错

    http://tp/index/module1/controller1/func1 

    报错信息

    控制器不存在:app\index\controller\Module1 
    19 条回复    2020-07-29 09:10:19 +08:00
    5bb864e1fc775087
        1
    5bb864e1fc775087  
    OP
       2020-07-27 11:29:00 +08:00
    能不能做到 以及 要怎么做才行
    qiayue
        2
    qiayue  
    PRO
       2020-07-27 11:35:09 +08:00
    是不是少了一级目录
    http://tp/index/module1/controller/controller1/func1
    5bb864e1fc775087
        3
    5bb864e1fc775087  
    OP
       2020-07-27 11:36:33 +08:00
    @qiayue #2 你这个 URL 打开报一样的错误"控制器不存在:app\index\controller\Module1",URL 中间的“controller”,TP 框架会自动补充
    5bb864e1fc775087
        4
    5bb864e1fc775087  
    OP
       2020-07-27 12:34:21 +08:00
    没人回复,这个问题无解么?
    loongk
        5
    loongk  
       2020-07-27 12:40:58 +08:00
    http://tp/index/module1.controller1/func1
    fengshils
        6
    fengshils  
       2020-07-27 12:46:23 +08:00
    推荐使用命令行创建子模块控制器,盲猜是命名空间没写对
    5bb864e1fc775087
        7
    5bb864e1fc775087  
    OP
       2020-07-27 12:50:24 +08:00
    @loongk #5 报错“控制器不存在:app\index\controller\module1\Controller1”
    5bb864e1fc775087
        8
    5bb864e1fc775087  
    OP
       2020-07-27 12:54:17 +08:00
    @fengshils #6 命名空间我有专门检查过,还是一样。我觉得主要是因为 TP 框架会自动在类名 app\index 后面加上"controller",导致类名成了 app\index\controller\module1\controller\Controller1 但是正确的类名是 app\index\module1\controller\Controller1
    fengshils
        9
    fengshils  
       2020-07-27 13:39:18 +08:00
    试试
    ```
    php think make:controller index/Controller/Module1/Controller1
    ```
    5bb864e1fc775087
        10
    5bb864e1fc775087  
    OP
       2020-07-27 13:50:35 +08:00
    执行后会生成这个文件
    \tp\application\index\controller\Controller\Module1\Controller1.php
    然后用这种方式访问到控制器
    http://tp/index/controller.Module1.Controller1/index

    但和我要的不一样,我要的是这样
    \tp\application\index\module1\controller\Controller1.php
    最后没办法的话,我也只能这样用了,把 module1 子模块的文件放在“\tp\application\index\controller”里面用了
    fengshils
        11
    fengshils  
       2020-07-27 14:09:06 +08:00
    .的话好像不支持把,估计你得改源代码了
    back0893
        12
    back0893  
       2020-07-27 14:31:17 +08:00
    直接写路由不就好了
    doublie
        13
    doublie  
       2020-07-27 14:31:50 +08:00
    Route::get('index/module1/controller1/func1', 'index/module1.Controller1/func1');
    这样配置一下路由不知道行不行
    5bb864e1fc775087
        14
    5bb864e1fc775087  
    OP
       2020-07-27 14:59:01 +08:00
    @doublie #13
    @back0893 #12
    写路由我也有想到,就是每个接口都要写,有点多
    cnoder
        15
    cnoder  
       2020-07-27 17:40:11 +08:00
    路由也不是每个接口都要写,可以只给这个子模块的配置路由
    absolutelynull
        16
    absolutelynull  
       2020-07-27 17:53:43 +08:00
    \tp\application\index\controller\module1\Controller1.php

    index.module1/controller1
    5bb864e1fc775087
        17
    5bb864e1fc775087  
    OP
       2020-07-27 18:31:11 +08:00
    @absolutelynull #16
    本来我想要的是 \tp\application\index\module1,目测是没法实现了
    只能用跟你说的这种把子模块放在 index\controller 里的 \tp\application\index\controller\module1 方式了
    akagishigeru
        18
    akagishigeru  
       2020-07-27 22:14:31 +08:00 via iPhone
    没办法的 你看源码就会发现的 写死的规则
    absolutelynull
        19
    absolutelynull  
       2020-07-29 09:10:19 +08:00
    @5bb864e1fc775087 url 访问控制器的话 只能访问到 controller 下面的目录文件
    不然的话 就不会出现 controller model view 这几个目录了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5571 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 02:27 PVG 10:27 LAX 18:27 JFK 21:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86