我不知道如何制作1条路线显示url /其他内容,而下一条路线显示url /某些东西/其他内容
现在,除了第三条路线,其他一切都正常。 它显示url / company_name,并显示带有另一个链接列表的视图。 我想当我单击一个链接以将$ table_name和$ company_name传递到下一个视图时,但我也希望该URL为url / company_name / table_name。
我的home.blade中有此链接,其中显示了一些链接:
@foreach($companies as $data)
<a href="{{ route('show_tables',$company_name = $data->name )}}" class="btn btn-primary" >
{{$data->name }}
</a>
@endforeach
当我单击控制器中的链接时,我有以下提示:
public function index($company_name) {
$tables = DB::connection($company_name)->table('tables')->get();
return view('apps.welcome', compact('tables', 'company_name'));
}
这是我的apps.welcome.blade视图:
<div class="card-body">
@csrf
@foreach($tables as $data)
<a href="{{ route('choose_table',$table_name = $data->name)}}" class="btn btn-primary" >
{{$data->name }}
</a>
@endforeach
这是我的网络路线:
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/{company_name}', 'Apps\WelcomeController@index')->name('show_tables');
Route::get('{company_name}/{table_name}', 'Apps\SetupController@index')->name('choose_table');
我收到此错误:
Missing required parameters for [Route: choose_table] [URI: {company_name}/{table_name}]. (View: apps.welcome.blade)
答案 0 :(得分:1)
您正在app.welcome.blade.php中使用choose_table
路由,但缺少一个参数:
<a href="{{ route('choose_table',$table_name = $data->name)}}" class="btn btn-primary" >
{{$data->name }}
</a>
您的路线实际上需要2个参数,即company_name
和table_name
:
Route::get('{company_name}/{table_name}', 'Apps\SetupController@index')->name('choose_table');
在路由中使用这两个参数(如@rkj在评论中所述):
route('choose_table', ['company_name' => $company_name, 'table_name' => $data->name]);
否则,将您的 2nd 参数设置为可选:
Route::get('{company_name}/{table_name?}', 'Apps\SetupController@index')->name('choose_table');
但是,如果要执行此操作,则必须为控制器中的可选参数提供默认值。
答案 1 :(得分:1)
您需要两个参数matrix(paste0(df_one$V1, rep(df_one$V2, each = loop)), nrow = loop)
[,1] [,2] [,3] [,4] [,5]
[1,] "15" "16" "17" "18" "19"
[2,] "25" "26" "27" "28" "29"
[3,] "35" "36" "37" "38" "39"
[4,] "45" "46" "47" "48" "49"
[5,] "55" "56" "57" "58" "59"
和company_name
,但是您仅传递table_name
。
也要凋谢company_name或删除table_name
,如下所示。
{company_name}
答案 2 :(得分:1)
您缺少路线的最后一个参数,因此需要将其作为参数传递。
如果需要可选的第二个参数,可以在路由的命名参数后附加一个问号(见下文)。
Route::get('{company_name}/{table_name?}', 'Apps\SetupController@index')->name('choose_table');