繁体   English   中英

如何在 Laravel 5 中从视图中调用控制器

[英]How to call a controller from view in laravel 5

我正在使用 Laravel 5,其中我必须从视图刀片调用控制器。 但它显示我解析错误。 请找到我的代码。

控制器名称:ReportController(path=app/Http/Controllers/Admin/ReportController)

<?php

namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use DB;
//send email use helper
use App\Helpers\MyHelperFunction;

 public static function my($args){
        // do your stuff or return something.
        echo $args."I am called on view.";
    }
?>

查看:customerorders.blade.php

<?php 
use App\Http\Controllers\Admin\ReportController;
     echo ReportController::my('hello'); 
?>

我面临这个错误:

方法 Illuminate\\View\\View::__toString() 不能抛出异常,捕获 ErrorException: Parse error: syntax error, unexpected 'use' (T_USE) (View:/opt/lampp/htdocs/buddyiq_dev/resources/views/Admin /reports/customerorders.blade.php)

我从下面的堆栈 url 中引用上面的代码。

如何在 Laravel 5 的视图中调用控制器函数

请帮我解决这个问题。

您可以尝试使用 ajax 调用控制器中的函数,然后获取响应并将其推送到查看。 关于响应,记得把return放在你的函数中。

如果您调用控制器方法的动机只是输出字符串,则控制器可能不合适。 控制器将模型和视图绑定在一起。

在此处输入图片说明

图片来源:基本 Laravel 5 MVC

视图真的不应该知道控制器方法。 您最好研究一下视图助手方法

这也在您链接到的问题中得到了回答

如果你有一个在多个地方使用的函数,你应该在 helpers 文件中定义它

这个 Q/A 很有帮助Laravel 5 上自定义助手的最佳实践

所以我只是在我的 Laravel 设置之一上尝试了这个。 我不确定这是否是最好的方法,但它有效。

将您的函数声明为

public static function my($args)
{
       echo $args."I am called on view.";
}

你已经这样做了。 然后从视图中调用它作为{{App\\Http\\Controllers\\Admin\\ReportController::my($args)}}

使用绝对路径而不是相对路径,您可以像下面这样使用它,

 \App\Http\Controllers\Admin\ReportController

但是你已经使用了App\\Http\\Controllers\\Admin\\ReportController ,请在每个地方更改它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM