簡體   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