我正在使用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:解析错误:语法错误,意外&#39;使用&#39; (T_USE) (查看:/opt/lampp/htdocs/buddyiq_dev/resources/views/Admin/reports/customerorders.blade.php)
我在下面的堆栈网址中引用了上面的代码。
How to call a controller function inside a view in laravel 5
请帮我解决此问题。
答案 0 :(得分:0)
您可以尝试使用ajax调用控制器中的函数,然后获取响应并将其推送到视图。
关于响应,请记住将return
放在函数中。
答案 1 :(得分:0)
如果调用控制器方法的动机只是为了输出字符串,则控制器可能不合适。控制器将模型和视图绑定在一起。
image source: Basic Laravel 5 MVC
视图实际上不应该知道控制器方法。您最好调查一下帮助方法。
您链接到的问题中也会回答
如果您有一个在多个地方使用的功能, 应该在助手文件中定义
答案 2 :(得分:-1)
所以我只是在我的一个Laravel设置上尝试过这个。我不确定这是否是最好的方法,但它有效。
将您的函数声明为
public static function my($args)
{
echo $args."I am called on view.";
}
你已经做过的。然后从视图中调用{{App\Http\Controllers\Admin\ReportController::my($args)}}
答案 3 :(得分:-2)
使用绝对路径代替相对路径,您可以使用如下所示,
\App\Http\Controllers\Admin\ReportController
但您已使用App\Http\Controllers\Admin\ReportController
,请在每个地方更改。