strpos(): Аргумент № 1 ($haystack) должен быть строкового типа, заданного массива
Я новичок в Laravel и прохожу бесплатный курс в Laracast. Это ссылка на мой курс (эпизод 11 на 2:49 сек) «https://laracasts.com/series/laravel-8-from-scratch/episodes/11». Краткое изложение моей проблемы: я пытаюсь сделать свой код более декларативным с тем, что я не хочу делать (более конкретным является имя класса: Post и метод: find() внутри этого класса). Вот мой код:
Путь 1: root / app / Model / Post.php. Этот файл объявляет класс Post.
<?php
namespace App\Models;
class Post
{
public static function find($slug)
{
//don't write any thing in this function,
//i expected an blank page (not an error page like my bug)
}
}
Путь 2: корень / маршруты / web.php. Прямой URL этого файла, когда пользователь нажимает
<?php
use Illuminate\Support\Facades\Route;
use App\Models\Post;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('posts');
});
Route::get('posts/{post}', function ($slug) {
//find post with slug and pass it intos posts view (through $post variable)
$post = Post::find($slug);
return view([
'post' => $post
]);
})
->where('post', '[A-z_-]+');
Путь 3: root / resources / views / post.blade.php. Этот файл возвращает страницу Html, это вид пользователя (что пользователь видит в браузере)
<body>
<article>
<?= $post ?>
</article>
</body>
</html>
Вот чего я ожидаю: Ожидайте результата.
Но это то, что я получил: strpos(): Аргумент № 1 ($haystack) должен иметь тип string, заданный массив
Ошибка говорит: strpos (): аргумент № 1 ($haystack) должен иметь тип string, заданный массив
Ожидайте вашей помощи. Большое спасибо ^_^
4 ответа
Та же проблема
strpos(): Argument #1 ($haystack) must be of type string, array given
но на \vendor\fruitcake\laravel-cors. Если у вас такое же состояние, возможно, вы можете проверить ссылку https://github.com/fruitcake/laravel-cors/issues/565.
Я также столкнулся с этой ошибкой, но теперь я решил ее ... Ошибка находится в файле routes / web.php, вы пишете код, подобный этому, введите описание изображения здесь
но вы должны написать такой код, введите здесь описание изображения
На самом деле вы используете View вместо get
В ответ в представлении метода должна быть строка, за которой могут следовать данные массива
Route::get('posts/{post}', function ($slug) {variable)
$post = Post::find($slug);
return view('post', [
'post' => $post
]);
})
->where('post', '[A-z_-]+');
Я уже исправил ;) Спасибо. Проблема была
php8.0-mbstring & php8.0-xml
просто установите их :)