tp6资源路由url生成问题

浏览:4419 发布日期:2019/07/05 分类:ThinkPHP6专区 关键字: tp6 资源路由 url
目录结构:www  WEB部署目录(或者子目录)
├─app           应用目录
│  ├─admin           应用目录
│  │  ├─config       配置目录
│  │  │  ├─route.php            路由配置
│  │  ├─controller                控制器目录
│  │  │  ├─Index.php           
│  │  │  ├─Menus.php           
│  │  └─ ...            更多类库目录
route.php里面代码:<?php
use think\facade\Route;
Route::resource('menus', 'Menus');
问题描述:
在注册了资源路由menus后。
在http://127.0.0.1:8000/admin(Index控制器)底下使用url('Menus/index')生成的url地址为/admin/menus/index在http://127.0.0.1:8000/admin/menus(Menus控制器)底下使用url('Menus/index')生成的url地址为/admin/menus在对应的资源控制器Menus底下生成的url才是正常的,在其他控制器下生成的url为错误的。如Index控制器底下生成的“/admin/menus/index”后面的“index”应该属于多余部分,如果直接访问这个链接实际会对应到Menus控制器的read方法中,即把后面的“/index”误认为是资源id,但这个id应该只匹配整数才对

标识 请求类型 路由生成规则 对应操作方法(默认)
read GET menus/:id read

一句话描述:
url('Menus/index') 没办法生成我想要的url"/admin/menus/"

尝试的解决过程:
阅读TP官方手册URL生成部分https://www.kancloud.cn/manual/thinkphp6_0/1037508
指出url()第一个参数为路由地址或路由标识。那么menus资源的路由标识是什么。index?menus.index?
所以我尝试在Index控制器下使用url('Index')和url('menus.index')和url('menus/index')等等输出url,当然最终生成的结果都不是我需要的"/admin/menus/"

那么是不是路由标识的表示有问题,然后我找到文档
https://www.kancloud.cn/manual/thinkphp6_0/1037650
我想我可以输出看看我定义的路由标识是什么
于是我打开cmd敲下了下面的命令
php think route:list admin
输出为:
+------+-------+--------+------+
| Rule | Route | Method | Name |
+------+-------+--------+------+
发现并没有按我预想的那样输出menus资源的路由定义

到这里我已经没有别的思路,于是我打开论坛搜索相关问题。发现一年就已经有人反馈过类似的问题
http://www.thinkphp.cn/topic/58270.html
http://www.thinkphp.cn/topic/62457.html
然而在这些帖子底下也没有得到我想要的答案,于是有了这篇提问帖

写在最后
我想解决的问题:怎样在已经定义了资源路由的情况下正确生成url?或我之前的其他操作有问题请帮我指正,感谢回复
(PS:多应用模式,单应用模式是否正常我没测试过)
最佳答案
评论( 相关
后面还有条评论,点击查看>>