Laravel 8: преобразование массива в строку при просмотре

ОБНОВЛЕНИЕ №1:

Я исправил свою опечатку:

<form action="{{ route('articles.destroy'  , ['article' => $article->id]) }}" method="post">

Но теперь я получаю это сообщение об ошибке:

Illuminate \ Routing \ Exceptions \ UrlGenerationException Отсутствуют обязательные параметры для [Route: articles.edit] [URI: admin / articles / {article} / edit]

Вот мой web.php:

Route::prefix('admin')->group(function(){
  Route::get('/panel', [PanelController::class, 'index']);
  Route::resource('/articles', ArticleController::class);
});

У меня есть лезвие, которое содержит форму:

<form action="{{ route('articles.destroy' . ['id' => $article->id]) }}" method="POST">
    {{ method_field('delete') }}
    {{ csrf_field() }}
    <div class="btn-group btn-group-xs">
       <a href="{{ route('$articles.edit' . ['id' => $article->id]) }}" class="btn btn-primary">Edit</a>
       <button type="submit" class="btn btn-danger">حدف</button>
    </div>
</form>

Но когда я подхожу к этому клинку, он говорит:

ErrorException Преобразование массива в строку (View: F: \ xampp \ htdocs \ mywebsite \ resources \ views \ website \ backend \ article \ index.blade.php)

И это относится к этой строке:

<form action="{{ route('articles.destroy' . ['id' => $article->id]) }}" method="POST">

Я не знаю, почему я получаю эту ошибку, поэтому, если вы знаете, почему я получаю эту ошибку, сообщите мне ...

Заранее спасибо.


person ruwroveajaic    schedule 09.11.2020    source источник
comment
Потому что вам нужно использовать ,, а не .   -  person u_mulder    schedule 09.11.2020
comment
На случай, если вы не смогли его найти: laravel. com / docs / 8.x / routing # generate-urls-to-named-routes   -  person brombeer    schedule 09.11.2020


Ответы (2)


У вас опечатка:

route('articles.destroy' . ['id' => $article->id])

. предназначен для конкатенации строк. Вы хотите ,, чтобы разделить аргументы:

route('articles.destroy', ['id' => $article->id])

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

route('articles.destroy', ['article' => $article->id])
//          admin/articles/{article}

Предполагается, что $article->id не возвращает null.

person lagbox    schedule 09.11.2020
comment
Спасибо за ответ, но теперь я получаю Missing required parameters for [Route: articles.destroy] [URI: admin/articles/{article}] - person ruwroveajaic; 09.11.2020
comment
Я только что обновил свой вопрос о своих маршрутах. Я не знаю, где включить ['article' => $article->id]. Не могли бы вы мне помочь ... - person ruwroveajaic; 09.11.2020
comment
это тот же массив, который вы уже передаете route в качестве второго аргумента, просто измените ключ с id на article, чтобы он соответствовал параметру маршрута, который вы пытаетесь заменить - person lagbox; 09.11.2020
comment
Ой, я понял, что вы имеете в виду, и заменил его, но ошибка все равно осталась. Я добавил свое обновление, пожалуйста, помогите мне с этим! - person ruwroveajaic; 09.11.2020
comment
вы должны внести те же изменения в ссылку редактирования, которую вы создаете ... это та же самая проблема - person lagbox; 09.11.2020

измените это:

<form action="{{ route('articles.destroy' . ['id' => $article->id]) }}" method="POST">

к этому:

<form action="{{ route('articles.destroy' , ['id' => $article->id]) }}" method="POST">
person milad hedayatpoor    schedule 09.11.2020
comment
Спасибо за ответ, но теперь я получаю Missing required parameters for [Route: articles.destroy] [URI: admin/articles/{article}] - person ruwroveajaic; 09.11.2020
comment
имя вашего параметра в web.php должно быть таким же, как в вашей форме, для обоих идентификаторов или обеих статей - person milad hedayatpoor; 09.11.2020