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

#php #arrays #laravel #laravel-8

#php #массивы #laravel #laravel-8

Вопрос:

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

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

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

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

Исключение IlluminateRoutingExceptionsUrlGenerationException Отсутствуют обязательные параметры для [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 Преобразование массива в строку (просмотр: F:xampphtdocsmywebsiteresourcesviewswebsitebackendarticlesindex.blade.php )

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

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

Я не знаю, почему я получаю эту ошибку, поэтому, если вы знаете, почему я получаю эту ошибку, пожалуйста, дайте мне знать…

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

Комментарии:

1. Потому что вам нужно использовать , , а не .

2. На всякий случай, если вы не смогли его найти: laravel.com/docs/8.x/routing#generating-urls-to-named-routes

Ответ №1:

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

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

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

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

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

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

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

Комментарии:

1. Спасибо за ответ, но теперь я получаю Missing required parameters for [Route: articles.destroy] [URI: admin/articles/{article}]

2. Я только что обновил свой вопрос о моих маршрутах. Я не знаю, куда включить ['article' => $article->id] . Не могли бы вы мне помочь…

3. это тот же массив, который вы уже передаете в route качестве второго аргумента, просто измените ключ с id на article , чтобы он соответствовал параметру маршрута, который вы пытаетесь заменить

4. Упс, я понял, что вы имеете в виду, и заменил его, но ошибка все еще остается. Я добавил свое обновление, пожалуйста, помогите мне с этим!

5. вы должны внести те же изменения в создаваемую вами ссылку редактирования … это та же самая проблема

Ответ №2:

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

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

к этому:

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

Комментарии:

1. Спасибо за ответ, но теперь я получаю Missing required parameters for [Route: articles.destroy] [URI: admin/articles/{article}]

2. имя вашего параметра в web.php должно быть таким же, как в вашей форме, независимо от того, оба идентификатора или обе статьи