Маршрут Laravel 5.8 не определен, но он явно - PullRequest
0 голосов
/ 11 мая 2019

, прежде чем я отправлю этот вопрос, он работает хорошо.но некоторое время, когда я продолжаю развивать свой проект laravel, я сталкиваюсь с этой проблемой.

Ошибка: Маршрут [user / alamat / 2] не определен.

//Routes
//web.php
Route::get('user/alamat/{id}','UserTransaksiController@index')->name('user/alamat/{id}');


//Blade
<a href={{ route('user/alamat/'.Auth::user()->iduser) }} >

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

Я пошагово пошагово расскажу о вещах, которые вы должны реорганизовать.

Прежде всего вы должны переименовать свой маршрут.Метод имени должен быть примерно таким:

Route::get('user/alamat/{id}','UserTransaksiController@index')->name('user.alamat');

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

<a href="{{ route('user.alamat', ['id' => auth()->user()->id]) }}" ></a>

На этом этапе ошибка должна быть устранена, если вы хотите улучшить свой код, вы можете прочитать далее.

Возвращаясь к вашему маршруту Для меня нет смысла иметь alamat на ваших маршрутах и ​​ Transaksi на вашем контроллере.В зависимости от информации, которую вы собираетесь получить, они должны быть согласованными, чтобы сделать код читабельным.Допустим, вы получаете Transaksi , который, как я видел, переводится как Deal , поэтому у вас должно получиться что-то вроде этого.

Route::get('users/{id}/transaksis','UserTransaksiController@index')->name('user.transaksi.index');

Обратите внимание, что я немного изменил маршрутБольше.Route::get('user/{id}/transaksis'.... этот раздел читается так, как будто вы хотите получить что-то, связанное с пользователями, затем идентификатор этого конкретного пользователя, а затем другую связанную модель.Используя этот же принцип, имя должно быть ...->name('user.transaksi.index')

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

Наконец вы можете перейти к RouteServiceProvider и добавить в него способ загрузки.Route::model('user', User::class); с этим вы можете изменить свой маршрут так:

Route::get('users/{user}/transaksis','UserTransaksiController@index')->name('user.transaksis.index');

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

public function index(User $user)
{
    //user should have the entire user model instance

    //if you have relations defined you can do this
    $user->transaksis;

    //the rest of your code to return goes here
}

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

public function index(Request $request)
{
    //Option 1 using the user from the request (you do not need to pass the request from the route, it is filled automatically by LAravel
    $request->user()->transaksis;

    //Option 2 using the auth helper
    auth()->user()->transaksis;

    //There are a lot of options to get the user

    //the rest of your code to return goes here
}
0 голосов
/ 11 мая 2019

функция маршрута, которую вы используете в своем блейде, предназначена для названий маршрутов. Вы не можете передать параметр, когда называете свой маршрут, вы можете назвать свой маршрут как user.alamat, а в своем шаблоне блейда вы можете использовать route('user.alamat', auth()->id()).

Передать параметры в виде массива в route('name', [$yourParameters]).

Route::get('user/alamat/{id}','UserTransaksiController@index')->name('user.alamat');
<a href="{{ route('user.alamat', auth()->id()) }}" ></a>

<!-- OR -->

<a href="/user/alamat/{{ auth()->id() }}" ></a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...