Я использую фреймворк Laravel и шаблонизатор лезвий для одного из моих проектов, где у меня есть маршрут, который выглядит как
Route::get('/problems/{problem-id}/edit', 'AdminController@editProblem');
я имею editProblem метод в AdminController который возвращает вид
public function editProblem(Problem $problem) {
return view('admin.problem-edit', compact('problem'));
}
и у меня есть кнопка на виде, который выглядит как
<button class="btn btn-xs btn-info pull-right">Edit</button>
Теперь я хочу назвать этот маршрут с $problem->id
когда кнопка будет нажата. Мне нужно передать эти значения по маршруту.
Как мне это сделать?
Чтобы позвонить вам по маршруту с идентификатором проблемы, вы можете сделать:
<a href="{{ url('/problems/' . $problem->id . '/edit') }}" class="btn btn-xs btn-info pull-right">Edit</a>
Я использовал тег привязки, но он будет отображаться как тег кнопки, потому что я сохранил тот же класс стилей, который вы определили.
Причина проста, метод url получит полный URL к вашему контроллеру. Если вы не используете это, ссылка href будет добавлена с текущим URL.
Например, кнопка supose you находится внутри данной страницы
yourdomain.com/a-given-page/
когда кто-то нажмет на вашу кнопку, результатом будет:
yourdomain.com/a-given-page/problems/{problem-id}/edit
когда вы хотели бы получить это:
yourdomain.com/problems/{problem-id}/edit
У вашего маршрута есть $ id, поэтому вам нужно получить этот $ id в вашем методе.
public function editProblem($problem_id) {
$problem = \App\Problem::find($problem_id); //If you have your model 'Problem' located in your App folder
return view('admin.problem-edit', compact('problem'));
}
Вам нужно будет создать ссылку на этот маршрут:
<a href="/problems/{{ $problem->id }}/edit" class="btn btn-xs btn-info pull-right">Edit</a>
Если вы используете именованные маршруты, это будет еще проще:
Route::get('/problems/{problem-id}/edit', ['as' => 'problems.edit', 'uses' => 'AdminController@editProblem']);
И тогда вам просто нужно позвонить route
метод:
<a href="{{ route('problems.edit', $problem->id) }}" class="btn btn-xs btn-info pull-right">Edit</a>
Попробуй это:
<button type="button" onclick="window.location='{{ url("users/index") }}'">Button</button>
Маленькое предложение:
Когда вы определяете маршруты в laravel, дайте ему уникальное имя, это поможет вам отслеживать каждый URL, как это
Route::get('/problems/{problem-id}/edit', 'AdminController@editProblem')->name('pEdit');
Route::post('/problems/{problem-id}/edit', 'AdminController@editProblem')->name('pEdit');
Теперь вы используете этот маршрут в Blade с просто именем для сообщения и получите оба
<button type="button" onclick="window.location='{{ route("pEdit",array("parameter1")) }}'">Button</button>