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 

просто установите их :)

Другие вопросы по тегам