Laravel路线继续url

时间:2018-07-13 11:20:46

标签: php laravel laravel-5 laravel-routing laravel-5.6

我不知道如何制作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)

3 个答案:

答案 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_nametable_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');

但是,如果要执行此操作,则必须为控制器中的可选参数提供默认值。

Optional Parameters

答案 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');