【问题标题】:How to call an external function inside a view in laravel 5.2如何在 laravel 5.2 的视图中调用外部函数
【发布时间】:2017-11-15 09:30:10
【问题描述】:

我想从我的刀片视图中调用一个外部函数。

这种方式我试过了,

{{ controllername::function name()}}

但我得到一个响应,例如找不到 Class 'controllername'。

我该如何解决这个问题?正在寻找解决方案。

【问题讨论】:

标签: laravel class laravel-5.2


【解决方案1】:

如果你有一个在多个地方使用的函数,你应该在 helpers 文件中定义它,为此在 app/Http/Helpers 文件夹中创建一个(可能是)并将其命名为 helpers.php,在通过以下方式自动运行您的 composer.json 块:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Http/Helpers/helpers.php"
    ]
},

运行composer dump-autoload,然后你可以从任何地方调用这个函数,让它成为控制器视图或模型。

或者如果您不需要放入助手。你可以简单地从它的控制器调用它。只需将其设为static function。创建。

public static function funtion_name($args) {}

打电话。

\App\Http\Controllers\ControllerName::function_name($args)

如果你不喜欢太长的代码,你可以直接写

ControllerName::function_name($args)

但不要忘记从视图页面顶部调用它。

use \App\Http\Controllers\ControllerName;

【讨论】:

    【解决方案2】:

    如果你使用的是 Laravel 5.5,有一种方法可以使用 Service Injection。从文档中逐字复制的示例:

    @inject('metrics', 'App\Services\MetricsService')
    
    <div>
        Monthly Revenue: {{ $metrics->monthlyRevenue() }}.
    </div>
    

    如果你没有使用L5.5,那么你可以/Use/The/Path/OfTheClass,这样上面的例子就变成了:

    <div>
        Monthly Revenue: {{ \App\Services\MetricsService::monthlyRevenue() }}.
    </div>
    

    请注意,在这种情况下,monthlyRevenue() 必须是一个静态函数,这是合理的。

    否则,最好确保返回视图的函数已经完成了theFunction() 中所需的工作,然后将其作为值直接传递给视图。

    也很难理解为什么首先需要在视图中使用控制器功能。也许你需要检查你是否做错了什么。

    【讨论】:

      【解决方案3】:

      除了上述回复。只是为了纠正你的方法。

      //include the controller class in to your blade file.
      <?php use App\Http\Controllers\MyController;?>
      
      //call the controller function in php way.
      <?php echo MyController::myFunction(); ?>
      
      // Or call the controller function in blade way.
      {{MyController::myFunction()}}
      

      我们首先将控制器映射到刀片文件中,然后从视图中调用控制器函数。我们只是在控制器类中创建一个静态函数并调用静态函数。

      【讨论】:

        猜你喜欢
        • 2018-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-03
        • 2016-06-21
        • 2023-03-03
        • 2014-11-20
        相关资源
        最近更新 更多