Параметры маршрутов взаимозаменяемы - PullRequest
0 голосов
/ 20 октября 2019

У меня в представлении:

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

Но когда я добавляю 1-50 в свой параметр $ property -> user_id , это приводит к свойству.

У меня есть 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 ]

2 голосов
/ 20 октября 2019

Laravel передает и agent_id, и property_id контроллеру в качестве параметра. Вы используете только agent_id и принимаете его как идентификатор свойства.

public function edit($agent_id, $property_id)
{
    $property = Property::find($property_id);
    return view('agents.edit', compact('property'));
}
0 голосов
/ 20 октября 2019

На основании вашего файла маршрута, я думаю, вы должны поставить этот маршрут:

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

выше этого:

Route::get('/agents/{agent}', 'AgentController@index'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...