如何在laravel 5.2中的视图内调用外部函数

时间:2017-11-15 09:30:10

标签: laravel class laravel-5.2

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

我试过这种方式,

{{ controllername::function name()}}

但是我得到的回应就像Class' controllername'没找到。

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

3 个答案:

答案 0 :(得分:2)

如果你有一个在多个地方使用的函数,你应该在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;

答案 1 :(得分:2)

如果您使用的是Laravel 5.5,则可以使用Service Injection进行操作。来自doc:

的逐字复制示例
jQuery.sap.registerResourcePath("iotChart", "../../../../resources/sap/ui/iot/library")
jQuery.sap.require("iotChart")

//Still load host sapui5.hana.ondemand.com
var core=sap.ui.getCore();
core.loadLibrary("sap.ui.iot.controls");

如果您不使用L5.5,那么您可以@inject('metrics', 'App\Services\MetricsService') <div> Monthly Revenue: {{ $metrics->monthlyRevenue() }}. </div> ,以便上面的示例为:

/Use/The/Path/OfTheClass
  

请注意,在这种情况下,<div> Monthly Revenue: {{ \App\Services\MetricsService::monthlyRevenue() }}. </div> 必须是一个静态函数,这是明智的。

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

  

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

答案 2 :(得分:0)

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

//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()}}

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