我在 laravel-modules 中定义的路由出错
I got error with route defined in 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');
});
它指的是控制器 Modules/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)
我尝试了几种设置路由 nane 的方法,但都失败了。
修改 #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
输出有用的 table 显示路由名称以及 URL 和控制器方法。
或者,为 资源 创建另一个 组 :
Route::prefix('pages')->group(function() {
Route::get('/', 'PagesController@index');
Route::prefix('admin')->group(function() {
Route::resource('page_types', 'Admin\PageTypesController');
});
});
在 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');
});
它指的是控制器 Modules/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)
我尝试了几种设置路由 nane 的方法,但都失败了。
修改 #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
输出有用的 table 显示路由名称以及 URL 和控制器方法。
或者,为 资源 创建另一个 组 :
Route::prefix('pages')->group(function() {
Route::get('/', 'PagesController@index');
Route::prefix('admin')->group(function() {
Route::resource('page_types', 'Admin\PageTypesController');
});
});