路线参数可以互换

时间:2019-10-20 06:58:16

标签: php laravel

我的观点是

<a href="/agents/{{ $property->user_id }}/{{ $property->id }}/edit" class="btn-sm">Edit</a></td>

但是当我在$ property-> user_id 参数中输入1-50时,它会导致一个属性。

我的Route::get('/agents/{agent}/{id}/edit', 'AgentController@edit');文件中有web.php

路由文件:

Route::get('/properties/', 'PropertyController@index'); 
Route::get('/properties/{property}', 'PropertyController@show'); 
Route::get('/agents/{agent}', 'AgentController@index'); 
Route::get('/agents/{agent}/{id}/edit', 'AgentController@edit'); 
Route::post('/agents/{agent}', 'AgentController@update')->name('agent.property.update'); 

这是我的控制器代码:

public function edit($id)
    {
        $property = Property::find($id);

        return view('agents.edit', compact('property'));
    }

我不了解Laravel中的这种行为,这不是我想要的,我只是想使路线正常工作。

2 个答案:

答案 0 :(得分:2)

Laravel将agent_id和property_id都提供给控制器作为参数。您仅使用agent_id并将其作为属性ID。

public function edit($agent_id, $property_id)
{
    $property = Property::find($property_id);
    return view('agents.edit', compact('property'));
}

答案 1 :(得分:0)

根据您的路线文件,我认为您应该输入以下路线:

Route::get('/agents/{agent}/{id}/edit', 'AgentController@edit');

在此之上:

Route::get('/agents/{agent}', 'AgentController@index'); 
相关问题