【问题标题】:Laravel 8 - Routing Problem - Missing Required ParameterLaravel 8 - 路由问题 - 缺少必需的参数
【发布时间】:2022-01-05 18:03:45
【问题描述】:

我有路由问题,我似乎无法解决。

首先: 这是我的“languages.blade.php”中动态创建的按钮

<a href="edit-keywords/{{ $language->language_code }}" class="btn btn-success btn-sm"><i class="fa fa-language"></i>&nbsp; Edit Keywords</a>

这是我的“web.php”中的路由线

 Route::get('/admin/edit-keywords/{code}', [App\Http\Controllers\Admin\LanguageController::class, 'edit_keywords'])->name('admin.edit-keywords');
 Route::post('/admin/edit-keywords', [App\Http\Controllers\Admin\LanguageController::class, 'save_keywords'])->name('admin.save_keywords');

这是我的“LanguageController.php”中的公共函数

public function edit_keywords($code){

   $language['view'] = Languages::getLanguage($code);
   $keyword['view'] =  Languages::getKeyword($code);
   $data = array('language' => $language, 'keyword' => $keyword);

   return view('admin.edit-keywords')->with($data);

}

这是我的语言模型中的 2 个函数

  public static function getLanguage($code){

    $value=DB::table('languages')->where('language_code', '=', $code)->first();
    return $value;

  }

  public static function getKeyword($code){

     $value=DB::table('keywords')->where('language_code', $code)->orderBy('keyword_id', 'asc')->get();
     return $value;

  }

当我点击按钮时,它会将我带到链接:http://localhost/admin/edit-keywords/LV,所以路由没问题。

但我每次都收到这个错误,而且对于每种语言:

照亮\路由\异常\UrlGenerationException

缺少 [Route: admin.edit-keywords] [URI:admin/edit-keywords/{code}] 的必需参数

[缺少参数:代码]。 (查看:C:\xampp\htdocs\resources\views\admin\edit-keywords.blade.php)

http://localhost/admin/edit-keywords/LV

编辑:

它在这里工作:

Route::get('/admin/edit-language/{language_code}', [App\Http\Controllers\Admin\LanguageController::class, 'edit_language'])->name('admin.edit-language');
Route::post('/admin/edit-language', [App\Http\Controllers\Admin\LanguageController::class, 'update_language'])->name('admin.edit-language');

【问题讨论】:

  • edit-keywords.blade.php中有动态的urls吗?喜欢:&lt;a href="edit-keywords/{{ $language-&gt;language_code }}" class...
  • 是的,例如:

    编辑 {{ $language['view']->language_name }} 语言

  • @mare96
  • 您的 URL 缺少某处参数 {code}。不适用于输入或动态文本。只需检查网址
  • 另外,请检查您的表单方法和提交表单的路线。

标签: php laravel


【解决方案1】:

我建议您使用the official documentation 中提到的路由名称,并添加您的 url 参数,如下所示:

<a href="{{ route('admin.edit-keywords', $language->language_code) }}" class="btn btn-success btn-sm"><i class="fa fa-language"></i>&nbsp; Edit Keywords</a>

【讨论】:

  • 感谢您的建议,但它仍然无法解决任何问题。 :(
【解决方案2】:

非常感谢大家的帮助。

如何接缝,自从我升级到 Laravel 8 后,有不同的路由方式。

我发现问题: 它在“edit-keywords.blade.php”中

我必须改变

<form action="/admin/edit-keywords/" method="post" id="setting_form" enctype="multipart/form-data">

 <form action="/admin/edit-keywords/{code}" method="post" id="setting_form" enctype="multipart/form-data">

还有路线

  Route::post('/admin/edit-keywords/', [App\Http\Controllers\Admin\LanguageController::class, 'save_keywords'])->name('admin.save_keywords');

改为

  Route::post('/admin/edit-keywords/{code}', [App\Http\Controllers\Admin\LanguageController::class, 'save_keywords'])->name('admin.save_keywords');

【讨论】:

    猜你喜欢
    • 2022-01-21
    • 2021-11-06
    • 2021-07-20
    • 2021-06-09
    • 2019-04-21
    • 2021-11-06
    • 2020-08-07
    • 2019-05-09
    相关资源
    最近更新 更多