Где получить второй параметр маршрута в представлении? - PullRequest
0 голосов
/ 14 мая 2018

Мое приложение развивается вокруг нескольких моделей, включая User и Collection.Между ними существует отношение один (пользователь) ко многим (коллекции).

В моем представлении collections.create я хочу установить атрибут действия для маршрута следующим образом:

<form action="{{ route('users.collections.store') }}" method="POST">

Я знаю, что должен быть второй параметр в функции маршрута, но я не знаю, где его взять.

Мои маршруты:

Route::resource('users.collections', 'UserCollectionController');
Route::resource('users', 'UserController');

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Если вы пытаетесь использовать метод store на вашем UserCollectionController, вы можете сделать что-то вроде этого:

Сначала в своем блейд-представлении вы можете передать в свой маршрут ряд параметров, например:

<form action="{{ route('users.collections.store', ['someVariable' => $collection->someProperty, 'anotherVariable' => $user->anotherProperty])) }}" method="POST">

Так что теперь вы можете просто отредактировать файл маршрутов, чтобы применить эти изменения, но вы переопределите метод контроллера ресурсов, который вы создали, так что-то вроде этого (кстати, маршрут в вашем коде не назван):

Route::post('someWebPage/{someProperty}/{anotherProperty}', 'UserCollectionController@store')->name('users.collections.store');

И в вашем UserCollectionController.php конечно вы можете принять их так:

public function store(Request $request, $someProperty, $anotherProperty) { //Of course here you don't have to stick to the naming i'm just trying to make it clear
    // $collection = App\Collection::where('aProperty', $someProperty)-get();
}

Надеюсь, это то, что вы хотели, надеюсь, это поможет.

0 голосов
/ 15 мая 2018

вы можете передать параметр следующим образом:

Route::get('user/{id}', function ($id) { // $id would be the parameter in this case
    return 'User '.$id;
});

Есть также дополнительные параметры, которые вам не нужно «заполнять», но можете, если вам нужно:

Route::get('user/{name?}', function ($name = null) {
    return $name;
});

В основном, это просто добавление ? подстановочного знака.

И в вашем блейде вы можете добавить параметр следующим образом:

<form action="{{ route('users.collections.store', [('user' => $var->user)] }}" method="POST">

Чтобы узнать больше, есть раздел, касающийся параметра маршрута в документы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...