Laravel 路线继续 url 塞
Laravel routes continue url slug
不知道如何让1条路线显示url/something,下一条路线显示url/something/anotherthing
现在除了第三条路线一切正常。
它显示 url/company_name 并显示带有另一个 link 列表的视图。
我希望当我单击一个 link 时将 $table_name、$company_name 传递到下一个视图,但我还希望 url 为 url/company_name/table_name.
我的 home.blade 中有这个显示一些 links:
@foreach($companies as $data)
<a href="{{ route('show_tables',$company_name = $data->name )}}" class="btn btn-primary" >
{{$data->name }}
</a>
@endforeach
当我点击控制器中的 link 时,我得到了这个:
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)
您正在 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');
但是如果你这样做,你必须在控制器中为可选参数提供默认值。
您需要两个参数 company_name
和 table_name
,但您只传递了 table_name
。
凋零也传 company_name 或删除 {company_name}
如下。
<a href="{{ route('choose_table',$table_name = $data->name)}}" class="btn btn-primary" >
{{$data->name }}
</a>
Route::get('{table_name}', 'Apps\SetupController@index')->name('choose_table');
您缺少路线的最后一个参数,因此您需要将其作为参数传递。
如果您想要可选的第二个参数,您可以将问号附加到路由中的命名参数(见下文)。
Route::get('{company_name}/{table_name?}', 'Apps\SetupController@index')->name('choose_table');
不知道如何让1条路线显示url/something,下一条路线显示url/something/anotherthing
现在除了第三条路线一切正常。 它显示 url/company_name 并显示带有另一个 link 列表的视图。 我希望当我单击一个 link 时将 $table_name、$company_name 传递到下一个视图,但我还希望 url 为 url/company_name/table_name.
我的 home.blade 中有这个显示一些 links:
@foreach($companies as $data)
<a href="{{ route('show_tables',$company_name = $data->name )}}" class="btn btn-primary" >
{{$data->name }}
</a>
@endforeach
当我点击控制器中的 link 时,我得到了这个:
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)
您正在 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');
但是如果你这样做,你必须在控制器中为可选参数提供默认值。
您需要两个参数 company_name
和 table_name
,但您只传递了 table_name
。
凋零也传 company_name 或删除 {company_name}
如下。
<a href="{{ route('choose_table',$table_name = $data->name)}}" class="btn btn-primary" >
{{$data->name }}
</a>
Route::get('{table_name}', 'Apps\SetupController@index')->name('choose_table');
您缺少路线的最后一个参数,因此您需要将其作为参数传递。
如果您想要可选的第二个参数,您可以将问号附加到路由中的命名参数(见下文)。
Route::get('{company_name}/{table_name?}', 'Apps\SetupController@index')->name('choose_table');