Laravel 5在刀片视图中调用模型函数

Mar*_*Ene 23 blade laravel-5

我想从3个表构建一个刀片视图:

  • "inputs_details" - 字段:article_type(值:产品'p',服务's'),article_id,....
  • "产品" - 字段:id,name
  • "服务" - 字段:id,name

在此输入图像描述

但是,在浏览器中,我有错误:"未找到类'产品'".

是否有传递给视图此功能的解决方案(根据article_type和article_id查找产品或服务的名称)?

我也尝试使用连接查询,但我无法在单个连接查询中添加这么多条件..其中article_type为"p",然后与"products"表连接...或....其中article_type为" s",然后加入"服务"表.

sle*_*ess 58

与您的答案中的问题相关:

您有多种方法可以实现这一目标:

假设您有一个传递给视图的模型:

$model = Model::find(1);
View::make('view')->withModel($model);
Run Code Online (Sandbox Code Playgroud)

现在在您的模型中,您可以拥有一个功能:

public function someFunction() {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

在您的视图中,您可以直接调用该函数:

{{$model->someFunction()}}
Run Code Online (Sandbox Code Playgroud)

如果您想对模型(数据集)执行某些操作,这很好.

如果不是,您仍然可以在模型中创建静态函数:

public static function someStaticFunction($var1, $var2) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

然后:

{{App\Model::someStaticFunction($yourVar1,$yourVar2)}}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • 为什么要这么做?如上所述,您可以在模型中创建静态函数并在视图中调用它.你不必传递任何东西. (2认同)

Mar*_*Ene 11

我解决了这个问题.很简单.语法错误.

  • 应用程序\产品
  • 软件\服务

在此输入图像描述

但我也想知道如何传递带参数的函数来查看....


Hưn*_*ịnh 11

想在视图中使用模型:

{{ Product::find($id) }}
Run Code Online (Sandbox Code Playgroud)

您可以在视图中使用:

<?php
$tmp = \App\Product::find($id);
?>
{{ $tmp->name }}
Run Code Online (Sandbox Code Playgroud)

希望能帮到你


Mow*_*hon 6

在新版本的 Laravel 中,您可以使用“服务注入”。

https://laravel.com/docs/5.8/blade#service-injection

/resources/views/main.blade.php

@inject('project', 'App\Project')

<h1>{{ $project->get_title() }}</h1>
Run Code Online (Sandbox Code Playgroud)