Проблемы с привязкой данных Livewire

Пытаюсь научиться использовать livewire. Итак, я начал с документации и скринкастов. Я создавал проект Laravel, используя Jetstream с каркасом Livewire. Проблема, похоже, в том, что контроллер не передает переменные в шаблон лезвия.

Ранее я делал тестовый проект, используя только Laravel 8, изменяя шаблон welcome.blade.php и требуя Livewire от композитора. И это сработало просто отлично.

Шаги по воспроизведению: создайте проект Jetstream на Laravel 8.x и используйте мой код

Вот мой код:

В папке: App \ Http \ Livewire \ AddPost.php:

<?php

namespace App\Http\Livewire;

use Livewire\Component;

class AddPost extends Component
{
    public $title = "Blank";
    public $content = "Such empty here";
    public function render()
    {
        return view('livewire.add-post');
    }
}

В: resources / views / add-post.blade.php

<html>
    <head>
        @livewireStyles
    </head>

    <body>
        @livewire('add-post')

        @livewireScripts
    </body>
</html>

В папке: resources \ views \ livewire \ add-post.blade.php

<div>
    Title: {{ $title }}
    <br>
    Content: {{ $content }}
</div>

репозиторий GitHub


person aleemont    schedule 17.09.2020    source источник
comment
Невозможно воспроизвести это с тем же кодом в тех же папках. Вы, должно быть, делаете что-то еще, чего не показываете здесь. Либо вы выбираете другой маршрут / представление, чем внешний, либо что-то еще - потому что сам код работает.   -  person Qirel    schedule 17.09.2020
comment
Что ты имеешь в виду? Я опубликую репозиторий git hub, чтобы вы могли все проверить, это нормально?   -  person aleemont    schedule 17.09.2020
comment
Ваш маршрут неправильный. Route::get('add-post', App\Http\Livewire\AddPost::class)->name('add-post');, чтобы визуализировать компонент Livewire напрямую, или вы должны вернуть внешний вид, Route::get('add-post/', function () { return view('add-post'); })->name('add-post');   -  person Qirel    schedule 17.09.2020
comment
Работал. Спасибо. Думаю, мне придется лучше изучить маршрутизацию   -  person aleemont    schedule 17.09.2020


Ответы (3)


Попробуй это

public function render()
{
    return view('livewire.add-post', [
        'title' => $this->title,
        'content' => $this->content
    });
}

OR

@livewire('add-post', ['title' => 'lorem ipsum', '' => 'content'])

ИЛИ используйте эту функцию, она похожа на конструктор ().

public function mount() {
    $this->title = 'lorem ipsum';
    $this->content = 'content';
}
person hbakouane    schedule 30.11.2020

Попробуйте это в app.blade.php: {{$ slot}}

 <html>
     <head>
         @livewireStyles
     </head>
 
     <body>
         {{ $slot }}                   <<<<<<<--------------
 
         @livewireScripts
     </body>
 </html>
person mahdi cmptr    schedule 12.01.2021

Вы можете использовать это

public $title;
public $content;

public function mount(){
$this->title= "Blank";
$this->content= "Such empty here";
}
person Monir Khan    schedule 27.03.2021