从 Laravel 中的控制器返回刀片组件

Posted

技术标签:

【中文标题】从 Laravel 中的控制器返回刀片组件【英文标题】:Returning a blade component from a controller in Laravel 【发布时间】:2021-04-17 19:41:12 【问题描述】:

我正在运行 Laravel 7,我想知道是否可以从控制器返回渲染的 Blade 组件,就像使用视图一样。我可以像下面这样返回组件的视图。

return View::make('components.some-view');

但是,我无权访问 SomeView 组件类中的任何数据或方法。如果我尝试使用组件中定义的变量,则会收到未定义变量错误。

【问题讨论】:

【参考方案1】:

您可以使用view 函数从控制器渲染刀片组件:

//first parameter = Path of your component
//second argument = All your variables that your component receive 

$html = view('components.yourComponentName', ['x-variable' => $value]);
return $html; 

【讨论】:

【参考方案2】:

在控制器中创建组件对象

$com = new SomeComponent($variable1, $variable2);

//call the render function
$comHtml = $com->render();

希望这会有所帮助。

【讨论】:

【参考方案3】:

试试这个,它在 Laravel 8 中对我有用

例如我有 App\View\Components\Form\Button 组件

<?php 
   class Button extends Component
       public $variable1;
       public $variable2;

       public function __construct($variable1, $variable2)
            $this->variable1 = $variable1;
            $this->variable2 = $variable2;
       

       public function render()
             // return view('view_component_name'); 
       
   
?>

& 我想在没有视图布局的控制器中渲染该组件 那么我可以这样做

<?php
  use App\View\Components\Form\Button;

  class TestController extends Controller

     public function index(Request $request)

        $obj = new Button($variable1, $variable2);
        $obj->render()->with($obj->data());
     
  
?>

**数据函数包括组件的方法、属性和属性。

希望这篇文章对你有帮助

【讨论】:

为什么我的回答得到了反对票?我的答案是工作示例。我在我的项目中使用这种方式通过调用主视图或任何扩展视图来渲染特定的组件视图,那么它非常有用。【参考方案4】:

使用 YourDirectory\some-view;

$controllerObject = new some-view;

$controllerObject -> 变量;

【讨论】:

以上是关于从 Laravel 中的控制器返回刀片组件的主要内容,如果未能解决你的问题,请参考以下文章

从 laravel 刀片调用 vue 方法

laravel 将数据从刀片文件传递到控制器

在 vue 模板中使用从 laravel 控制器返回的对象

在 Laravel 的所有页面中包含一个带控制器的刀片

如何正确地将数据从 vue 组件发布到 laravel 控制器

在 laravel 中使用 ajax 从控制器刀片文件中传递搜索数据时遇到问题