如何解决我在laravel-modules中定义的路由出错
在Laravel Framework 6.18.35中,我使用“ nwidart / laravel-modules”:“ ^ 7.2”, 并且在路由中定义方法wrinnten的路由时出错。
在Modules / Pages / Routes / web.PHP中,我有:
Route::prefix('pages')->group(function() {
Route::get('/','PagesController@index');
Route::resource('/admin/page_types','Admin\PageTypesController');
});
它使用方法:引用计算机模块/Pages/Http/Controllers/Admin/PageTypesController.PHP。
class PageTypesController extends Controller
{
public function index()
{
\Log::info( '-1 PageTypesController index ::' . print_r( -1,true ) );
return view('pages::admin.page_types.index');
}
带有模板Modules / Pages / Resources / views / admin / page_types / index.blade.PHP,该模板具有参考性:
<div class="col-12 col-sm-6 mb-3 mt-1 pl-2">
<input type="submit" class="btn btn-primary" value="Search" onclick="javascript:backendPageType.runSearch(oTable); return false;" id="btn_run_search">
<a onclick="javascript:document.location='{{ route('pages.admin.page_types.create') }}'" class="a_link">
<small> ( Add )</small>
</a>
</div>
这会引发错误:
Route [pages.admin.page_types.create] not defined. (View: /mnt/_work_sdb8/wwwroot/lar/lar6/Modules/Pages/Resources/views/admin/page_types/index.blade.PHP)
我尝试了几种设置路由路径的方法,但是失败了。
修改后的#2: 我看到路线:
PHP artisan route:list
Modules\Pages\Http\Controllers\PagesController@index | web |
| | GET|HEAD | pages/admin/{admin}/page_types | admin.page_types.index | Modules\Pages\Http\Controllers\Admin\PageTypesController@index | web |
| | POST | pages/admin/{admin}/page_types | admin.page_types.store | Modules\Pages\Http\Controllers\Admin\PageTypesController@store | web |
| | GET|HEAD | pages/admin/{admin}/page_types/create | admin.page_types.create | Modules\Pages\Http\Controllers\Admin\PageTypesController@create | web |
| | GET|HEAD | pages/admin/{admin}/page_types/{page_type} | admin.page_types.show | Modules\Pages\Http\Controllers\Admin\PageTypesController@show | web |
| | PUT|PATCH | pages/admin/{admin}/page_types/{page_type} | admin.page_types.update | Modules\Pages\Http\Controllers\Admin\PageTypesController@update | web |
| | DELETE | pages/admin/{admin}/page_types/{page_type} | admin.page_types.destroy | Modules\Pages\Http\Controllers\Admin\PageTypesController@destroy | web |
| | GET|HEAD | pages/admin/{admin}/page_types/{page_type}/edit | admin.page_types.edit | Modules\Pages\Http\Controllers\Admin\PageTypesController@edit | web |
我想知道为什么会有这么多“ {admin} /”? 内容在Modules / Pages / Routes / web.PHP中:
Route::prefix('pages')->group(function() {
Route::get('/','PagesController@index');
Route::resource('admin.page_types','Admin\PageTypesController');
});
哪种语法正确?
谢谢!
解决方法
要创建 nested resource ,Laravel可让您对资源使用点符号:
Route::resource('admin.page_types','Admin\PageTypesController');
通过运行php artisan route:list
来检查已注册的路由,该命令会输出一个有用的表,其中显示了路由名称以及URL和控制器方法。
或者,为资源创建另一个组:
Route::prefix('pages')->group(function() {
Route::get('/','PagesController@index');
Route::prefix('admin')->group(function() {
Route::resource('page_types','Admin\PageTypesController');
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。