当前位置: 首页 > 知识库问答 >
问题:

LaravelLivewire 2:我们是要制作一个新的类,还是像传统的控制器一样

桑宇
2023-03-14

所以,这是我的第一个LiveWire学习项目。

说到这里,我正在使用php artisan make:Livewire用户制作一个名为User的Livewire组件

这就是我得到的

第一个用户。php

<?php

namespace App\Http\Livewire;

use Livewire\Component;

class User extends Component
{
    public function render()
    {
        return view('livewire.user.index'); //i've updated this
    }
}

所以,我想在不同的页面创建一个用户。注:我已经在SPA中使用TurboLink,当我像传统的Laravel控制器一样创建时

Web.php

Route::get('/user', User::class)->name('user.index');
Route::get('/user/create',[User::class, 'create'])->name('user.create');

使用者php(livewire组件)

<?php

namespace App\Http\Livewire;

use Livewire\Component;

class User extends Component
{
    public function render()
    {
        return view('livewire.user.index');
    }

    // This is what i create
    public function create()
    {
        return view('livewire.user.create')
        ->extends('layouts.app')
        ->section('contents');
    }
}

它没有给我父模板(它不会运行到layouts.app和内容,它只是显示空白页),我试图扩展它与layouts.app和节

布局/应用程序。刀身php

    <div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }">
        @include('layouts.include._sidebar')
        <div class="flex flex-col flex-1 w-full">
            @include('layouts.include._navbar')
            <main class="h-full overflow-y-auto">
                <div class="container px-6 mx-auto grid">
                    {{-- {{ $slot }} --}}
                    @yield('contents')
                </div>
            </main>
        </div>
    </div>

我的问题:

我们可以像standart laravel控制器一样在用户组件中创建公共功能,还是必须创建一个名为UserCreate的新组件?谢谢


共有2个答案

欧桐
2023-03-14

你可以用不同的方法来处理这件事,这取决于你。一个可以有一个UserForm组件来处理创建/编辑表单,并在用户的创建组件调用中呈现UserForm组件来创建新表单。

public function create()
{
   return redirect()->route('user.create');
}

在网上。php

Route::get('/user/create', [UserForm::class])->name('user.create');
Route::get('/user/edit/{user?}', [UserForm::class])->name('user.edit');

和UserForm组件

public $email, $name;
public $user;

public $option = '';
public function mount($user = null)
{
  if(is_null($user)) {
    // some initialization
    $this->option = 'create';
  }
  else {
    $this->user = User::find($user);
    $this->option = 'edit';
  }  
}

public function render()
{
   return view('user-form');
}

public funcion store()
{
   if($this->option == 'create') {
       //create handler
   }
   else {
       //edit handler
   } 
}

取而代之的是使用重定向,您可以使用模态并在用户组件中的模态中呈现UserForm。正如我告诉你的,这可以通过不同的方式实现

华旭
2023-03-14

您可以使用livewire作为整个页面组件或加载在视图中的组件

您只能让Livewire生成“控制器”User。php或者您可以使用一个经典的Laravel控制器,从中返回刀片视图,并在刀片视图中使用

在您的情况下,我认为在render方法中必须返回livewire。用户并在刀片视图中按上述方式加载。

 类似资料:
  • 问题内容: 我不确定是否遇到“最佳实践”问题,试图以一种怪异而奇妙的方式解决该挑战,或者我是否还没有掌握AngularJS。 场景 :因此,我一直在尝试一种方法,使页面上多次输出“ originCity.cityName”,所有这些都引用同一工厂内的同一对象,希望将其设置为其他值(例如“测试字符串”),那么它将追溯替换我在页面周围拥有的所有内容。 在两个单独的控制器中,我对工厂进行了以下致电: 并

  • Kafka集群中的Kafka控制器负责管理分区领导者和复制。 如果一个Kafka集群中有100个经纪商,控制器是否只是一个Kafka经纪商?那么在100个经纪商中,控制器是领导者吗? 你怎么知道哪个经纪人是控制人? Kafka控制器的管理对Kafka系统管理至关重要吗?

  • 需要你的帮助!这可能是更多的设计角度,但我在我的应用程序中使用这个模式,所以想得到一个想法。 我的问题是直接或间接地从一个控制器访问另一个控制器。是否有任何优雅的设计方法来做到这一点,而不是在另一个控制器中保留一个控制器的引用。 提前致谢

  • 我有两个控制器和。我正在读一本书的内容。来自的txt文件,我希望将该文本放置在的文本区域中。代码在中运行并读取良好,但当打开中的窗口时,从中读取的内容。文本内容在文本区域中不可见。我的显示String mine包含内容,但它不显示在的文本区域中。请帮助任何人。非常感谢。 FXMLDocumentController代码 在中,有一个我删除了和,这样代码就可以工作了。

  • 我想检查一个数字是二进制还是十进制,但从1到n都不行。例如,从1到10我们有两个十进制数字,其中包含0,1。我如何更改它?

  • 假设您有一个类型的对象和一个适当对齐的内存缓冲区。如果使用从类型的对象复制到数组,这是复制构造还是复制分配? 如果一个类型是基本可复制的,但不是标准布局,可以想象这样的类: 编译器可以将Meow的和存储在的任何部分,甚至可以在中的随机偏移量处,只要它们正确对齐并且不重叠。如果编译器愿意,和的偏移量甚至可以随每个构造随机变化。(如果编译器愿意,可以在之后执行,因为标准只要求相同访问说明符的成员按顺序